Une nouvelle version Beta de ce Quickstart est maintenant offerte avec le SDK
@auth0/auth0-express-api, qui remplacera bientôt ce guide. Essayer le Quickstart Beta →Utiliser l’IA pour intégrer Auth0
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 automatiquement l’authentification de l’API Auth0 en quelques minutes à l’aide d’Agent Skills.Installer :Ensuite, demandez à votre assistant IA :Votre assistant IA créera automatiquement votre API Auth0, récupérera les identifiants, installera
express-oauth2-jwt-bearer, configurera le middleware JWT et protégera vos points de terminaison d’API grâce à la validation des tokens. Documentation complète sur Agent Skills →Prérequis : Avant de commencer, assurez-vous d’avoir installé ce qui suit :
- Node.js 18 LTS ou une version ultérieure (prend en charge
^18.12.0 || ^20.2.0 || ^22.1.0 || ^24.0.0) - npm 8+ ou yarn 1.22+ ou pnpm 8+
node --version && npm --versionCompatibilité des versions d’Express : Ce Quickstart fonctionne avec Express 4.x et Express 5.x.Pour commencer
1
Créer un nouveau projet
Créez un nouveau répertoire pour votre API Express, puis initialisez un projet Node.js.Initialiser le projetCréer la structure du projet
2
Installer le SDK express-oauth2-jwt-bearer
Installez les dépendances nécessairesAjoutez des scripts
start à votre package.json :package.json
3
Configurez votre API Auth0
Ensuite, vous devez créer une nouvelle API dans votre tenant Auth0 et ajouter les variables d’environnement à votre projet.Vous avez deux options pour configurer votre API Auth0 : utiliser une commande CLI ou passer par le Dashboard manuellement :
- CLI
- Dashboard
Exécutez la commande suivante à la racine de votre projet pour créer une API Auth0 :Une fois l’API créée, copiez les valeurs Identifier et Domain, puis créez votre fichier
Cette commande va :
- Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
- Créer une API Auth0 avec l’identifiant indiqué
- Afficher les détails de l’API, y compris le domaine et l’identifiant
.env :.env
Remplacez
YOUR_AUTH0_DOMAIN par le domaine de votre tenant Auth0 (par exemple, dev-abc123.us.auth0.com) et YOUR_API_IDENTIFIER par l’identifiant de votre API (par exemple, https://my-express-api.example.com).4
Configurer le middleware JWT
Créez votre serveur Express et configurez la validation JWT :Ce que cela fait :
server.js
- Crée un middleware de validation JWT à l’aide de votre domaine Auth0 et de l’audience de l’API
- Valide les claims
issetauddes jetons d’accès reçus - Met
checkJwtà disposition pour protéger des routes précises
5
Créer des routes d’API
Ajoutez des routes publiques et protégées à votre Points clés :
server.js :server.js
- Les routes publiques ne nécessitent pas d’authentification
- Les routes protégées utilisent le middleware
checkJwtpour exiger un JWT valide - Les routes avec scopes utilisent
requiredScopes()pour exiger des permissions précises dans le token req.auth.payloadcontient les claims JWT décodés pour les requêtes authentifiées- Le claim
subcontient l’identifiant unique de l’utilisateur
6
Lancez votre API
Démarrez le serveur de développement :Votre API est maintenant accessible à l’adresse http://localhost:3001.
L’option
--watch de Node.js 18+ redémarre automatiquement le serveur lorsque des fichiers sont modifiés.7
Testez votre API
Testez le point de terminaison public (aucune authentification requise) :Vous devriez voir :Testez l’endpoint protégé sans token (cela devrait échouer) :Vous devriez voir une erreur 401 Unauthorized :Pour tester avec un jeton valide :Vous devriez voir :
- Accédez à Auth0 Dashboard → Applications → APIs
- Sélectionnez votre API → onglet Test
- Copiez le jeton d’accès généré
VérificationVous devriez maintenant avoir une API protégée. Votre API :
- Accepte les requêtes vers des points de terminaison publics sans authentification
- Rejette les requêtes vers des points de terminaison protégés sans jeton valide
- Valide les jetons JWT à l’aide de votre domaine Auth0 et de l’audience
- Fournit des renseignements sur l’utilisateur à partir des claims du jeton au moyen de
req.auth.payload
Utilisation avancée
Autorisation basée sur les scopes
Autorisation basée sur les scopes
Les scopes permettent un contrôle d’accès granulaire. Vous pouvez exiger des scopes précis pour différents points de terminaison.Configurer les scopes dans Auth0 :
- Dans le Auth0 Dashboard, accédez à Applications → APIs → votre API
- Accédez à l’onglet Permissions
- Ajoutez des permissions comme
read:messages,write:messages,admin:access
server.js
Si une requête ne contient pas le scope requis, l’API renvoie
403 Forbidden avec une erreur insufficient_scope. Assurez-vous que l’application cliente demande les bons scopes lors de l’obtention d’un jeton d’accès.Validation de claims personnalisées
Validation de claims personnalisées
En plus des scopes, vous pouvez valider des claims personnalisées dans le payload JWT :
server.js
Les claims personnalisées doivent utiliser des URL avec espace de noms (p. ex.,
https://myapp.com/roles), à moins qu’il ne s’agisse de claims OIDC standard. En savoir plus sur les claims personnalisées.Authentification facultative (routes publiques/privées mixtes)
Authentification facultative (routes publiques/privées mixtes)
Permettez l’accès authentifié et anonyme à une même route :
server.js
Configuration CORS
Configuration CORS
Activez CORS pour autoriser les requêtes provenant d’applications Web :En Production, précisez les origines exactes :
server.js
server.js
Gestion personnalisée des erreurs
Gestion personnalisée des erreurs
Ajoutez une gestion complète des erreurs d’authentification :
server.js
Prise en charge de TypeScript
Prise en charge de TypeScript
Pour les projets TypeScript, installez les définitions de types et configurez votre projet :Créez Ajoutez un Exécutez avec :
server.ts :server.ts
tsconfig.json :tsconfig.json
npx ts-node server.tsDépannage
Problèmes courants et solutions
Problèmes courants et solutions
”Aucun jeton d’autorisation n’a été trouvé”
Problème : L’API ne trouve pas le jeton d’accès dans la requête.Solutions :- Assurez-vous que l’en-tête
Authorizationest présent :Authorization: Bearer YOUR_TOKEN - Vérifiez que “Bearer” est bien indiqué avant le jeton
- Vérifiez que le jeton n’est pas expiré
”Jeton invalide” ou “jwt malformed”
Problème : Le format du jeton n’est pas valide.Solutions :- Assurez-vous d’utiliser un jeton d’accès, et non un ID token
- Le jeton doit être obtenu avec le paramètre
audiencede votre API - Vérifiez que le jeton est un JWT valide (il doit comporter trois parties séparées par des points)
Valeur “iss” ou “aud” inattendue
Problème : L’émetteur ou l’audience du jeton ne correspond pas à votre configuration.Solutions :- Décodez votre jeton sur jwt.io
- Vérifiez que la claim
isscorrespond àhttps://YOUR_AUTH0_DOMAIN/(notez la barre oblique à la fin) - Vérifiez que la claim
audcorrespond exactement à votreAUTH0_AUDIENCE - Vérifiez les valeurs de votre
.env:
“You must provide an issuerBaseURL” ou “audience is required”
Problème : Les variables d’environnement ne sont pas chargées.Solutions :- Assurez-vous que le fichier
.envexiste à la racine de votre projet - Vérifiez que
dotenvest installé :npm install dotenv - Ajoutez
require('dotenv').config()tout en haut de votre fichier serveur - Vérifiez que les noms de variables correspondent exactement, y compris la casse
401 Unauthorized pour toutes les requêtes
Causes possibles :- Le jeton est expiré
- L’audience ne correspond pas
- L’émetteur ne correspond pas
- Décodez votre jeton sur jwt.io
- Vérifiez que la claim
expn’est pas expirée - Vérifiez que la claim
audcorrespond exactement à votreAUTH0_AUDIENCE - Vérifiez que la claim
issesthttps://{AUTH0_DOMAIN}/ - Assurez-vous que le format de l’en-tête
AuthorizationestBearer YOUR_TOKEN(avec un espace)
403 Forbidden avec “insufficient_scope”
Problème : Le jeton n’a pas les scopes requis.Solutions :- Vérifiez que les scopes sont définis dans votre API Auth0 (Dashboard → Applications → APIs → Permissions)
- Demandez les scopes au moment d’obtenir le jeton
- Vérifiez que la claim
scopedu jeton inclut les scopes requis
Erreurs CORS dans le navigateur
Problème : Le navigateur bloque les requêtes API en raison de la politique CORS.Solution : Installez et configurezcors :Prochaines étapes
- Contrôle d’accès basé sur les rôles - Mettez en œuvre des permissions granulaires
- Pratiques exemplaires en matière d’autorisation des API - Découvrez les pratiques exemplaires relatives aux jetons d’accès
- Surveillez votre API - Configurez la journalisation et la surveillance
- Auth0 Community - Obtenez de l’aide auprès de la communauté
Ressources
- express-oauth2-jwt-bearer GitHub - Code source et exemples
- Documentation d’Express.js - Pour en savoir plus sur Express
- Authentification de l’API Auth0 - Comprendre les jetons d’accès
- JWT.io - Déboguer et décoder les JWT