Prérequis :
- JDK 17+ (télécharger)
- Maven 3.6+ ou Gradle 7+ (Maven | Gradle)
- Un IDE (IntelliJ IDEA, Eclipse ou VS Code recommandés)
Pour commencer
1
Créer un nouveau projet
Créez un projet Spring Boot avec les dépendances requises.
- Avec Spring Initializr
- Ou créez-le manuellement avec Maven
2
Ajouter le module Okta Spring Boot Starter
Ajoutez la dépendance Okta Spring Boot Starter à votre projet. Cette dépendance ajoute la prise en charge de l’authentification OAuth2 de Spring Security avec l’autoconfiguration propre à Auth0/Okta.
- Maven (pom.xml)
- Gradle (build.gradle)
3
Configurer Auth0
Créez une Regular Web Application dans votre tenant Auth0 et ajoutez la configuration à votre projet.Vous pouvez choisir de configurer automatiquement votre application Auth0 en exécutant une commande CLI, ou de le faire manuellement par le biais du Dashboard :
- CLI
- Dashboard
Exécutez la commande shell suivante à la racine de votre projet pour créer une application Auth0 et mettre à jour votre fichier
src/main/resources/application.yml :Cette commande :
- Vérifie si vous êtes authentifié (et vous invite à vous connecter au besoin)
- Crée une Regular Web Application Auth0 configurée pour
http://localhost:3000 - Génère
src/main/resources/application.ymlavecokta.oauth2.issuer,okta.oauth2.client-idetokta.oauth2.client-secret
--build-tool maven par --build-tool gradle.4
Configurer l’authentification
Créez une configuration de sécurité qui active la connexion OAuth2 et gère la déconnexion d’Auth0. Les utilisateurs non authentifiés sont automatiquement redirigés vers la page de connexion Auth0.
5
Créer des contrôleurs et des vues
Créez les contrôleurs et les modèles Thymeleaf pour les pages d’accueil et de profil.
6
Exécutez votre application
Lancez l’application à l’aide du wrapper Maven ou Gradle.Votre application est maintenant accessible à l’adresse
- Maven
- Gradle
http://localhost:3000. Accédez à http://localhost:3000/profile pour lancer le flux de connexion Auth0.Vous devriez maintenant avoir une application Web Spring Boot entièrement fonctionnelle avec la connexion Auth0 sur votre localhost. La page d’accueil est publique, et si vous accédez à
/profile, les utilisateurs non authentifiés sont redirigés vers la page de connexion Auth0.Utilisation avancée
Accéder aux claims du profil utilisateur
Accéder aux claims du profil utilisateur
Le paramètre
@AuthenticationPrincipal OidcUser vous donne accès à tous les claims de l’ID token. Utilisez getClaims() pour récupérer l’ensemble complet des claims, ou des méthodes getter individuelles pour des claims précis.Contrôle d’accès basé sur les rôles
Contrôle d’accès basé sur les rôles
Vous pouvez restreindre l’accès aux pages en fonction des rôles Auth0. Commencez par ajouter les rôles à l’ID token à l’aide d’une Action Auth0, puis utilisez
hasAuthority() dans votre configuration de sécurité.Ajouter des rôles aux jetons
- Accédez à Auth0 Dashboard → Actions → Flows → Login.
- Créez une Action personnalisée qui ajoute les rôles sous forme de custom claim à l’ID token :
Configurer l’autorisation
Mettez à jour votreSecurityConfig pour exiger des rôles précis sur les endpoints :Mappage personnalisé des autorités
Mappage personnalisé des autorités
Le starter Okta prend en charge le mappage personnalisé des autorités au moyen de l’interface
AuthoritiesProvider. Enregistrez un bean pour ajouter des objets GrantedAuthority personnalisés en fonction des attributs de l’utilisateur ou de sources de données externes.Problèmes courants
Échec de la redirection vers la page de connexion - URL de rappel invalide
Échec de la redirection vers la page de connexion - URL de rappel invalide
Après avoir sélectionné login, Auth0 affiche une erreur indiquant que l’URL de rappel ne correspond pas.Les Allowed Callback URLs de votre application Auth0 doivent correspondre exactement à l’URL de rappel utilisée par Spring Security. La valeur par défaut est
http://localhost:3000/login/oauth2/code/okta.- Accédez à Auth0 Dashboard → Applications → Votre application → Settings.
- Sous Allowed Callback URLs, ajoutez :
http://localhost:3000/login/oauth2/code/okta. - Sélectionnez Save Changes.
Issuer invalide au démarrage
Issuer invalide au démarrage
L’application ne démarre pas, ou login échoue en raison d’une incompatibilité de l’issuer.Le
okta.oauth2.issuer doit être l’URL complète du tenant Auth0, y compris https:// et un / à la fin.Échec de la découverte OIDC au démarrage
Échec de la découverte OIDC au démarrage
L’application ne démarre pas en raison d’une erreur de connexion lors de la récupération de
/.well-known/openid-configuration.Le Okta Spring Boot Starter récupère le document de découverte OpenID Connect à partir de votre issuer URL au démarrage. Vérifiez que l’issuer URL est correcte et accessible depuis votre réseau. Si vous êtes derrière un firewall d’entreprise, configurez le proxy :Valeurs de configuration introuvables
Valeurs de configuration introuvables
L’application démarre, mais login échoue parce que les propriétés de configuration ne sont pas lues.Assurez-vous que votre
application.yml utilise la bonne indentation YAML sous l’espace de noms okta.oauth2 :Logout n’efface pas la session Auth0
Logout n’efface pas la session Auth0
Après avoir sélectionné logout, l’utilisateur est immédiatement reconnecté sans voir la page de connexion Auth0.Assurez-vous que votre
SecurityConfig inclut le LogoutHandler personnalisé qui redirige vers le endpoint Auth0 /v2/logout. Vérifiez aussi que les Allowed Logout URLs dans les paramètres de votre application Auth0 incluent http://localhost:3000/.Ressources supplémentaires
Documentation du SDK
Documentation complète du SDK, code source et notes de version
Documentation Auth0
Documentation officielle d’Auth0 pour les applications Spring Boot
Référence de Spring Security
Documentation sur OAuth2 login de Spring Security
Référence de configuration
Toutes les propriétés de configuration okta.oauth2.* offertes
Auth0 Dashboard
Gérez vos API et vos applications Auth0
Forum de la communauté
Obtenez de l’aide auprès de la communauté Auth0
Application d’exemple
Exemple MVC de login
Comprend le login, le logout et une page de profil avec l’intégration OAuth2 d’Auth0
http://localhost:3000 dans votre navigateur et sélectionnez le lien Login pour tester le processus de connexion avec Auth0.