Passer au contenu principal

Utiliser l’IA pour intégrer Auth0

Si vous utilisez un assistant de programmation par IA comme Claude Code, Cursor ou GitHub Copilot, vous pouvez ajouter automatiquement l’authentification avec Auth0 en quelques minutes à l’aide des agent skills.Installer :
Demandez ensuite à votre assistant IA :
Votre assistant IA créera automatiquement votre application Auth0, récupérera les identifiants, installera @auth0/nextjs-auth0, créera les routes d’API et configurera les variables d’environnement. Documentation complète des agent skills →
Prérequis : Avant de commencer, assurez-vous d’avoir installé les éléments suivants :Vérifiez l’installation : node --version && npm --version

Pour commencer

Ce guide de démarrage rapide explique comment ajouter l’authentification Auth0 à une application Next.js 16. Vous créerez une application Web complète avec rendu côté serveur, un mécanisme de connexion sécurisé et des routes protégées à l’aide du SDK Next.js d’Auth0.
1

Créer un nouveau projet

Créez un nouveau projet Next.js pour ce guide de démarrage rapide
Ouvrez le projet
2

Installer le SDK Auth0 pour Next.js

shellscript npm install @auth0/nextjs-auth0
3

Créer les fichiers du projet

Créez tous les répertoires et fichiers nécessaires à l’intégration d’Auth0 :
4

Configurez votre application Auth0

Ensuite, créez une nouvelle application sur votre locataire Auth0 et ajoutez les variables d’environnement à votre projet.Vous disposez de trois options pour configurer votre application Auth0 : utiliser l’outil Quick Setup (recommandé), exécuter une commande CLI ou effectuer la configuration manuellement via le Auth0 Dashboard :
Créez une application Auth0 et copiez le fichier .env prérempli avec les bonnes valeurs de configuration.
5

Créer la configuration d’Auth0

Ajoutez le code du client Auth0 dans src/lib/auth0.ts :
src/lib/auth0.ts
6

Ajouter un proxy

Ajoutez le code du proxy dans src/proxy.ts :
src/proxy.ts
Comme nous utilisons un répertoire src/, le fichier proxy.ts est créé dans src/. Si vous n’utilisez pas de répertoire src/, créez-le plutôt à la racine du projet.
Ce proxy configure automatiquement les routes d’authentification suivantes :
  • /auth/login - Route de connexion
  • /auth/logout - Route de déconnexion
  • /auth/callback - Route de rappel
  • /auth/profile - Route du profil utilisateur
  • /auth/access-token - Route du jeton d’accès
  • /auth/backchannel-logout - Route de déconnexion par canal arrière
7

Créer les composants Login, Logout et Profile

Ajoutez le code des composants dans les fichiers créés à l’étape 3 :
8

Mettez à jour votre page d’accueil

Remplacez src/app/page.tsx par :
src/app/page.tsx
9

Mettre à jour la structure de la page avec Auth0Provider

Mettez à jour src/app/layout.tsx pour charger la police Inter et entourer votre application de Auth0Provider :
src/app/layout.tsx
Dans la version 4, Auth0Provider est facultatif. Vous en avez seulement besoin si vous souhaitez transmettre un utilisateur initial pendant le rendu côté serveur afin qu’il soit disponible pour le hook useUser().
10

Configurer Tailwind CSS

Remplacez le contenu de src/app/globals.css par ce qui suit :
src/app/globals.css
11

Lancez votre application

Votre application sera accessible à http://localhost:3000. Le SDK Auth0 v4 configure automatiquement les routes d’authentification sous /auth/* (et non sous /api/auth/*, comme dans la v3).Si le port 3000 est déjà utilisé, exécutez : npm run dev -- --port 3001 et mettez à jour les URL de rappel de votre application Auth0 vers http://localhost:3001
Point de contrôleVous devriez maintenant avoir une page de connexion Auth0 entièrement fonctionnelle sur votre localhost

Dépannage

Si vous voyez l’erreur JWEDecryptionFailed: decryption operation failed, elle est causée soit par une valeur AUTH0_SECRET invalide, soit par un ancien témoin de session chiffré avec un secret différent.Solution :
  1. Générez un nouveau secret avec :
  1. Mettez à jour votre fichier .env.local :
  1. Supprimez les témoins de votre navigateur pour localhost:3000 :
    • Chrome/Edge : Appuyez sur F12 → onglet Application → Cookies → Supprimez tous les cookies pour localhost
    • Firefox : Appuyez sur F12 → onglet Storage → Cookies → Supprimez tous les cookies pour localhost
    • Safari : menu Develop → Show Web Inspector → onglet Storage → Cookies → Delete all
  2. Redémarrez votre serveur de développement :
