Saltar al contenido principal

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)
Compatibilidad de versiones de Express: Este inicio rápido funciona con Express 4.17.0 y versiones posteriores.

Primeros pasos

En esta guía se muestra cómo integrar Auth0, añadir autenticación y mostrar la información del perfil de usuario en una aplicación web de Express.js mediante el SDK express-openid-connect.

1. Cree un proyecto nuevo

Cree un nuevo directorio para su aplicación Express e inicialice un proyecto de Node.js.
Crea la estructura del proyecto:

2. Instala el SDK de Auth0 para Express

Instala express-openid-connect junto con Express y dotenv para gestionar las variables de entorno.
Para el desarrollo, instala nodemon para que tu servidor se reinicie automáticamente cuando haya cambios en los archivos:
Actualiza tu package.json para añadir scripts de inicio: 📁 package.json

3. Configura tu aplicación de Auth0

A continuación, debes crear una aplicación nueva en tu inquilino de Auth0 y agregar las variables de entorno a tu proyecto. Puedes hacerlo automáticamente ejecutando un comando de la CLI o manualmente desde el 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 .env:macOS / Linux:
Windows (PowerShell):
Si aún no instalaste CLI de Auth0, ejecuta:
Luego, autentícate con auth0 login.

4. Configura el middleware

Agrega el middleware de Auth0 a tu aplicación de Express. El middleware auth() se encarga de gestionar las sesiones y crea automáticamente las rutas /login, /logout y /callback. 📁 index.js
Qué hace esto:
  • authRequired: false permite que tanto los usuarios autenticados como los no autenticados accedan a las rutas de forma predeterminada
  • auth0Logout: true garantiza que los usuarios cierren sesión tanto en Auth0 como en tu aplicación
  • El middleware proporciona automáticamente las rutas /login, /logout y /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

Ahora agregue rutas para mostrar enlaces para iniciar y cerrar sesión, y una página de perfil protegida. 📁 index.js
Puntos clave:
  • El middleware requiresAuth() protege la ruta /profile: los usuarios no autenticados se redirigen al inicio de sesión
  • req.oidc.user contiene la información del perfil del usuario autenticado
  • req.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

Inicia el servidor de desarrollo:
Abre http://localhost:3000 en tu navegador.
VerificaciónAhora deberías tener una página de Login de Auth0 totalmente funcional. Cuando:
  1. Haces clic en “Login” - se te redirige a la página de Universal Login de Auth0
  2. Completas la autenticación - se te redirige de nuevo a tu aplicación
  3. Visitas “/profile” - ves tu información de usuario
  4. Haces clic en “Logout” - cierras sesión tanto en tu aplicación como en Auth0

Uso avanzado

Utilice el middleware requiresAuth() para proteger las rutas individuales que requieren autenticación:
También puede proteger todas las rutas dentro de una ruta específica con el Router de Express:
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 .env:
Luego, usa el token de acceso para llamar a la API:
Para obtener tokens de actualización, añade offline_access a tu scope:
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.
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
Agrega un manejo adecuado de los errores de autenticación:

Solución de problemas

Error “Invalid state” tras iniciar sesión

Problema: El valor de state no coincide entre la solicitud de autenticación y el callback.Soluciones:
  1. Asegúrate de usar HTTPS en producción
  2. Comprueba que las cookies se estén estableciendo correctamente (que el navegador no las bloquee)
  3. Verifica que la URL de callback coincida exactamente con la configurada en Auth0 Dashboard

”req.oidc is undefined”

Problema: El middleware auth() 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:
  1. Ve a tu Auth0 Dashboard → Applications → Your App → Settings
  2. Añade http://localhost:3000 (o tu URL de producción) a Allowed Callback URLs
  3. La URL debe coincidir exactamente (incluidas las barras finales)

Las variables de entorno no se cargan

Problema: Los valores de configuración son undefined.Solución:
  1. Asegúrate de que require('dotenv').config() esté al principio de tu archivo de entrada
  2. Verifica que el archivo .env esté en el directorio raíz
  3. Comprueba si hay errores tipográficos en los nombres de las variables

Siguientes pasos

Ahora que ya tienes la autenticación en funcionamiento, considera explorar lo siguiente:

Recursos