Utilisez l’IA pour intégrer Auth0
Utilisez l’IA pour intégrer Auth0
- Java Development Kit (JDK) 11 ou une version ultérieure
- Apache Maven 3.x
- Un serveur d’applications compatible avec Java EE 8 (p. ex., WildFly 14+, Payara 5+ ou GlassFish 5+)
- Un compte Auth0 — inscrivez-vous gratuitement
Commencer
auth0-java-mvc-common et de l’API de sécurité Java EE 8.
Créer un nouveau projet
Installer le SDK Auth0
pom.xml par le suivant :javaee-api et javax.security.enterprise-api sont provided, car le serveur d’applications Java EE 8 fournit leurs implémentations à l’exécution.Configurez votre application Auth0
- Auth0 Dashboard
- Accédez au Auth0 Dashboard et allez à Applications > Applications > Create Application.
- Entrez un nom pour votre application (p. ex., “Mon application Java EE”).
- Sélectionnez Regular Web Applications comme type d’application.
- Choisissez Create.
- Ouvrez l’onglet Settings.
- Prenez en note les valeurs Domain, Client ID et Client Secret.
- Faites défiler la page jusqu’à Application URIs et définissez :
- Allowed Callback URLs:
http://localhost:8080/callback - Allowed Logout URLs:
http://localhost:8080/
- Allowed Callback URLs:
- Choisissez Save Changes.
Configurer l’authentification
web.xml pour stocker la configuration Auth0 sous forme d’entrées d’environnement JNDI. Remplacez les valeurs fictives par le Domaine, l’ID client et le Secret client figurant dans les paramètres de l’application Auth0. Créez un fichier jboss-web.xml pour configurer le domaine de sécurité JASPIC requis par l’API de sécurité Java EE 8, un bean CDI Auth0AuthenticationConfig.java pour lire la configuration depuis JNDI, et un producteur CDI Auth0AuthenticationProvider.java pour construire l’AuthenticationController.https:// dans la valeur auth0.domain. Utilisez uniquement le domaine et la région. Par exemple : dev-abc123.us.auth0.com.Implémenter la sécurité Java EE
HttpAuthenticationMechanism pour gérer l’authentification. Vous devez fournir des implémentations personnalisées de plusieurs interfaces de sécurité. L’annotation @AutoApplySession permet au conteneur de créer une session pour l’utilisateur authentifié afin que celui-ci reste connecté d’une requête à l’autre.Ajouter les fonctionnalités de connexion et de déconnexion
LoginServlet génère l’URL d’autorisation d’Auth0 et redirige l’utilisateur. Le CallbackServlet traite la redirection après l’authentification — Auth0AuthenticationMechanism intercepte d’abord cette requête pour échanger le code d’autorisation contre des jetons; le servlet n’a donc qu’à effectuer la redirection. Le LogoutServlet invalide la session et redirige vers le point de terminaison de déconnexion d’Auth0.Créer l’interface utilisateur
HomeServlet vérifie la présence d’un principal authentifié et définit les revendications de profil sur la requête. Le ProfileServlet affiche le profil et les revendications JWT de l’utilisateur, ou redirige vers la page de connexion si l’utilisateur n’est pas authentifié.Lancez votre application
Utilisation avancée
Accéder aux informations du profil utilisateur
Accéder aux informations du profil utilisateur
Auth0JwtPrincipal est accessible via request.getUserPrincipal() dans n’importe quel servlet. ProfileServlet montre comment accéder aux claims décodées de l’ID Token :name— nom complet affiché de l’utilisateuremail— adresse courriel de l’utilisateurpicture— URL de la photo de profil de l’utilisateursub— identifiant unique de l’utilisateur (id utilisateur Auth0)
Personnaliser les paramètres de connexion
Personnaliser les paramètres de connexion
LoginServlet :.withAudience() pour demander un jeton d’accès pour une API précise. Utilisez .withParameter() pour ajouter tout paramètre d’autorisation supplémentaire pris en charge par Auth0.Stocker les jetons pour les appels d’API
Stocker les jetons pour les appels d’API
Auth0AuthenticationMechanism afin de stocker les jetons dans la session :Se connecter à une organisation
Se connecter à une organisation
AuthenticationController avec un ID ou un nom d’organisation afin de restreindre la connexion à une Organisation Auth0 précise :org_id ou org_name dans l’ID Token pour s’assurer qu’elle correspond à l’organisation configurée.Ressources supplémentaires
SDK Java MVC d'Auth0
Référence de l’API (JavaDoc)
Forum communautaire
Exemple d’application Java EE
Problèmes courants
Erreur de non-correspondance du state au callback
Erreur de non-correspondance du state au callback
a0.invalid_state après la connexion, le cookie de state est introuvable ou ne correspond pas au state renvoyé par Auth0.Vérifiez que :- L’URL de callback configurée dans l’Auth0 Dashboard correspond exactement à l’URL générée par votre application, y compris le numéro de port et le protocole.
- Votre navigateur ne bloque pas les cookies tiers.
- Aucun proxy inverse ni middleware ne supprime les en-têtes
Set-Cookiedes réponses.
buildAuthorizeUrl et de handle, qui utilise le stockage du state dans des cookies :Beans CDI non détectés
Beans CDI non détectés
- Votre serveur d’applications prend en charge CDI 2.0 (qui fait partie de Java EE 8)
- Toutes les classes de sécurité (
Auth0AuthenticationConfig,Auth0AuthenticationProvider,Auth0JwtIdentityStore,Auth0AuthenticationMechanism) sont annotées avec@ApplicationScoped src/main/webapp/WEB-INF/jboss-web.xmlexiste et que le domaine de sécuritéjaspitesty est configuré
jaspitest est requis pour que WildFly active l’intégration JASPIC (Java Authentication SPI for Containers) dont dépend l’API de sécurité Java EE 8.Compatibilité du serveur d’applications
Compatibilité du serveur d’applications
javax (Java EE 8). Si vous utilisez un serveur qui a migré vers l’espace de noms jakarta (Jakarta EE 9+), comme WildFly 27+ ou Payara 6+, le code ne pourra ni se compiler ni s’exécuter.Utilisez un serveur compatible Java EE 8 :- WildFly 14 à 26
- Payara 5
- GlassFish 5
- Open Liberty avec les fonctionnalités Java EE 8
Application exemple
Application Java EE exemple
src/main/webapp/WEB-INF/web.xml, puis exécutez :