Skip to main content

Use la IA para integrar Auth0

Si usa un asistente de programación con IA como Claude Code, Cursor o GitHub Copilot, puede añadir automáticamente la autenticación de Auth0 a su API en cuestión de minutos mediante agent skills.Instalar:
Luego, pídale a su asistente de IA:
Su asistente de IA creará automáticamente su API de Auth0, recuperará las credenciales, instalará @auth0/auth0-fastify-api, configurará el plugin y protegerá los endpoints de su API con validación de JWT. Documentación completa de agent skills →
Requisitos previos: Antes de comenzar, asegúrese de tener instalado lo siguiente:Verifique la instalación: node --version && npm --versionCompatibilidad de versiones de Fastify: Esta guía de inicio rápido funciona con Fastify 5.x y versiones posteriores.

Primeros pasos

Esta guía de inicio rápido muestra cómo proteger los endpoints de una API de Fastify con tokens de acceso JWT. Crearás una API segura que valida los tokens de acceso de Auth0 y concede acceso a recursos protegidos.
1

Crear un proyecto nuevo

Crea un directorio nuevo para tu API de Fastify e inicializa un proyecto de Node.js.
Inicializar el proyecto
Cree la estructura del proyecto
2

Instala el SDK de la API de Auth0 para Fastify

Instale las dependencias requeridas
Actualiza tu package.json para agregar scripts de inicio:
package.json
3

Configura tu API de Auth0

A continuación, debes crear una nueva API en tu inquilino de Auth0 y agregar las variables de entorno a tu proyecto.Tienes dos opciones para configurar tu API de Auth0: usar un comando de la CLI o configurarla manualmente desde el Dashboard:
Ejecuta el siguiente comando en el directorio raíz de tu proyecto para crear una API de Auth0:
Después de crearla, copia los valores de Identifier y dominio, y luego crea tu archivo .env:
.env
Este comando hará lo siguiente:
  1. Comprobará si has iniciado sesión (y te pedirá que lo hagas si es necesario)
  2. Creará una API de Auth0 con el identificador especificado
  3. Mostrará los detalles de la API, incluidos el dominio y el identificador
Verifica que tu archivo .env exista: cat .env (Mac/Linux) o type .env (Windows)
4

Configurar el plugin de la API de Auth0

Cree su servidor Fastify y registre el complemento de la API de Auth0:
server.js
Qué hace esto:
  • Registra el complemento de la API de Auth0 con tu dominio de Auth0 y la audiencia de la API
  • Configura la validación de JWT para las solicitudes entrantes
  • Pone el preHandler requireAuth() a disposición para proteger rutas
5

Crear rutas de API

Agrega rutas públicas y protegidas a tu archivo server.js:
server.js
Puntos clave:
  • Las rutas públicas no requieren autenticación
  • Las rutas protegidas usan preHandler: fastify.requireAuth() para exigir un JWT válido
  • request.user contiene las claims del JWT decodificado para las solicitudes autenticadas
  • La claim sub contiene el identificador único del usuario
6

Inicia tu API

Inicie el servidor de desarrollo:
Tu API ya se está ejecutando en http://localhost:3001.
La opción --watch en Node.js 20+ reinicia automáticamente el servidor cuando cambian los archivos.
7

Pruebe su API

Pruebe el endpoint público (no requiere autenticación):
Deberías ver:
Pruebe el endpoint protegido sin un token (debería fallar):
Debería aparecer un error 401 Unauthorized:
Para probar con un token válido, necesitas:
  1. Crear una aplicación cliente (web o móvil) que autentique usuarios
  2. Configurar el cliente para solicitar un token de acceso para tu API (mediante el parámetro audience)
  3. Usar ese token de acceso en el encabezado Authorization
Ejemplo con un token:
Punto de controlAhora deberías tener una API protegida. Tu API:
  1. Acepta solicitudes a endpoints públicos sin autenticación
  2. Rechaza solicitudes a endpoints protegidos sin un token válido
  3. Valida los tokens JWT con tu dominio de Auth0 y la audiencia
  4. Proporciona información del usuario a partir de los claims del token mediante request.user

Uso avanzado

Amplía la interfaz Token para añadir seguridad de tipos a los claims personalizados de tus tokens de acceso:
server.ts
Ahora TypeScript reconocerá tus claims personalizados:
server.ts
Los claims personalizados deben usar URL con espacio de nombres (por ejemplo, https://myapp.com/roles), a menos que sean claims estándar de OIDC. Más información sobre los claims personalizados.
Comprueba permisos específicos en el token de acceso:
server.js
Los permisos deben configurarse en la configuración de la API de Auth0 y concederse a los clientes. Más información sobre los permisos de API.
Implemente el control de acceso basado en roles mediante claims personalizados:
server.js
Los roles deben agregarse a los tokens mediante Auth0 Actions. Aprenda a agregar roles a los tokens.
Habilite CORS para permitir solicitudes desde aplicaciones web:
server.js
Para producción, especifique los orígenes exactos:
server.js
Agregue un manejo de errores completo para los errores de autenticación:
server.js
Protege tu API frente a abusos mediante la limitación de tasa:
server.js

Solución de problemas

”No authorization token was found”

Problema: La API no puede encontrar el token de acceso en la solicitud.Soluciones:
  1. Asegúrate de que la cabecera Authorization esté presente: Authorization: Bearer YOUR_TOKEN
  2. Comprueba que “Bearer” esté incluido antes del token
  3. Verifica que el token no haya expirado

”Invalid token” o “jwt malformed”

Problema: El formato del token no es válido.Soluciones:
  1. Asegúrate de que estás usando un token de acceso, no un token de ID
  2. El token debe obtenerse con el parámetro audience de tu API
  3. Comprueba que el token sea un JWT válido (debe tener tres partes separadas por puntos)

“Invalid signature”

Problema: La firma del token no coincide.Soluciones:
  1. Verifica que AUTH0_DOMAIN coincida con el dominio que emitió el token
  2. Asegúrate de usar el algoritmo de firma RS256 (predeterminado)
  3. Comprueba que el token no se haya modificado

”Invalid audience”

Problema: La audiencia del token no coincide con tu API.Solución: La aplicación cliente debe solicitar un token con la audiencia correcta:

Errores de CORS en el navegador

Problema: El navegador bloquea las solicitudes a la API debido a la política de CORS.Solución: Instala y configura @fastify/cors:

Próximos pasos

Ahora que tiene una API protegida, le recomendamos explorar lo siguiente:

Recursos