Utiliser l’IA pour intégrer Auth0
Utiliser l’IA pour intégrer Auth0
- Java Development Kit (JDK) 11 ou plus récent
- 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
Pour 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, parce que le serveur d’applications Java EE 8 fournit leurs implémentations à l’exécution.Configurez votre application Auth0
- Dashboard
- Accédez au Auth0 Dashboard et allez à Applications > Applications > Create Application.
- Entrez un nom pour votre application (p. ex., “My Java EE App”).
- 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 en tant qu’entrées d’environnement JNDI. Remplacez les valeurs de l’espace réservé par le Domain, le Client ID et le Client Secret provenant des Application Settings de votre Auth0 Application. Créez un fichier jboss-web.xml pour configurer le domaine de sécurité JASPIC requis par la Java EE 8 Security API, 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.Implement la sécurité Java EE
HttpAuthenticationMechanism pour gérer l’authentification. Vous devez fournir des mises en œuvre personnalisées de plusieurs interfaces de sécurité. L’annotation @AutoApplySession permet au conteneur de créer une session pour l’utilisateur authentifié afin qu’il reste connecté d’une requête à l’autre.Ajouter des fonctionnalités de connexion et de déconnexion
LoginServlet génère l’URL d’autorisation d’Auth0 et redirige l’utilisateur. Le CallbackServlet gère la redirection après l’authentification — Auth0AuthenticationMechanism intercepte d’abord cette requête pour échanger le code d’autorisation contre des jetons, donc le servlet n’a ensuite qu’à rediriger. 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 claims du profil dans la requête. Le ProfileServlet affiche le profil de l’utilisateur et les claims JWT, ou redirige vers la connexion si l’utilisateur n’est pas authentifié.Lancez votre application
Utilisation avancée
Accéder aux renseignements du profil utilisateur
Accéder aux renseignements du profil utilisateur
Auth0JwtPrincipal est accessible par request.getUserPrincipal() dans n’importe quel servlet. Le ProfileServlet montre comment accéder aux claims décodés du ID token :name— nom d’affichage complet de l’utilisateuremail— adresse courriel de l’utilisateurpicture— URL de la photo de profil de l’utilisateursub— identificateur 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 limiter la connexion à une Auth0 Organization précise :org_id ou org_name dans le ID token pour s’assurer qu’il correspond à l’organisation configurée.Ressources supplémentaires
SDK Java MVC Auth0
Référence de l’API (JavaDoc)
Forum de la communauté
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 :- Votre URL de callback dans le 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 reverse proxy ni middleware ne supprime les en-têtes
Set-Cookiedes réponses.
buildAuthorizeUrl et de handle, qui utilise un stockage du state basé sur les 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 ayant migré vers l’espace de noms jakarta (Jakarta EE 9+), comme WildFly 27+ ou Payara 6+, le code ne pourra ni être compilé ni s’exécuter.Utilisez un serveur compatible avec Java EE 8 :- WildFly 14 à 26
- Payara 5
- GlassFish 5
- Open Liberty avec les fonctionnalités Java EE 8
Exemple d’application
Exemple d’application Java EE
src/main/webapp/WEB-INF/web.xml, puis exécutez :