Saltar al contenido principal

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 →
Requisitos previos: Antes de comenzar, asegúrate de tener instalado lo siguiente:Verifica la instalación: node --version && npm --version

Primeros pasos

Este inicio rápido muestra cómo añadir autenticación de Auth0 a una aplicación Next.js 16. Crearás una aplicación web full-stack con renderizado del lado del servidor, inicio de sesión seguro y rutas protegidas mediante el SDK de Auth0 Next.js v4.
1

Cree un nuevo proyecto

Crea un proyecto nuevo de Next.js para este inicio rápido
Abra el proyecto
2

Instala el SDK de Auth0 para Next.js

shellscript npm install @auth0/nextjs-auth0
3

Crear los archivos del proyecto

Cree todos los directorios y archivos necesarios para la integración con Auth0:
4

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:
Crea una aplicación de Auth0 y copia el archivo .env ya completado con los valores de configuración correctos.
5

Crear la configuración de Auth0

Agrega el código del cliente de Auth0 en src/lib/auth0.ts:
src/lib/auth0.ts
6

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
7

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:
8

Actualiza tu página principal

Reemplaza src/app/page.tsx con:
src/app/page.tsx
9

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().
10

Configura Tailwind CSS

Reemplaza el contenido de src/app/globals.css con:
src/app/globals.css
11

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:3001
Punto 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

Si ves el error 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:
  1. Genera un secreto nuevo con:
  1. Actualiza tu archivo .env.local:
  1. 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
  2. Reinicia el servidor de desarrollo:
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.
Si al hacer clic en iniciar sesión llegas a una página 404, revisa estos problemas habituales:
  1. Ubicación del proxy: Asegúrate de que src/proxy.ts exista en la ubicación correcta
  2. Código del proxy: Verifica que el proxy coincida con el código del paso 6
  3. Reinicia el servidor: Después de crear el archivo proxy, reinicia el servidor de desarrollo
  4. Comprueba las importaciones: Asegúrate de que la ruta import { auth0 } from "./lib/auth0" sea correcta
Si ves “Cannot find module ’@/components/LoginButton’” o errores similares:
  1. Verifica que los archivos existan: Comprueba que se hayan creado todos los archivos del paso 3
  2. Revisa las rutas: Asegúrate de que los componentes estén en el directorio src/components/
  3. Reinicia TypeScript: Presiona Cmd+Shift+P (Mac) o Ctrl+Shift+P (Windows) y ejecuta “TypeScript: Restart TS Server”
  4. Comprueba las importaciones: Asegúrate de que estás usando @/components/* (no ~/components/*)

Uso avanzado

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:
Si ves errores 404 en estas rutas, asegúrate de que:
  1. El archivo proxy.ts esté en la ubicación correcta (la raíz del proyecto o dentro de src/ si usas un directorio src/)
  2. El proxy esté configurado correctamente con el patrón matcher que se muestra en el paso 6
  3. El servidor de desarrollo se haya reiniciado después de crear el archivo del proxy
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/protected/page.tsx
Para gestionar el estado de autenticación del lado del cliente, usa el hook useUser:
components/UserProfile.tsx
Para proteger rutas de API, usa el método withApiAuthRequired:
app/api/protected/route.ts
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.

Obtención del Token de acceso

En el servidor (App Router):
app/api/token/route.ts
En el cliente:
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

Si ctx.auth.getUserIdentity() devuelve null en tu backend:
  1. 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
  2. Comprueba el formato del token: asegúrate de enviar el accessToken, no el idToken
  3. Verifica la configuración del backend: confirma que tu backend tenga el dominio de Auth0 y el ID de cliente correctos
  4. Comprueba la audiencia: si usas una API de Auth0, asegúrate de que AUTH0_AUDIENCE esté configurado y coincida con el identificador de tu API
  5. Inspecciona los claims del token: decodifica tu JWT en jwt.io para verificar que contiene los claims esperados