Premiers pas
Créer un nouveau projet
package.json pour utiliser les modules ES et ajoutez des scripts de démarrage :Installer le SDK
@auth0/auth0-express-api, ainsi que express et dotenv :Configurez votre API Auth0
- CLI
- Dashboard
.env :Remplacez YOUR_API_IDENTIFIER par l’identifiant utilisé ci-dessus (par exemple, https://my-express-api.example.com).Configurer le middleware JWT
createAuth0Api() dans votre application Express pour configurer la validation des JWT. Ajoutez ensuite des routes publiques et protégées.createAuth0Api()lit automatiquementAUTH0_DOMAINetAUTH0_AUDIENCEdepuis les variables d’environnementrequiresAuth()valide l’en-têteAuthorization: Bearer <token>de chaque requêtereq.auth0.usercontient les claims JWT décodés des requêtes authentifiées —subest l’identifiant unique de l’utilisateur
Protéger une route avec un scope requis
scopes à requiresAuth() : le SDK renvoie 403 insufficient_scope si le token ne comprend pas ce scope.scopesInclude, claimEquals, claimIncludes et claimCheck — décrits dans Utilisation avancée.Exécutez votre API
Testez votre API
- Accédez à Auth0 Dashboard → Applications > API
- Sélectionnez votre API → onglet Test
- Copiez le jeton d’accès généré
- Accepte les requêtes vers des endpoints publics sans token
- Renvoie la réponse protégée lorsqu’un access token valide est fourni
- Valide les JWT par rapport à votre domaine Auth0 et à votre audience
- Expose les claims décodés du token via
req.auth0.user
Utilisation avancée
Faire correspondre plusieurs scopes avec scopesInclude
Faire correspondre plusieurs scopes avec scopesInclude
scopesInclude lorsqu’une route doit accepter l’un de plusieurs scopes ou en exiger plusieurs à la fois. Par défaut, cette fonction vérifie la présence d’au moins un des scopes indiqués; transmettez { match: 'all' } pour les exiger tous. Les scopes peuvent être fournis sous forme de tableau ou de chaîne séparée par des espaces — ces exemples utilisent des tableaux.Autoriser selon des claims personnalisés
Autoriser selon des claims personnalisés
scope, utilisez claimEquals, claimIncludes ou claimCheck. Ces fonctions s’exécutent après requiresAuth() et renvoient 401 invalid_token si l’exigence relative au claim n’est pas satisfaite.Définir des claims de jeton personnalisés avec TypeScript
Définir des claims de jeton personnalisés avec TypeScript
Token pour accéder aux claims personnalisés de façon sécuritaire du point de vue des types :Configuration CORS pour les clients Web
Configuration CORS pour les clients Web
Configurer les scopes dans Auth0 Dashboard
Configurer les scopes dans Auth0 Dashboard
- Accédez à Auth0 Dashboard → Applications > APIs → votre API
- Ouvrez l’onglet Permissions
- Ajoutez des permissions telles que
read:messages,write:messages,read:admin - Cliquez sur Save
403 Forbidden.Dépannage
401 avec un corps de réponse vide et seulement l’en-tête « WWW-Authenticate: Bearer »
401 avec un corps de réponse vide et seulement l’en-tête « WWW-Authenticate: Bearer »
Authorization est absent ou mal formé, de sorte qu’aucun jeton porteur n’a pu être extrait. Conformément à la RFC 6750, le SDK renvoie dans ce cas un 401 avec seulement l’en-tête WWW-Authenticate: Bearer et aucun corps d’erreur. Ce cas est distinct de celui où un jeton est présent, mais non valide ou expiré, qui renvoie un 401 avec l’erreur invalid_token et un corps JSON (voir ci-dessous).Correctif :- Assurez-vous que l’en-tête est présent :
Authorization: Bearer YOUR_TOKEN - Vérifiez que « Bearer » (avec un B majuscule et une espace) précède le jeton
« Invalid token » ou non-concordance entre l’audience et l’émetteur (401)
« Invalid token » ou non-concordance entre l’audience et l’émetteur (401)
- Décodez votre jeton sur jwt.io
- Vérifiez que
isscorrespond àhttps://{yourDomain}/(notez la barre oblique finale) - Vérifiez que
audcorrespond exactement à votreAUTH0_AUDIENCE - Assurez-vous d’utiliser un jeton d’accès, et non un jeton ID — les jetons d’accès sont obtenus avec le paramètre
audience
« Insufficient scope » (403)
« Insufficient scope » (403)
- Vérifiez que le scope est défini dans l’onglet Permissions de votre API dans l’Auth0 Dashboard
- Assurez-vous que le client demande le scope lors de l’obtention du jeton d’accès
- Décodez le jeton sur jwt.io et vérifiez le claim
scope
Variables d’environnement non chargées
Variables d’environnement non chargées
dotenv n’est pas configuré ou les noms de variables sont incorrects.Correctif :- Assurez-vous que
import 'dotenv/config'est la première instruction d’importation dans votre fichier d’entrée - Vérifiez que
.envcontientAUTH0_DOMAINetAUTH0_AUDIENCE - Déboguez :
Erreurs d’importation ESM (« Cannot use import statement »)
Erreurs d’importation ESM (« Cannot use import statement »)
@auth0/auth0-express-api utilise des modules ES.Correctif : Ajoutez "type": "module" à votre package.json :📁 package.jsonserver.mjs.Étapes suivantes
- Ajouter Login à une application web Express — Utilisez
@auth0/auth0-expresspour l’authentification par session dans les applications web - Contrôle d’accès basé sur les rôles — Mettez en œuvre des permissions granulaires
- Bonnes pratiques relatives aux jetons d’accès — Découvrez comment gérer les jetons d’accès
- Surveiller votre API — Configurez la journalisation et la surveillance
Ressources
- auth0/auth0-express-api GitHub — Code source et exemples
- Auth0 Community — Obtenez de l’aide auprès de la communauté
- JWT.io — Déboguez et décodez les JWTs