Skip to main content
@auth0/auth0-react-router est actuellement en version bêta (1.0.0-beta.2). L’API pourrait changer d’ici la version stable 1.0.

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 Auth0 en quelques minutes grâce aux compétences d’agent.Installation :
Ensuite, demandez à votre assistant IA :
Votre assistant IA se chargera automatiquement de créer votre application Auth0, de récupérer les informations d’identification, d’installer @auth0/auth0-react-router, de configurer le fournisseur et de configurer vos routes. Documentation complète sur les compétences d’agent →
Informations requises : Avant de commencer, assurez-vous d’avoir installé les éléments suivants :
  • Node.js 18 ou version ultérieure (20 LTS recommandée)
  • npm 9+, yarn 1.22+ ou pnpm 8+
  • jq – requis pour la configuration avec l’interface de ligne de commande (CLI) d’Auth0
  • React Router en mode cadre d’applications, v7 ou version ultérieure (fichier react-router.config.ts présent)

Premiers pas

Ce guide de démarrage rapide vous montre comment ajouter l’authentification Auth0 à une application React Router. Vous allez créer une application sécurisée dotée de fonctionnalités de connexion, de déconnexion et de profil utilisateur à l’aide de la trousse SDK Auth0 React Router. La trousse SDK gère le flux OIDC côté serveur et stocke la session dans un témoin chiffré en JWE; les jetons ne se rendent donc jamais jusqu’au navigateur.
1

Créer un nouveau projet React Router

Créez un nouveau projet React Router pour ce guide de démarrage rapide :
Ouvrez le projet :
Ignorez cette étape si vous ajoutez Auth0 à une application React Router existante.
2

Installez le SDK Auth0 React Router

3

Configurer Auth0

Créez une application Auth0 et définissez les URL de rappel et de déconnexion.
4

Configurer les variables d’environnement

Créez un fichier .env à la racine de votre projet :
Ne validez jamais le fichier .env dans votre système de gestion de versions. Ajoutez-le à .gitignore avant votre première validation.
5

Créer l’instance du serveur Auth0

Créez app/auth0.server.ts. Le suffixe .server.ts indique au bundler de React Router d’exclure ce fichier du paquet client, afin que vos secrets restent uniquement côté serveur.
app/auth0.server.ts
6

Ajouter les routes d’authentification

Créez une route générique (splat) qui prend en charge tous les chemins /auth/*. handleAuth achemine en interne les requêtes vers handleLogin, handleCallback, handleLogout et handleBackchannelLogout selon le chemin de l’URL et la méthode HTTP.
app/routes/auth.$.tsx
Enregistrez la route dans votre configuration de routes :
app/routes.ts
7

Configurer la mise en page racine

Ajoutez Auth0Provider et rootAuthLoader à app/root.tsx. rootAuthLoader déchiffre le témoin de session et transmet l’état d’authentification au fournisseur — aucun jeton n’est envoyé au navigateur.
app/root.tsx
Auth0Provider lit les données de session à partir de useRouteLoaderData('root'); la route racine doit donc avoir l’identifiant root. Avec le routage basé sur les fichiers, React Router définit automatiquement cet identifiant à partir du nom du fichier. Avec une configuration de routes personnalisée, transmettez { id: 'root' } à l’appel layout().
8

Ajouter la connexion et la déconnexion

Utilisez les composants intégrés pour afficher les boutons de connexion et de déconnexion. LoginButton redirige vers /auth/login et LogoutButton redirige vers /auth/logout. Auth0 gère le flux OIDC, puis redirige l’utilisateur vers votre application une fois la connexion effectuée.
app/routes/_index.tsx
9

Afficher le profil utilisateur

Utilisez le hook useUser pour accéder au profil de l’utilisateur authentifié dans n’importe quel composant client. Combinez-le avec requireSession dans le loader pour bloquer les requêtes non authentifiées directement sur le serveur, avant même le rendu de la page.
app/routes/profile.tsx
10

Exécutez votre application

Ouvrez http://localhost:5173 dans votre navigateur et cliquez sur Log in. Vous serez redirigé vers la page de connexion universelle d’Auth0. Une fois connecté, vous serez redirigé vers votre application.
La connexion et la déconnexion fonctionnent maintenant dans votre application. La session est stockée dans un témoin chiffré en JWE — les jetons d’accès restent sur le serveur et ne sont jamais transmis au navigateur.

Dépannage

Cause : AUTH0_SESSION_SECRET a été modifié après l’émission d’un témoin de session, ou la valeur compte moins de 32 caractères.Solution : Effacez les témoins de votre navigateur pour localhost, assurez-vous que AUTH0_SESSION_SECRET compte au moins 32 caractères, puis redémarrez le serveur de développement. Pour générer un nouveau secret : openssl rand -hex 32.
Cause : L’URL de redirection reçue par Auth0 ne correspond à aucune des valeurs définies dans les URL de rappel autorisées (Allowed Callback URLs).Solution : Dans Auth0 Dashboard → Applications > Applications → sélectionnez votre application → Application Settings, assurez-vous que Allowed Callback URLs est défini à http://localhost:5173/auth/callback. Supprimez toute barre oblique finale ou tout espace superflu, puis cliquez sur Save Changes.
Cause : La route générique auth.$.tsx est absente ou n’est pas enregistrée dans routes.ts.Solution : Assurez-vous que app/routes/auth.$.tsx existe et que app/routes.ts inclut route('auth/*', 'routes/auth.$.tsx'). Redémarrez le serveur de développement après avoir modifié routes.ts.
Cause : rootAuthLoader n’est pas exporté depuis app/root.tsx, ou la route racine n’a pas l’identifiant root.Solution : Assurez-vous que app/root.tsx exporte export const loader = ({ request }) => rootAuthLoader(request). Si vous utilisez une configuration de routes personnalisée, enregistrez la mise en page racine comme suit : layout('root.tsx', { id: 'root' }, [...routes]).
Cause : defineRouteAuth et auth0Middleware nécessitent React Router 7.9.0 ou une version ultérieure, puisque c’est cette version qui a introduit l’API de logiciel médiateur.Solution : Mettez à niveau react-router vers >=7.9.0, ou protégez plutôt chaque route individuellement à l’aide de requireSession / requireUser dans chaque chargeur.

Utilisation avancée

Ajoutez AUTH0_AUDIENCE au fichier .env avec l’identifiant de votre API (disponible dans Auth0 Dashboard → Applications > APIs → API Settings → Identifier). Utilisez ensuite getAccessToken dans un chargeur (loader) — le jeton n’est jamais transmis au navigateur :
app/routes/data.tsx
Utilisez le logiciel médiateur defineRouteAuth (React Router ≥ 7.9.0) pour imposer des rôles au niveau des routes. Par défaut, les rôles sont lus à partir de la demande personnalisée https://auth0.com/claims/roles :
app/routes/admin.tsx
Les requêtes qui n’ont pas le rôle requis reçoivent une réponse 403.
La trousse SDK peut fonctionner entièrement côté client grâce à @auth0/auth0-spa-js. Ajoutez VITE_AUTH0_DOMAIN et VITE_AUTH0_CLIENT_ID à votre fichier .env — Auth0Provider détecte automatiquement ces variables et bascule vers le flux PKCE. Aucune autre modification du code n’est requise.
Ne définissez pas les variables AUTH0_* et VITE_AUTH0_* simultanément. Le mode hybride n’est pas pris en charge — si les deux sont présentes, la déconnexion en mode SPA n’effacera pas le témoin de session côté serveur.