Ajoutez l’authentification JWT d’Auth0 à une API Spring Boot avec des points de terminaison protégés
Ce Quickstart est actuellement en bêta. Nous aimerions beaucoup avoir vos commentaires !
Utiliser l’IA pour intégrer Auth0
Si vous utilisez un assistant de codage IA comme Claude Code, Cursor ou GitHub Copilot, vous pouvez ajouter l’authentification Auth0 automatiquement en quelques minutes grâce à Agent Skills.Installer :
npx skills add auth0/agent-skills --skill auth0
Demandez ensuite à votre assistant IA :
Add Auth0 JWT authentication to my Spring Boot API
Votre assistant IA créera automatiquement votre API Auth0, récupérera les identifiants, ajoutera la dépendance SDK Auth0 Spring Boot API, configurera application.yml et mettra en place un SecurityFilterChain avec validation des JWT et points de terminaison protégés. Documentation complète sur Agent Skills →
Prérequis : Avant de commencer, assurez-vous d’avoir installé ce qui suit :
JDK 17+ pour la compatibilité avec Spring Boot 3.2+
Ce Quickstart montre comment ajouter l’authentification JWT d’Auth0 à une API Spring Boot. Vous créerez une API sécurisée avec des points de terminaison protégés à l’aide du SDK Auth0 Spring Boot API.
1
Créer un nouveau projet
Créez un nouveau projet d’API Spring Boot pour ce Quickstart :Avec Spring Initializr :
Ensuite, vous devez créer une nouvelle API sur votre tenant Auth0 et ajouter la configuration à votre projet.Vous pouvez effectuer cette opération automatiquement en exécutant une commande CLI ou manuellement via le Dashboard :
CLI
Dashboard
Exécutez la commande shell suivante à la racine de votre projet pour créer une API Auth0 et mettre à jour votre fichier application.yml :
Identifier : https://my-springboot-api (cela devient votre Audience)
Signing Algorithm : RS256
Sélectionnez Create
Remplacez YOUR_AUTH0_DOMAIN dans application.yml par votre Domain indiqué dans l’onglet Test (par exemple, your-tenant.auth0.com)
Remplacez YOUR_AUTH0_API_IDENTIFIER dans application.yml par votre Identifier. Par exemple : https://my-springboot-api.
Votre Domain ne doit pas inclure https://. Utilisez uniquement le domaine et la région. Par exemple : your-tenant.auth0.com.L’Audience (identifiant de l’API) est un identifiant unique pour votre API et peut être n’importe quel URI valide. Il n’a pas besoin d’être une URL accessible publiquement.
4
Configurer l’authentification
Créez une classe de configuration de sécurité pour activer l’authentification JWT d’Auth0. Créez src/main/java/com/example/auth0api/SecurityConfig.java :
Mettez en œuvre un contrôle d’accès précis à l’aide des scopes JWT pour une sécurité renforcée.1. Définissez des scopes dans votre API Auth0 :Dans le Auth0 Dashboard → APIs → Your API → Permissions, ajoutez des scopes :
Activez DPoP (Demonstration of Proof-of-Possession) pour renforcer la sécurité des jetons en liant les jetons d’accès à des clés cryptographiques.Configurez la prise en charge de DPoP dans application.yml :
Problème : L’API renvoie un 401 même avec des jetons valides.Solution : Assurez-vous que auth0.audience correspond exactement à votre identifiant d’API Auth0. Le claim audience dans le jeton doit correspondre à cette valeur.
Problème : La validation de l’issuer du jeton échoue.Solution : Vérifiez que votre domaine est correct et qu’il n’inclut pas https://. Utilisez le domaine sans le préfixe https://.
Problème : L’application ne démarre pas en raison d’erreurs de configuration.Solution : Vérifiez la structure de application.yml et les noms des propriétés. Assurez-vous que la section auth0 contient les valeurs Domain et Audience.
Problème : L’authentification ne fonctionne pas malgré une configuration correcte.Solution : Assurez-vous que Auth0AuthenticationFilter est correctement intégré à la chaîne Spring Security. Le filtre doit être ajouté avant UsernamePasswordAuthenticationFilter.
// ✅ ordre des filtres CORRECT.addFilterBefore(authFilter, UsernamePasswordAuthenticationFilter.class)
Problèmes de connectivité réseau
Problème : Échec de récupération de JWKS ou délais d’attente de connexion.Solution : Il se peut que le pare-feu de l’entreprise bloque les endpoints Auth0. Autorisez les domaines Auth0 pour l’accès HTTPS :
# Règles de pare-feu requises (HTTPS/443 sortant)*.auth0.com*.us.auth0.com # Pour les tenants de la région US*.eu.auth0.com # Pour les tenants de la région UE*.au.auth0.com # Pour les tenants de la région AU
Les scopes ne fonctionnent pas dans les politiques d’autorisation
Problème : Les politiques d’autorisation basées sur les scopes échouent systématiquement.Solution : Assurez-vous que votre jeton d’accès inclut les scopes requis. Lors de la demande d’un jeton, précisez les scopes :
Une application d’exemple complète présentant toutes les fonctionnalités se trouve dans le dépôt du SDK.
Application de test
Comprend des points de terminaison publics et protégés, la prise en charge
de DPoP et des exemples détaillés
Clonez et exécutez :
git clone https://github.com/auth0/auth0-auth-java.gitcd auth0-auth-java/auth0-springboot-api-playground# Mettez à jour src/main/resources/application.yml avec votre configuration Auth0# Ensuite, exécutez :./mvnw spring-boot:run
Tester avec curl :
# Tester le point de terminaison publiccurl http://localhost:8080/api/public# Obtenir le jeton d'accès (remplacer par vos identifiants Auth0)curl -X POST https://YOUR_DOMAIN/oauth/token \ -H "Content-Type: application/json" \ -d '{ "client_id": "YOUR_CLIENT_ID", "client_secret": "YOUR_CLIENT_SECRET", "audience": "https://my-springboot-api", "grant_type": "client_credentials" }'# Tester le point de terminaison protégé avec le jeton Bearercurl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ http://localhost:8080/api/private