Usa IA para integrar Auth0
Usa IA para integrar Auth0
Si usas un asistente de programación con IA como Claude Code, Cursor o GitHub Copilot, puedes añadir la autenticación de Auth0 automáticamente en minutos con agent skills.Instalar:Luego, pídele a tu asistente de IA:Tu asistente de IA creará automáticamente tu aplicación de Auth0, obtendrá las credenciales, instalará
express-openid-connect, configurará el middleware y preparará tus rutas. Documentación completa de agent skills →Requisitos previos: Antes de comenzar, asegúrate de tener instalado lo siguiente:
- Node.js 18 LTS o una versión posterior
- npm 10+ o yarn 1.22+
- jq - Requerido para configurar la CLI de Auth0 (opcional)
Primeros pasos
express-openid-connect.
1. Cree un proyecto nuevo
2. Instala el SDK de Auth0 para Express
express-openid-connect junto con Express y dotenv para gestionar las variables de entorno.
package.json para añadir scripts de inicio:
📁 package.json
3. Configura tu aplicación de Auth0
- CLI
- Dashboard
Ejecuta el siguiente comando de shell en el directorio raíz de tu proyecto para crear una aplicación de Auth0 y generar tu archivo Windows (PowerShell):
.env:macOS / Linux:Si aún no instalaste CLI de Auth0, ejecuta:Luego, autentícate con
auth0 login.4. Configura el middleware
auth() se encarga de gestionar las sesiones y crea automáticamente las rutas /login, /logout y /callback.
📁 index.js
authRequired: falsepermite que tanto los usuarios autenticados como los no autenticados accedan a las rutas de forma predeterminadaauth0Logout: truegarantiza que los usuarios cierren sesión tanto en Auth0 como en tu aplicación- El middleware proporciona automáticamente las rutas
/login,/logouty/callback - La sesión del usuario se almacena en una cookie cifrada
5. Cree rutas de inicio de sesión, cierre de sesión y perfil
- El middleware
requiresAuth()protege la ruta/profile: los usuarios no autenticados se redirigen al inicio de sesión req.oidc.usercontiene la información del perfil del usuario autenticadoreq.oidc.isAuthenticated()devuelve un valor booleano que indica si el usuario ha iniciado sesión- El middleware
auth()crea automáticamente las rutas de inicio y cierre de sesión (/login,/logout)
6. Ejecuta la aplicación
VerificaciónAhora deberías tener una página de Login de Auth0 totalmente funcional. Cuando:
- Haces clic en “Login” - se te redirige a la página de Universal Login de Auth0
- Completas la autenticación - se te redirige de nuevo a tu aplicación
- Visitas “/profile” - ves tu información de usuario
- Haces clic en “Logout” - cierras sesión tanto en tu aplicación como en Auth0
Uso avanzado
Proteger rutas específicas con requiresAuth()
Proteger rutas específicas con requiresAuth()
Utilice el middleware También puede proteger todas las rutas dentro de una ruta específica con el Router de Express:
requiresAuth() para proteger las rutas individuales que requieren autenticación:Llamar a APIs protegidas con tokens de acceso
Llamar a APIs protegidas con tokens de acceso
Para llamar a APIs externas que requieren un token de acceso, configure el SDK para solicitar uno:📁 index.js (configuración actualizada)Agrega esto a tu archivo Luego, usa el token de acceso para llamar a la API:
.env:Para obtener tokens de actualización, añade
offline_access a tu scope:Uso de la autorización basada en claims
Uso de la autorización basada en claims
Proteja las rutas según los claim del usuario (roles, permisos, etc.):
Los claims como
role deben agregarse a los tokens mediante Rules o Actions de Auth0. Obtén más información sobre cómo agregar claims personalizados.Almacén de sesiones personalizado (Redis)
Almacén de sesiones personalizado (Redis)
Para entornos de producción o si ejecuta varias instancias del servidor, use un almacén de sesiones personalizado:Cuándo usar un almacén de sesiones personalizado:
- Ejecuta varias instancias del servidor (balanceo de carga)
- Los datos de la sesión superan el límite de tamaño de las cookies (~4 KB)
- Necesita persistencia de la sesión entre reinicios del servidor
- Usa Back-Channel Logout
Gestión de errores
Gestión de errores
Agrega un manejo adecuado de los errores de autenticación:
Solución de problemas
Problemas comunes y soluciones
Problemas comunes y soluciones
Error “Invalid state” tras iniciar sesión
Problema: El valor destate no coincide entre la solicitud de autenticación y el callback.Soluciones:- Asegúrate de usar HTTPS en producción
- Comprueba que las cookies se estén estableciendo correctamente (que el navegador no las bloquee)
- Verifica que la URL de callback coincida exactamente con la configurada en Auth0 Dashboard
”req.oidc is undefined”
Problema: El middlewareauth() no se aplica antes de acceder a req.oidc.Solución: Asegúrate de que se llame a app.use(auth(config)) antes de cualquier ruta que acceda a req.oidc:Sesión demasiado grande / errores de cookies
Problema: Los datos de la sesión del usuario superan los límites de tamaño de las cookies.Solución: Usa un almacén de sesiones personalizado, como Redis:La URL de callback no coincide
Problema: Error “Callback URL mismatch” de Auth0.Solución:- Ve a tu Auth0 Dashboard → Applications → Your App → Settings
- Añade
http://localhost:3000(o tu URL de producción) a Allowed Callback URLs - La URL debe coincidir exactamente (incluidas las barras finales)
Las variables de entorno no se cargan
Problema: Los valores de configuración sonundefined.Solución:- Asegúrate de que
require('dotenv').config()esté al principio de tu archivo de entrada - Verifica que el archivo
.envesté en el directorio raíz - Comprueba si hay errores tipográficos en los nombres de las variables
Siguientes pasos
- Agregar autorización - Implementa el control de acceso basado en roles
- Llamar a API protegidas - Usa tokens de acceso para llamar a tus API de backend
- Personalizar Universal Login - Personaliza la experiencia de inicio de sesión con tu marca
- Agregar conexiones sociales - Habilita Google, GitHub y otros inicios de sesión con cuentas sociales
- Implementar MFA - Agrega autenticación multifactor
Recursos
- express-openid-connect GitHub - Código fuente y Ejemplos
- Documentación de la API - Referencia completa de la API
- Aplicación de ejemplo de Auth0 Express - Aplicación de ejemplo completa
- Comunidad de Auth0 - Obtén ayuda de la comunidad