Saltar al contenido principal

Prompt de IA

¿Usas IA para integrar Auth0? Añade este prompt a Cursor, Windsurf, Copilot, Claude Code o tu IDE con IA favorito para acelerar el desarrollo.
Este inicio rápido requiere:
  • Python 3.9 o superior
  • El gestor de paquetes pip
  • jq: obligatorio para configurar Auth0 CLI
  • Conocimientos de FastAPI
Si aún no lo has hecho, regístrate para obtener una cuenta gratuita de Auth0 y poder seguir esta guía.
Esta guía muestra cómo integrar Auth0 con una API de FastAPI para añadir autenticación y proteger tus endpoints.
1

Crea un nuevo proyecto de FastAPI

Cree un directorio nuevo para su proyecto de FastAPI y configure un entorno virtual.
2

Instala las dependencias

Cree un archivo requirements.txt con las siguientes dependencias:
requirements.txt
Instala las dependencias:
3

Configura tu API en Auth0

Necesitarás crear una API de Auth0 para representar tu aplicación FastAPI.
  1. Ve a Applications > APIs en el Auth0 Dashboard
  2. Haz clic en Create API
  3. Indica un Name para tu API (por ejemplo, “My FastAPI API”)
  4. Configura el Identifier con el identificador de tu API (por ejemplo, https://my-fastapi-api)
  5. Deja el Signing Algorithm como RS256
  6. Haz clic en Create
El Identifier es un identificador único para tu API. Se recomienda usar una URL, pero no tiene que ser una URL de acceso público; Auth0 no hará llamadas a ella. Este valor no se puede modificar después.
Toma nota de los valores de dominio e Identifier (Audiencia). Los necesitarás en el siguiente paso.
4

Definir permisos de API

Los permisos (también conocidos como alcances) le permiten definir cómo se puede acceder a su API. Puede crear permisos para su API en el Auth0 Dashboard.
  1. En el Auth0 Dashboard, vaya a la pestaña Permissions de su API.
  2. Agregue los siguientes permisos:
    • read:messages con la descripción “Leer mensajes”
    • write:messages con la descripción “Escribir mensajes”
Estos permisos se usarán para controlar el acceso a endpoints específicos de su API.
5

Configurar el cliente de Auth0

Crea un archivo .env en el directorio raíz de tu proyecto para almacenar la configuración de Auth0:
.env
Reemplaza YOUR_AUTH0_DOMAIN por tu dominio de Auth0 (por ejemplo, dev-abc123.us.auth0.com) y YOUR_API_IDENTIFIER por el identificador que configuraste al crear tu API.
Nunca subas tu archivo .env al control de versiones. Agrégalo a tu archivo .gitignore para mantener tus credenciales seguras.
Ahora crea un archivo app.py e inicializa tu aplicación de FastAPI con Auth0:
app.py
6

Crear rutas protegidas

Agrega las siguientes rutas a tu archivo app.py. Estas rutas muestran distintos niveles de control de acceso:
app.py
El método require_auth() valida el token de acceso enviado en el encabezado Authorization. Cuando se invoca con el parámetro scopes, también verifica que el token contenga el permiso especificado.
7

Ejecuta la API

Inicie la aplicación FastAPI:
Tu API ya se está ejecutando en http://localhost:8000.
Ve a http://localhost:8000/api/public en tu navegador. Deberías ver el mensaje público sin necesidad de autenticarte.

Pruebe su API

Para probar los endpoints protegidos, deberá obtener un token de acceso de Auth0.

Obtén un token de acceso

La forma más sencilla de obtener un token de acceso para hacer pruebas es a través del Auth0 Dashboard:
  1. Ve a Applications > APIs en el Auth0 Dashboard
  2. Selecciona tu API
  3. Haz clic en la pestaña Test
  4. Haz clic en Copy Token en la sección Asking Auth0 for tokens from my application

Llama a tu API

Usa el token de acceso para llamar a tu endpoint protegido:
Deberías recibir una respuesta con el mensaje privado y tu ID de usuario. Para probar el endpoint con scope, asegúrate de que tu token incluya el scope read:messages:
Si tu token no tiene el scope requerido, recibirás una respuesta 403 Forbidden.

Uso avanzado

Puede acceder a los claims personalizados que se hayan agregado al token de acceso mediante Auth0 Actions.Acceda a los claims personalizados en el controlador de la ruta:
Para agregar claims personalizados a sus tokens de acceso, cree una Action de Auth0:
  1. Vaya a Actions > Library en el Auth0 Dashboard
  2. Haga clic en Create Action
  3. Seleccione Build from scratch
  4. Asigne un nombre a su acción y seleccione el desencadenador Login / Post Login
  5. Agregue sus claims personalizados:
  1. Haga clic en Deploy y agregue la acción a su flujo de Login
Los claims personalizados deben usar un formato con espacio de nombres (por ejemplo, https://myapp.example.com/claim_name) para evitar conflictos con los claims estándar.
Si necesita proteger un endpoint, pero no necesita acceder a los claims, puede usar el parámetro dependencies:
Esto valida el token de acceso, pero no inyecta los claims en su función.
DPoP (Demonstrating Proof-of-Possession) está actualmente en Early Access. Póngase en contacto con el soporte de Auth0 para habilitarlo en su inquilino.
DPoP proporciona mayor seguridad al vincular criptográficamente los tokens de acceso al cliente que los solicitó. Esto evita el robo de tokens y los ataques de repetición.El SDK habilita la compatibilidad con DPoP de forma predeterminada. Puede configurar el comportamiento de DPoP:
Modo mixto (predeterminado) acepta tanto tokens Bearer como DPoP:
Modo solo DPoP rechaza los tokens Bearer:
Al usar DPoP, los clientes deben incluir los encabezados Authorization: DPoP <token> y DPoP: <proof>. El SDK valida automáticamente la prueba DPoP y la vincula al token de acceso.
Solo habilite trust_proxy cuando su aplicación esté detrás de un proxy inverso de confianza. Nunca habilite esto en aplicaciones expuestas directamente a internet.
Si su aplicación se ejecuta detrás de un proxy inverso (nginx, AWS ALB, etc.), debe habilitar la confianza en el proxy para que la validación de DPoP funcione correctamente:
Configure su proxy inverso para reenviar los encabezados necesarios:
Esto es esencial para la validación de DPoP porque el SDK necesita hacer coincidir la URL exacta que usó el cliente. Sin confianza en el proxy, su aplicación ve URL internas, mientras que las pruebas DPoP hacen referencia a URL externas, lo que provoca errores de validación.
El SDK lanza HTTPException ante errores de autenticación. FastAPI las gestiona automáticamente y devuelve al cliente las respuestas HTTP adecuadas.Si es necesario, puede implementar una gestión de errores personalizada:
Los errores de autenticación incluyen:
  • 401 Unauthorized: Falta el token de acceso, no es válido o ha caducado
  • 403 Forbidden: Token válido, pero con permisos insuficientes (alcances)

Problemas comunes

Problema: La validación del token falla con el error “Audiencia no válida”.Solución: Verifica que AUTH0_AUDIENCE en tu archivo .env coincida exactamente con el Identifier que configuraste para tu API en el Auth0 Dashboard.
  1. Abre el Auth0 Dashboard y ve a Applications > APIs
  2. Selecciona tu API
  3. Comprueba el valor de Identifier en la pestaña Settings
  4. Actualiza tu archivo .env:
  5. Reinicia la aplicación
Problema: La validación del token falla con el error “Emisor no válido”.Solución: Verifica que AUTH0_DOMAIN sea correcto y no incluya el protocolo https://.Tu dominio debe tener este formato: dev-abc123.us.auth0.com, no https://dev-abc123.us.auth0.com.Actualiza tu archivo .env:
Problema: El endpoint protegido devuelve un 403 incluso con un token de acceso válido.Solución: El token de acceso no incluye el scope requerido.
  1. Comprueba qué alcances requiere tu endpoint
  2. Al solicitar un token, asegúrate de incluir los alcances requeridos
  3. Verifica que el scope exista en la pestaña Permissions de tu API en el Auth0 Dashboard
  4. Decodifica tu token en jwt.io para verificar que contiene la claim scope con los valores requeridos
Problema: Python no puede encontrar el SDK de Auth0 para FastAPI.Solución: Asegúrate de que el SDK esté instalado en tu entorno virtual activo.
Problema: La aplicación no puede obtener las claves de firma de Auth0.Solución: Comprueba la conectividad de red y la configuración del dominio.
  1. Verifica que tu dominio sea accesible:
  2. Comprueba que tu firewall permita conexiones HTTPS salientes (puerto 443) a *.auth0.com
  3. Si estás detrás de un proxy corporativo, configura las variables de entorno HTTP_PROXY y HTTPS_PROXY
Problema: La autenticación DPoP devuelve errores relacionados con la validación de la URL o de la prueba.Solución:
  1. Si estás detrás de un proxy inverso, habilita la confianza en el proxy:
  2. Verifica que tu proxy reenvíe estos encabezados:
    • X-Forwarded-Proto
    • X-Forwarded-Host
    • X-Forwarded-Prefix
  3. Asegúrate de que DPoP esté habilitado para tu inquilino (contacta con el soporte de Auth0)
  4. Verifica que la claim htu de la prueba DPoP coincida exactamente con la URL de tu solicitud

Próximos pasos

Documentación del SDK

Explora el SDK de Auth0 para FastAPI en GitHub para ver ejemplos y configuraciones avanzadas

Alcances y permisos

Aprende a definir y usar alcances para un control de acceso detallado

Auth0 Actions

Personaliza tu flujo de autenticación y agrega claims personalizadas a los tokens

Documentación de FastAPI

Más información sobre las funciones de FastAPI, los patrones asíncronos y las prácticas recomendadas

Autorización de API

Implementa el control de acceso basado en roles (RBAC) para tu API

Implementar en producción

Prácticas recomendadas para implementar aplicaciones de FastAPI con Auth0