Le secret doit contenir exactement 32 octets (64 caractères hexadécimaux). Cette erreur se produit lorsque l’application tente de déchiffrer un témoin de session existant qui a été chiffré avec un secret différent.
Si le clic sur login vous redirige vers une page 404, vérifiez ces problèmes courants :
  1. Emplacement du proxy : Assurez-vous que src/proxy.ts se trouve au bon endroit
  2. Code du proxy : Vérifiez que le proxy correspond au code de l’étape 6
  3. Redémarrage du serveur : Après avoir créé le fichier proxy, redémarrez le serveur de développement
  4. Vérification des importations : Assurez-vous que le chemin import { auth0 } from "./lib/auth0" est correct
Si vous voyez « Cannot find module ’@/components/LoginButton’ » ou une erreur semblable :
  1. Vérifiez que les fichiers existent : Assurez-vous que tous les fichiers de l’étape 3 ont été créés
  2. Vérifiez les chemins : Assurez-vous que les composants se trouvent dans le répertoire src/components/
  3. Redémarrez TypeScript : Appuyez sur Cmd+Shift+P (Mac) ou Ctrl+Shift+P (Windows), puis exécutez « TypeScript: Restart TS Server »
  4. Vérifiez les importations : Assurez-vous d’utiliser @/components/* (et non ~/components/*)

Utilisation avancée

Ce guide de démarrage rapide utilise Auth0 Next.js SDK v4, qui apporte d’importants changements par rapport à la v3 :
  • Aucun gestionnaire de route dynamique requis - Les routes d’authentification sont montées automatiquement par le proxy
  • Configuration simplifiée de l’application - new Auth0Client() lit automatiquement les variables d’environnement
  • Nouveaux chemins de route - Les routes se trouvent sous /auth/* plutôt que sous /api/auth/*
  • Proxy requis - Toutes les fonctionnalités d’authentification passent par proxy.ts
  • Utilisez des balises <a> - La navigation doit utiliser <a href="/auth/login"> plutôt que des boutons avec onClick

Routes d’authentification

Le SDK monte automatiquement ces routes via le proxy :
Si vous obtenez des erreurs 404 sur ces routes, assurez-vous que :
  1. Le fichier proxy.ts se trouve au bon endroit (à la racine du projet, ou dans src/ si vous utilisez un répertoire src/)
  2. Le proxy est correctement configuré avec le motif matcher indiqué à l’étape 6
  3. Le serveur de développement a été redémarré après la création du fichier proxy
Auth0 Next.js SDK v4 prend en charge les modèles App Router et Pages Router. Voici quelques modèles courants côté serveur :
app/protected/page.tsx
Pour gérer l’état d’authentification côté client, utilisez le hook useUser :
components/UserProfile.tsx
Pour protéger les routes d’API, utilisez la méthode withApiAuthRequired :
app/api/protected/route.ts
Si vous utilisez un service backend tiers (comme Convex, Supabase ou Firebase) qui exige des jetons d’authentification Auth0, vous devrez transmettre le jeton d’accès de votre application Next.js au client backend.

Obtention du jeton d’accès

Côté serveur (App Router) :
app/api/token/route.ts
Côté client :
lib/convex-client.ts

Configuration de votre backend

La plupart des services tiers ont besoin de votre Domaine Auth0 et de votre audience pour vérifier les jetons. Dans la configuration de votre backend :
convex/auth.config.ts
Assurez-vous que votre application Auth0 est configurée avec une audience d’API si votre backend l’exige. Vous pouvez la définir dans Auth0 Dashboard, sous Applications → APIs, ou ajouter AUTH0_AUDIENCE à votre fichier .env.local et configurer le SDK en conséquence.

Résolution des problèmes liés aux jetons

Si ctx.auth.getUserIdentity() renvoie null dans votre backend :
  1. Vérifiez que le jeton est bien transmis : Consultez l’onglet Réseau des outils de développement du navigateur pour confirmer que le jeton est inclus dans les requêtes
  2. Vérifiez le format du jeton : Assurez-vous de transmettre le accessToken, et non le idToken
  3. Vérifiez la configuration du backend : Confirmez que votre backend utilise le bon Domaine Auth0 et le bon ID client
  4. Vérifiez l’audience : Si vous utilisez une API Auth0, assurez-vous que AUTH0_AUDIENCE est défini et correspond à votre identifiant d’API
  5. Inspectez les claims du jeton : Décodez votre JWT sur jwt.io pour vérifier qu’il contient les claims attendues