Esta guía de inicio rápido se encuentra actualmente en beta. ¡Nos encantaría recibir tus comentarios!
Requisitos previos:
- Node.js 20 LTS o posterior
- npm 10+ o yarn 1.22+ o pnpm 8+
- Opcional: jq: para configurar Auth0 CLI y openssl para generar secretos seguros
- Los proyectos de Hono deben usar Hono >= 3.x (peer dependency)
Primeros pasos
@auth0/auth0-hono. Sigue los patrones recomendados del repositorio: configuración basada en variables de entorno, middleware app.use(auth0(...)) y requiresAuth() para aplicar protección de forma selectiva.
Crear una nueva aplicación de Hono
Cree una nueva aplicación de Hono con la utilidad Selecciona la plantilla
create-hono.nodejsInstala las dependencias
Instala el middleware de Auth0.Esta guía de inicio rápido utiliza el paquete Como alternativa, si prefiere no agregar una dependencia, puede cargar un archivo de entorno al iniciar el proceso con la marca
dotenv para cargar variables de entorno desde un archivo .env.Para instalar dotenv localmente:--env-file de Node, lo que le permite omitir la instalación y la importación de dotenv.Modifique el script start en package.json para que quede así:Crear una aplicación en Auth0
Cree una aplicación de Auth0 en su inquilino de Auth0 (Regular Web Application) y guarde el dominio, el ID de cliente y el Secreto del cliente en las variables de entorno de su proyecto.
Puede hacerlo automáticamente ejecutando un comando de la CLI o manualmente desde el Auth0 Dashboard:
- CLI
- Dashboard
Ejecute el siguiente comando de shell en el directorio raíz de su proyecto para crear una aplicación de Auth0 y generar un archivo
.env:Use el archivo .env generado o actualice los valores manualmente según sea necesario.Configura el servidor web de Hono con el middleware de Auth0
Reemplace la plantilla inicial del archivo
index.ts por el siguiente ejemplo. El código muestra una configuración sin ajustes previos, en la que las variables de entorno se leen automáticamente, creando un middleware auth0() con rutas públicas de forma predeterminada y rutas protegidas mediante requiresAuth()../src/index.ts
Punto de controlTu aplicación Hono debería estar ejecutándose en http://localhost:3000. La ruta
/ es pública. Al acceder a /profile, debería redirigirte al inicio de sesión (si no estás autenticado) y, tras autenticarte correctamente, devolver los datos del perfil.Solución de problemas
Problemas comunes
Problemas comunes
El callback o la redirección no coinciden
El callback o la redirección no coinciden
Causa: La URL de callback configurada en el Auth0 Dashboard no coincide exactamente con
APP_BASE_URL + la ruta de callback (por ejemplo, http://localhost:3000/auth/callback).Solución:- Verifique el valor de
APP_BASE_URLen.env. - Asegúrese de que Allowed Callback URLs en Auth0 Dashboard incluya
http://localhost:3000/auth/callback. - Reinicie el servidor de desarrollo después de realizar los cambios.
Descifrado de sesión / JWEDecryptionFailed
Descifrado de sesión / JWEDecryptionFailed
Causa: Falta
AUTH0_SESSION_ENCRYPTION_KEY, es demasiado corta o la cambió mientras aún quedaban cookies de una clave anterior.Solución:- Asegúrese de que
AUTH0_SESSION_ENCRYPTION_KEYtenga al menos 32 caracteres. - Borre las cookies del navegador para localhost después de cambiar la clave.
- Reinicie el servidor de desarrollo.
Rutas 404 (por ejemplo, /auth/login devuelve 404)
Rutas 404 (por ejemplo, /auth/login devuelve 404)
Causa: El middleware no está instalado o se colocó después del registro de rutas.Solución:
- Asegúrese de que
app.use(auth0(...))se ejecute antes de las rutas que dependen de la autenticación. - Confirme que el paquete esté instalado:
npm ls @auth0/auth0-hono.
Faltan variables de entorno en producción
Faltan variables de entorno en producción
Causa: La plataforma de implementación no proporciona variables de entorno o usa nombres distintos.Solución:
- Asigne en el panel de su proveedor de hosting las variables de entorno a los nombres usados en esta guía de inicio rápido.
- En Cloudflare Workers, verifique que el manejo de sesiones y cookies sea compatible con la plataforma.
Uso avanzado
- Protección selectiva: usa
app.use(auth0({ authRequired: false }))para que las rutas sean públicas de forma predeterminada yapp.use('/private/*', requiresAuth())para proteger rutas concretas. - Inicio de sesión silencioso: usa el middleware
attemptSilentLogin()para intentar una autenticación silenciosa y mejorar la experiencia de usuario. - Flujo de inicio de sesión personalizado: llama a
login({...})para personalizar los parámetros de consulta que se reenvían,redirectAfterLogino las opciones de inicio de sesión silencioso. - Gestión de tokens: el middleware expone tokens de acceso y tokens de ID a través de la sesión; sigue el principio de privilegio mínimo para los alcances y rota los tokens de actualización de forma segura.
Prácticas recomendadas y seguridad
- Mantenga los secretos fuera del control de versiones; use variables de entorno.
- Use una
AUTH0_SESSION_ENCRYPTION_KEYde 32 caracteres o más. - Establezca la cookie
secureentrueen producción y configure una políticasameSiteadecuada. - Limite los alcances del token; use audience solo cuando solicite tokens de acceso para APIs.
- Capture
Auth0Errorenapp.onErrorpara manejar correctamente los errores específicos de autenticación.