Ce Quickstart est actuellement en bêta. Nous serions ravis d’avoir vos commentaires!
Prérequis :
- Node.js 20 LTS ou une version ultérieure
- npm 10+ ou yarn 1.22+ ou pnpm 8+
- Facultatif : jq — pour configurer Auth0 CLI — et openssl pour générer des secrets sécurisés
- Les projets Hono doivent utiliser Hono >= 3.x (dépendance homologue)
Pour commencer
@auth0/auth0-hono. Il suit les pratiques recommandées du dépôt : une configuration gérée par l’environnement, le middleware app.use(auth0(...)) et requiresAuth() pour protéger certaines routes de façon sélective.
1
Créer une nouvelle application Hono
Utilisez l’utilitaire create-hono pour créer une nouvelle application Hono.Sélectionnez le gabarit
nodejs2
Installer les dépendances
Installez le middleware Auth0.Ce guide de démarrage rapide utilise le module Sinon, si vous préférez ne pas ajouter de dépendance, vous pouvez charger un fichier d’environnement au démarrage du processus à l’aide de l’option
dotenv pour charger les variables d’environnement à partir d’un fichier .env.Pour installer dotenv localement :--env-file de Node, ce qui vous évite d’installer et de faire l’importation de dotenv.Modifiez le script start dans package.json comme suit :3
Créer une application Auth0
Créez une Application Auth0 dans votre tenant Auth0 (Regular Web Application), puis enregistrez le Domain, le Client ID et le Client Secret dans les variables d’environnement de votre projet.
Vous pouvez choisir de configurer automatiquement votre application Auth0 en exécutant une commande CLI, ou de le faire manuellement dans le Dashboard :
- CLI
- Dashboard
Exécutez la commande shell suivante à la racine de votre projet pour créer une application Auth0 et générer un fichier
.env :Cette commande va :
- Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
- Créer une Regular Web Application Auth0 configurée pour
http://localhost:3000 - Générer un fichier
.envcontenantAUTH0_DOMAIN,AUTH0_CLIENT_ID,AUTH0_CLIENT_SECRET,AUTH0_SESSION_ENCRYPTION_KEYetBASE_URL
4
Configurer le serveur Web Hono avec le middleware Auth0
Remplacez le modèle initial dans le fichier
index.ts par l’exemple suivant. Le code illustre une configuration sans réglage préalable, où les variables d’environnement sont lues automatiquement, ce qui crée un middleware auth0() avec des routes publiques par défaut et des routes protégées à l’aide de requiresAuth()../src/index.ts
5
Lancez votre application
Démarrez le serveur et ouvrez
http://localhost:3000.CheckpointVotre application Hono devrait être en cours d’exécution à l’adresse http://localhost:3000. La route
/ est publique. Si vous visitez /profile, vous devriez être redirigé vers la page de connexion (si vous n’êtes pas authentifié), puis obtenir les données de profil une fois l’authentification réussie.Dépannage
Problèmes courants
Problèmes courants
Incompatibilité de callback ou de redirection
Incompatibilité de callback ou de redirection
Cause : l’URL de callback configurée dans le Auth0 Dashboard ne correspond pas exactement à
APP_BASE_URL + la route de callback (p. ex., http://localhost:3000/auth/callback).Correctif :- Vérifiez la valeur de
APP_BASE_URLdans.env. - Assurez-vous que les Allowed Callback URLs dans le Auth0 Dashboard contiennent
http://localhost:3000/auth/callback. - Redémarrez le serveur de développement après les changements.
Déchiffrement de session / JWEDecryptionFailed
Déchiffrement de session / JWEDecryptionFailed
Cause :
AUTH0_SESSION_ENCRYPTION_KEY est absente ou trop courte, ou vous l’avez modifiée alors que des cookies provenant d’un ancien secret sont toujours présents.Correctif :- Assurez-vous que
AUTH0_SESSION_ENCRYPTION_KEYcontient au moins 32 caractères. - Supprimez les cookies du navigateur pour localhost après avoir modifié la clé.
- Redémarrez le serveur de développement.
Routes 404 (p. ex., /auth/login retourne 404)
Routes 404 (p. ex., /auth/login retourne 404)
Cause : le middleware n’est pas installé ou est placé après l’enregistrement des routes.Correctif :
- Assurez-vous que
app.use(auth0(...))s’exécute avant les routes qui dépendent de l’authentification. - Confirmez que le package est installé :
npm ls @auth0/auth0-hono.
Variables d’environnement manquantes en production
Variables d’environnement manquantes en production
Cause : la plateforme de déploiement ne fournit pas les variables d’environnement ou utilise des noms différents.Correctif :
- Mappez les variables d’environnement dans le tableau de bord de votre fournisseur d’hébergement aux noms utilisés dans ce Quickstart.
- Pour Cloudflare Workers, vérifiez que la gestion des sessions/cookies est compatible avec la plateforme.
Utilisation avancée
- Protection sélective : utilisez
app.use(auth0({ authRequired: false }))pour rendre les routes publiques par défaut etapp.use('/private/*', requiresAuth())pour protéger certains chemins précis. - Connexion silencieuse : utilisez le middleware
attemptSilentLogin()pour tenter une authentification silencieuse et offrir une meilleure expérience utilisateur. - Processus de connexion personnalisé : appelez
login({...})pour personnaliser les paramètres de requête transmis,redirectAfterLoginou les options de connexion silencieuse. - Gestion des jetons : le middleware rend les jetons d’accès et ID accessibles via la session; appliquez le principe du moindre privilège aux scopes et effectuez la rotation des jetons d’actualisation en toute sécurité.
Meilleures pratiques et sécurité
- Gardez les secrets hors du contrôle de version — utilisez des variables d’environnement.
- Utilisez une clé
AUTH0_SESSION_ENCRYPTION_KEYd’au moins 32 caractères. - Réglez le cookie
secureàtrueen production et définissez une politiquesameSiteappropriée. - Limitez les scopes des jetons; n’utilisez
audienceque lorsque vous demandez des jetons d’accès pour des API. - Interceptez
Auth0Errordansapp.onErrorpour gérer proprement les erreurs liées à l’authentification.