Utilisez l’IA pour intégrer Auth0
Utilisez 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 API avec Auth0 en quelques minutes à l’aide d’Agent Skills.Installer :Demandez ensuite à votre assistant IA :Votre assistant IA créera automatiquement votre API Auth0, récupérera les informations d’identification, installera
@auth0/auth0-fastify-api, configurera le plugin et protégera vos points de terminaison d’API à l’aide de la validation des JWT. Documentation complète sur Agent Skills →Prérequis : Avant de commencer, assurez-vous d’avoir installé ce qui suit :Vérifiez l’installation :
node --version && npm --versionCompatibilité avec les versions de Fastify : Ce guide de démarrage rapide fonctionne avec Fastify 5.x et les versions ultérieures.Pour commencer
1
Créer un nouveau projet
Créez un nouveau répertoire pour votre API Fastify et initialisez un projet Node.js.Initialiser le projetCréez l’arborescence du projet
2
Installez le SDK d’API Auth0 pour Fastify
Installez les dépendances nécessairesMettez à jour votre
package.json pour y ajouter des scripts de démarrage :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 la configurer manuellement dans le Dashboard :
- 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
.env :.env
Cette commande effectue les actions suivantes :
- Vérifie si vous êtes authentifié(e) (et vous invite à vous connecter au besoin)
- Crée une API Auth0 avec l’identifiant indiqué
- Affiche les détails de l’API, y compris le domaine et l’identifiant
4
Configurer le plugin de l’API Auth0
Créez votre serveur Fastify et enregistrez le plugin de l’Auth0 API :Ce que cela fait :
server.js
- Enregistre le plugin Auth0 API avec votre domaine Auth0 et l’audience de l’API
- Configure la validation des JWT pour les requêtes entrantes
- Met le
preHandlerrequireAuth()à disposition pour protéger les routes
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
preHandler: fastify.requireAuth()pour exiger un JWT valide request.usercontient les claims décodés du JWT pour les requêtes authentifiées- Le champ
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 20+ redémarre automatiquement le serveur lorsque les 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 devez :
- Créer une application cliente (application Web ou mobile) qui permet aux utilisateurs de s’authentifier
- Configurer le client pour demander un jeton d’accès pour votre API (à l’aide du paramètre audience)
- Utiliser ce jeton d’accès dans l’en-tête Authorization
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 en fonction de votre domaine Auth0 et de votre audience
- Fournit des renseignements sur l’utilisateur à partir des claims du jeton via
request.user
Utilisation avancée
Claims de jeton personnalisés avec TypeScript
Claims de jeton personnalisés avec TypeScript
Étendez l’interface Token pour ajouter un typage sûr à vos claims personnalisés dans vos jetons d’accès :TypeScript reconnaîtra maintenant vos claims personnalisés :
server.ts
server.ts
Les claims personnalisés doivent utiliser des URL avec espace de noms (par ex.,
https://myapp.com/roles), sauf s’il s’agit de claims OIDC standards. En savoir plus sur les claims personnalisés.Autorisation basée sur les permissions
Autorisation basée sur les permissions
Vérifiez les permissions précises dans le jeton d’accès :
server.js
Les permissions doivent être configurées dans les paramètres de votre Auth0 API et accordées aux clients. En savoir plus sur les permissions d’API.
Autorisation basée sur les rôles
Autorisation basée sur les rôles
Mettez en place le contrôle d’accès basé sur les rôles à l’aide de claims personnalisés :
server.js
Les rôles doivent être ajoutés aux jetons à l’aide d’Auth0 Actions. Découvrez comment ajouter des rôles aux jetons.
Configuration de CORS
Configuration de CORS
Activez CORS pour autoriser les requêtes provenant d’applications web :En production, précisez les origines exactes :
server.js
server.js
Gestion des erreurs
Gestion des erreurs
Ajoutez une gestion complète des erreurs d’authentification :
server.js
Limitation du nombre de requêtes
Limitation du nombre de requêtes
Protégez votre API contre les abus grâce à la limitation du nombre de requêtes :
server.js
Dé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” figure bien 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)
“Signature invalide”
Problème : La signature du jeton ne correspond pas.Solutions :- Vérifiez que
AUTH0_DOMAINcorrespond au domaine qui a émis le jeton - Assurez-vous d’utiliser l’algorithme de signature RS256 (par défaut)
- Vérifiez que le jeton n’a pas été modifié
”Audience invalide”
Problème : L’audience du jeton ne correspond pas à votre API.Solution : L’application cliente doit demander un jeton avec la bonne audience :Erreurs CORS dans le navigateur
Problème : Le navigateur bloque les requêtes API à cause de la politique CORS.Solution : Installez et configurez@fastify/cors :Prochaines étapes
- Quickstart d’application web Fastify - Créez une application web qui effectue des requêtes à votre API
- Contrôle d’accès basé sur les rôles - Implémentez des permissions granulaires
- Meilleures pratiques en matière d’autorisation des API - Découvrez les meilleures pratiques relatives aux jetons d’accès
- Surveillez votre API - Configurez la journalisation et la surveillance
Ressources
- auth0-fastify-api GitHub - Code source et exemples
- Documentation de Fastify - En savoir plus sur Fastify
- Authentification de l’API Auth0 - Comprendre les jetons d’accès
- Auth0 Community - Obtenez de l’aide de la communauté