Utiliser l’IA pour intégrer Auth0
Utiliser l’IA pour intégrer Auth0
@auth0/auth0-react-router, de configurer le fournisseur et de configurer vos routes. Documentation complète sur les compétences d’agent →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.Créer un nouveau projet React Router
Installez le SDK Auth0 React Router
Configurer Auth0
- Configuration rapide
- CLI
- Dashboard
Configurer les variables d’environnement
.env à la racine de votre projet :Créer l’instance du serveur Auth0
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.Ajouter les routes d’authentification
/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.Configurer la mise en page racine
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.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().Ajouter la connexion et la 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.Afficher le profil utilisateur
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.Exécutez votre application
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.Dépannage
JWEDecryptionFailed — impossible de déchiffrer le témoin de session
JWEDecryptionFailed — impossible de déchiffrer le témoin de session
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.URL de rappel non concordante — Auth0 renvoie une erreur après la connexion
URL de rappel non concordante — Auth0 renvoie une erreur après la connexion
http://localhost:5173/auth/callback. Supprimez toute barre oblique finale ou tout espace superflu, puis cliquez sur Save Changes.Erreur 404 sur /auth/login — route introuvable
Erreur 404 sur /auth/login — route introuvable
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.useUser renvoie null après la connexion
useUser renvoie null après la connexion
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]).TypeError sur context.get — le logiciel médiateur ne fonctionne pas
TypeError sur context.get — le logiciel médiateur ne fonctionne pas
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
Appeler une API côté serveur avec un jeton d'accès
Appeler une API côté serveur avec un jeton d'accès
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 :Protection des routes en fonction des rôles
Protection des routes en fonction des rôles
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 :403.Mode SPA (PKCE côté client)
Mode SPA (PKCE côté client)
@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.