Usa IA para integrar Auth0
Usa IA para integrar Auth0
Si usas un asistente de codificación con IA como Claude Code, Cursor o GitHub Copilot, puedes añadir la autenticación de Auth0 automáticamente en cuestión de 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á
@auth0/nextjs-auth0, creará rutas de API y configurará las variables de entorno. Documentación completa de agent skills →Primeros pasos
Crear los archivos del proyecto
Cree todos los directorios y archivos necesarios para la integración con Auth0:
Configura tu aplicación de Auth0
A continuación, debes crear una nueva aplicación en tu tenant de Auth0 y agregar las variables de entorno a tu proyecto.Tienes tres opciones para configurar tu aplicación de Auth0: usar la herramienta Quick Setup (recomendado), ejecutar un comando de CLI o configurar manualmente a través del Dashboard:
- Configuración rápida (recomendada)
- CLI
- Dashboard
Crea una aplicación de Auth0 y copia el archivo
.env ya completado con los valores de configuración correctos.Crear la configuración de Auth0
Agrega el código del cliente de Auth0 en
src/lib/auth0.ts:src/lib/auth0.ts
Añadir proxy
Agrega el código del proxy a
src/proxy.ts:src/proxy.ts
Como estamos usando un directorio
src/, el archivo proxy.ts se crea dentro de src/. Si no usas un directorio src/, créalo en la raíz del proyecto.Este proxy monta automáticamente las siguientes rutas de autenticación:
/auth/login- Ruta de inicio de sesión/auth/logout- Ruta de cierre de sesión/auth/callback- Ruta de callback/auth/profile- Ruta del perfil de usuario/auth/access-token- Ruta del token de acceso/auth/backchannel-logout- Ruta de cierre de sesión por backchannel
Crear componentes de inicio de sesión, cierre de sesión y perfil
Agrega el código del componente a los archivos creados en el paso 3:
Actualiza el layout con Auth0Provider
Actualiza
src/app/layout.tsx para cargar la fuente Inter y envolver la aplicación con Auth0Provider:src/app/layout.tsx
En la v4, Auth0Provider es opcional. Solo lo necesitas si quieres pasar un usuario inicial durante el renderizado en el servidor para que esté disponible en el hook useUser().
Ejecuta tu aplicación
Tu aplicación estará disponible en http://localhost:3000. El SDK v4 de Auth0 configura automáticamente las rutas de autenticación en
/auth/* (no en /api/auth/*, como en la v3).Si el puerto 3000 ya está en uso, ejecuta: npm run dev -- --port 3001 y actualiza las URL de callback de tu aplicación de Auth0 a http://localhost:3001Punto de controlAhora deberías tener una página de inicio de sesión de Auth0 completamente funcional en ejecución en tu localhost
Solución de problemas
Error JWEDecryptionFailed
Error JWEDecryptionFailed
Si ves el error El secreto debe tener exactamente 32 bytes (64 caracteres hexadecimales). El error se produce cuando la aplicación intenta descifrar una cookie de sesión existente que se cifró con un secreto distinto.
JWEDecryptionFailed: decryption operation failed, suele deberse a que AUTH0_SECRET no es válido o a que hay una cookie de sesión antigua cifrada con un secreto distinto.Solución:- Genera un secreto nuevo con:
- Actualiza tu archivo
.env.local:
-
Borra las cookies del navegador para
localhost:3000:- Chrome/Edge: Presiona
F12→ pestaña Application → Cookies → elimina todas las cookies de localhost - Firefox: Presiona
F12→ pestaña Storage → Cookies → elimina todas las cookies de localhost - Safari: menú Develop → Show Web Inspector → pestaña Storage → Cookies → Delete all
- Chrome/Edge: Presiona
- Reinicia el servidor de desarrollo:
Error 404 en /auth/login
Error 404 en /auth/login
Si al hacer clic en iniciar sesión llegas a una página 404, revisa estos problemas habituales:
- Ubicación del proxy: Asegúrate de que
src/proxy.tsexista en la ubicación correcta - Código del proxy: Verifica que el proxy coincida con el código del paso 6
- Reinicia el servidor: Después de crear el archivo proxy, reinicia el servidor de desarrollo
- Comprueba las importaciones: Asegúrate de que la ruta
import { auth0 } from "./lib/auth0"sea correcta
Errores de módulo no encontrado
Errores de módulo no encontrado
Si ves “Cannot find module ’@/components/LoginButton’” o errores similares:
- Verifica que los archivos existan: Comprueba que se hayan creado todos los archivos del paso 3
- Revisa las rutas: Asegúrate de que los componentes estén en el directorio
src/components/ - Reinicia TypeScript: Presiona
Cmd+Shift+P(Mac) oCtrl+Shift+P(Windows) y ejecuta “TypeScript: Restart TS Server” - Comprueba las importaciones: Asegúrate de que estás usando
@/components/*(no~/components/*)
Uso avanzado
Cambios importantes en v4
Cambios importantes en v4
Este inicio rápido usa Auth0 Next.js SDK v4, que incorpora cambios importantes con respecto a v3:
- No se necesitan controladores de rutas dinámicas - El proxy monta automáticamente las rutas de autenticación
- Configuración simplificada del cliente -
new Auth0Client()lee automáticamente las variables de entorno - Nuevas rutas - Las rutas están en
/auth/*en lugar de/api/auth/* - Proxy obligatorio - Toda la funcionalidad de autenticación pasa por
proxy.ts - Usa etiquetas
<a>- La navegación debe usar<a href="/auth/login">en lugar de botones con onClick
Rutas de autenticación
El SDK monta automáticamente estas rutas a través del proxy:| Ruta | Propósito |
|---|---|
/auth/login | Iniciar sesión |
/auth/logout | Cerrar la sesión del usuario |
/auth/callback | Gestionar el callback de Auth0 |
/auth/profile | Obtener el perfil del usuario |
/auth/access-token | Obtener el token de acceso |
/auth/backchannel-logout | Gestionar el cierre de sesión por canal secundario |
Si ves errores 404 en estas rutas, asegúrate de que:
- El archivo
proxy.tsesté en la ubicación correcta (la raíz del proyecto o dentro desrc/si usas un directoriosrc/) - El proxy esté configurado correctamente con el patrón matcher que se muestra en el paso 6
- El servidor de desarrollo se haya reiniciado después de crear el archivo del proxy
Autenticación del lado del servidor
Autenticación del lado del servidor
Auth0 Next.js SDK v4 admite tanto los patrones de App Router como los de Pages Router. Estos son algunos patrones habituales del lado del servidor:
- App Router - Componente del servidor
- App Router - Ruta de API
- Pages Router - Página
app/protected/page.tsx
Autenticación del lado del cliente
Autenticación del lado del cliente
Para gestionar el estado de autenticación del lado del cliente, usa el hook
useUser:components/UserProfile.tsx
Protección de rutas de API
Protección de rutas de API
Para proteger rutas de API, usa el método
withApiAuthRequired:app/api/protected/route.ts
Uso de tokens de Auth0 con backends de terceros
Uso de tokens de Auth0 con backends de terceros
Si usas un servicio backend de terceros (como Convex, Supabase o Firebase) que requiere tokens de autenticación de Auth0, tendrás que pasar el token de acceso desde tu aplicación Next.js al cliente del backend.En el cliente:
Obtención del Token de acceso
En el servidor (App Router):app/api/token/route.ts
lib/convex-client.ts
Configuración del backend
La mayoría de los servicios de terceros necesitan tu dominio y audiencia de Auth0 para verificar los tokens. En la configuración del backend:convex/auth.config.ts
Asegúrate de que tu aplicación de Auth0 esté configurada con una audiencia de API si tu backend la requiere. Puedes configurarla en Auth0 Dashboard, en Applications → APIs, o agregar
AUTH0_AUDIENCE a tu .env.local y configurar el SDK en consecuencia.Solución de problemas con tokens
Sictx.auth.getUserIdentity() devuelve null en tu backend:- Verifica que se esté enviando el token: revisa la pestaña Network de las herramientas de desarrollo del navegador para confirmar que el token se incluya en las solicitudes
- Comprueba el formato del token: asegúrate de enviar el
accessToken, no elidToken - Verifica la configuración del backend: confirma que tu backend tenga el dominio de Auth0 y el ID de cliente correctos
- Comprueba la audiencia: si usas una API de Auth0, asegúrate de que
AUTH0_AUDIENCEesté configurado y coincida con el identificador de tu API - Inspecciona los claims del token: decodifica tu JWT en jwt.io para verificar que contiene los claims esperados