Une nouvelle version bêta de ce Quickstart est disponible et utilise le SDK
@auth0/auth0-express, qui remplacera bientôt ce guide. Essayer le Quickstart bêta →Utiliser l’IA pour intégrer Auth0
Utiliser l’IA pour intégrer Auth0
Si vous utilisez un assistant IA de programmation comme Claude Code, Cursor ou GitHub Copilot, vous pouvez ajouter l’authentification Auth0 automatiquement en quelques minutes à l’aide d’Agent Skills.Installer :Demandez ensuite à votre assistant IA :Votre assistant IA créera automatiquement votre application Auth0, récupérera les identifiants, installera
express-openid-connect, configurera le middleware et mettra en place vos routes. 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
- npm 10+ ou yarn 1.22+
- jq - Requis pour la configuration d’Auth0 CLI (facultatif)
Premiers pas
express-openid-connect.
1. Créez un nouveau projet
2. Installer le SDK Auth0 Express
express-openid-connect ainsi qu’Express et dotenv pour gérer les variables d’environnement.
package.json pour y ajouter des scripts de démarrage :
📁 package.json
3. Configurez votre Auth0 App
- CLI
- Dashboard
Exécutez la commande shell suivante dans le répertoire racine de votre projet pour créer une application Auth0 et générer votre fichier
.env :Cette commande va :
- Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
- Créer une Auth0 Regular Web Application configurée pour
http://localhost:3000 - Générer un fichier
.envavecISSUER_BASE_URL,CLIENT_ID,SECRETetBASE_URL
4. Configurer le middleware
auth() gère la session et crée automatiquement les routes /login, /logout et /callback.
📁 index.js
authRequired: falsepermet, par défaut, aux utilisateurs authentifiés ou non d’accéder aux routesauth0Logout: truegarantit que les utilisateurs sont déconnectés à la fois d’Auth0 et de votre application- Le middleware met automatiquement à disposition des routes à
/login,/logoutet/callback - La session utilisateur est stockée dans un cookie chiffré
5. Créez des routes de login, de logout et de profil
- Le middleware
requiresAuth()protège la route/profile: les utilisateurs non authentifiés sont redirigés vers la page de connexion req.oidc.usercontient les renseignements du profil de l’utilisateur authentifiéreq.oidc.isAuthenticated()renvoie un booléen indiquant l’état de la connexion- Les routes de connexion et de logout (
/login,/logout) sont créées automatiquement par le middlewareauth()
6. Lancez votre application
CheckpointVous devriez maintenant avoir une page de connexion d’Auth0 entièrement fonctionnelle. Lorsque vous :
- Cliquez sur “Login” - vous êtes redirigé vers la page Universal Login d’Auth0
- Terminez l’authentification - vous êtes redirigé vers votre application
- Accédez à “/profile” - vous voyez vos renseignements d’utilisateur
- Cliquez sur “Logout” - vous êtes déconnecté à la fois de votre application et d’Auth0
Utilisation avancée
Protéger des routes précises avec requiresAuth()
Protéger des routes précises avec requiresAuth()
Utilisez le middleware Vous pouvez aussi protéger toutes les routes associées à un chemin précis à l’aide d’Express Router :
requiresAuth() pour protéger les routes qui nécessitent une authentification :Appel d’API protégées avec des jetons d’accès
Appel d’API protégées avec des jetons d’accès
Pour appeler des API externes qui nécessitent un jeton d’accès, configurez le SDK pour en demander un :📁 index.js (configuration mise à jour)Ajoutez ce qui suit à votre fichier Ensuite, utilisez votre access token pour appeler votre API :
.env :Pour obtenir des jetons d’actualisation, ajoutez
offline_access à votre scope :Utilisation de l’autorisation fondée sur les revendications
Utilisation de l’autorisation fondée sur les revendications
Protégez les routes selon les claims de l’utilisateur (rôles, permissions, etc.) :
Des claims comme
role doivent être ajoutées à vos jetons au moyen d’Auth0 Rules ou d’Actions. En savoir plus sur l’ajout de claims personnalisés.Magasin de sessions personnalisé (Redis)
Magasin de sessions personnalisé (Redis)
Pour les environnements de production ou si vous exécutez plusieurs instances de serveur, utilisez un magasin de sessions personnalisé :Quand utiliser un magasin de sessions personnalisé :
- Exécuter plusieurs instances de serveur (répartition de la charge)
- Les données de session dépassent les limites de taille des témoins (~4KB)
- Avoir besoin d’enregistrer la session lors des redémarrages du serveur
- Utiliser Back-Channel Logout
Gestion des erreurs
Gestion des erreurs
Ajoutez une gestion adéquate des erreurs d’authentification :
Dépannage
Problèmes courants et solutions
Problèmes courants et solutions
Erreur « invalid state » après la connexion
Problème : La valeur destate ne correspond pas entre la requête d’authentification et le rappel.Solutions :- Assurez-vous d’utiliser HTTPS en production
- Vérifiez que les cookies sont correctement enregistrés (et non bloqués par le navigateur)
- Vérifiez que l’URL de rappel correspond exactement à celle configurée dans l’Auth0 Dashboard
req.oidc est undefined
Problème : Le middleware auth() n’est pas appliqué avant l’accès à req.oidc.Solution : Assurez-vous que app.use(auth(config)) est appelé avant toute route qui accède à req.oidc :Session trop volumineuse / erreurs liées aux cookies
Problème : Les données de session de l’utilisateur dépassent la taille maximale des cookies.Solution : Utilisez un magasin de sessions personnalisé comme Redis :Incompatibilité de l’URL de rappel
Problème : Erreur « Callback URL mismatch » provenant d’Auth0.Solution :- Allez dans votre Auth0 Dashboard → Applications → Your App → Settings
- Ajoutez
http://localhost:3000(ou votre URL de production) à Allowed Callback URLs - L’URL doit correspondre exactement (y compris les barres obliques finales)
Les variables d’environnement ne se chargent pas
Problème : Les valeurs de configuration sontundefined.Solution :- Assurez-vous que
require('dotenv').config()se trouve au début de votre fichier d’entrée - Vérifiez que le fichier
.envse trouve dans le répertoire racine - Vérifiez qu’il n’y a pas de fautes de frappe dans les noms de variables
Prochaines étapes
- Ajouter l’autorisation - Implémentez le contrôle d’accès basé sur les rôles
- Appeler des API protégées - Utilisez des jetons d’accès pour appeler vos API côté serveur
- Personnaliser Universal Login - Adaptez l’image de marque de votre expérience de connexion
- Ajouter des connexions sociales - Activez Google, GitHub et d’autres options de connexion sociale
- Implémenter MFA - Ajoutez l’authentification multifacteur
Ressources
- express-openid-connect GitHub - Code source et exemples
- Documentation de l’API - Référence complète de l’API
- Application d’exemple Auth0 Express - Application d’exemple complète
- Auth0 Community - Obtenez de l’aide auprès de la communauté