Skip to main content
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

Ce Quickstart présente la façon minimale recommandée de sécuriser une application Hono à l’aide de @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 nodejs
2

Installer les dépendances

Installez le middleware Auth0.
Ce guide de démarrage rapide utilise le module dotenv pour charger les variables d’environnement à partir d’un fichier .env.Pour installer dotenv localement :
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 --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 :
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 :
  1. Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
  2. Créer une Regular Web Application Auth0 configurée pour http://localhost:3000
  3. Générer un fichier .env contenant AUTH0_DOMAIN, AUTH0_CLIENT_ID, AUTH0_CLIENT_SECRET, AUTH0_SESSION_ENCRYPTION_KEY et BASE_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

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 :
  1. Vérifiez la valeur de APP_BASE_URL dans .env.
  2. Assurez-vous que les Allowed Callback URLs dans le Auth0 Dashboard contiennent http://localhost:3000/auth/callback.
  3. Redémarrez le serveur de développement après les changements.
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_KEY contient 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.
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.
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 et app.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, redirectAfterLogin ou 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_KEY d’au moins 32 caractères.
  • Réglez le cookie secure à true en production et définissez une politique sameSite appropriée.
  • Limitez les scopes des jetons; n’utilisez audience que lorsque vous demandez des jetons d’accès pour des API.
  • Interceptez Auth0Error dans app.onError pour gérer proprement les erreurs liées à l’authentification.