Ce guide de démarrage rapide est actuellement en bêta. Nous aimerions connaître vos commentaires!
Prérequis :
- Node.js 20 LTS ou version ultérieure
- npm 10+ ou yarn 1.22+ ou pnpm 8+
- Facultatif : jq - pour configurer l’interface de ligne de commande Auth0 et openssl pour générer des secrets sécurisés
- Les projets Hono doivent utiliser Hono >= 3.x (dépendance pair)
Pour commencer
@auth0/auth0-hono. Il suit les pratiques recommandées du dépôt : configuration basée sur l’environnement, middleware app.use(auth0(...)) et requiresAuth() pour une protection sélective.
Créer une nouvelle application Hono
Créez une nouvelle application Hono à l’aide de l’utilitaire create-hono.Sélectionnez le gabarit
nodejsInstallez 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 d’importer dotenv.Modifiez le script start dans package.json comme suit :Créer une application Auth0
Créez une application Auth0 dans votre locataire Auth0 (Regular Web Application) et consignez le Domaine, l’ID client et le Secret client dans les variables d’environnement de votre projet.
Vous pouvez le faire automatiquement en exécutant une commande CLI, ou manuellement dans l’Auth0 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 :Utilisez le fichier .env généré ou mettez les valeurs à jour manuellement au besoin.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 intervention, où les variables d’environnement sont lues automatiquement, créant un middleware auth0() avec des routes publiques par défaut et des routes protégées au moyen de requiresAuth()../src/index.ts
VérificationVotre application Hono devrait s’exécuter à l’adresse http://localhost:3000. La route
/ est publique. Si vous accédez à /profile, vous devriez être redirigé vers la page de connexion (si vous n’êtes pas authentifié), puis voir s’afficher les données du profil une fois l’authentification réussie.Dépannage
Problèmes courants
Problèmes courants
Incompatibilité du callback ou de la redirection
Incompatibilité du callback ou de la redirection
Cause : l’URL de rappel configurée dans l’Auth0 Dashboard ne correspond pas exactement à
APP_BASE_URL + la route de rappel (p. ex., http://localhost:3000/auth/callback).Correctif :- Vérifiez la valeur de
APP_BASE_URLdans.env. - Assurez-vous que Allowed Callback URLs dans l’Auth0 Dashboard contiennent
http://localhost:3000/auth/callback. - Redémarrez le serveur de développement après les modifications.
Déchiffrement de session / JWEDecryptionFailed
Déchiffrement de session / JWEDecryptionFailed
Cause :
AUTH0_SESSION_ENCRYPTION_KEY est manquante ou trop courte, ou vous l’avez modifiée alors que des témoins associés à un ancien secret sont encore présents.Correctif :- Assurez-vous que
AUTH0_SESSION_ENCRYPTION_KEYcontient au moins 32 caractères. - Effacez les témoins 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 il 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 :
- Faites correspondre, dans le tableau de bord de votre fournisseur d’hébergement, les variables d’environnement aux noms utilisés dans ce guide de démarrage rapide.
- Pour Cloudflare Workers, vérifiez que la gestion des sessions et des témoins 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 des chemins spécifiques. - Connexion silencieuse : utilisez le middleware
attemptSilentLogin()pour tenter une authentification silencieuse et améliorer l’expérience utilisateur. - Flux 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 expose les jetons d’accès et d’identité via la session ; appliquez le principe du moindre privilège aux scopes et effectuez la rotation des jetons d’actualisation de façon sécuritaire.
Bonnes pratiques et sécurité
- Ne stockez pas les secrets dans le contrôle de version — utilisez des variables d’environnement.
- Utilisez une clé
AUTH0_SESSION_ENCRYPTION_KEYd’au moins 32 caractères. - Définissez le paramètre
securedu cookie àtrueen production et utilisez une stratégiesameSiteappropriée. - Limitez les scopes des jetons; utilisez audience uniquement lorsque vous demandez des jetons d’accès pour des API.
- Capturez
Auth0Errordansapp.onErrorpour gérer proprement les erreurs d’authentification.