Requisitos previos: Antes de comenzar, asegúrese de tener instalados los siguientes componentes:Compatibilidad de versiones de Flask: Esta guía de inicio rápido usa Flask 2.0+ con el extra
[async] para habilitar la compatibilidad asíncrona.Primeros pasos
Instala las dependencias
Cree el archivo El archivo
requirements.txt para registrar sus dependencias:requirements.txt
requirements.txt enumera todas las dependencias del proyecto. Para instalarlas, ejecute: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.Puede hacerlo automáticamente ejecutando un comando de CLI o de forma manual a través del Dashboard:
- CLI
- Dashboard
Ejecuta el siguiente comando de shell en el directorio raíz de tu proyecto para crear una aplicación de Auth0 y generar un archivo
.env:Crear la configuración de autenticación, las rutas y las plantillas
Crear archivosY agrega los siguientes fragmentos de código:
Solo para desarrollo: Este ejemplo usa clases simples de almacenamiento en memoria (
MemoryStateStore y MemoryTransactionStore) solo con fines de demostración. Estos almacenamientos perderán todos los datos de sesión cuando la aplicación se reinicie y no funcionarán en implementaciones de varias instancias.Para aplicaciones de producción, debe implementar almacenamiento persistente. El SDK es independiente del framework y requiere que proporcione implementaciones personalizadas de StateStore y TransactionStore. Consulte los ejemplos oficiales de almacenamiento del SDK para obtener instrucciones detalladas sobre cómo implementar Redis, PostgreSQL u otros backends de almacenamiento persistente.Ejecuta tu aplicación
Inicia el servidor de desarrollo de Flask:Tu aplicación estará disponible en http://localhost:5000. El SDK de Auth0 gestiona automáticamente las rutas de autenticación.
Punto de controlAhora deberías tener una página de inicio de sesión de Auth0 completamente funcional ejecutándose en localhost
Uso avanzado
Obtención de tokens de API
Obtención de tokens de API
Si necesita llamar a una API protegida, recupere un token de acceso:
Para usar esta función, debe:
- Configurar
AUTH0_AUDIENCEen su archivo.env - Incluir
offline_accessen sus alcances (para tokens de actualización) - Actualizar
authorization_paramsenauth.py:
Configuración de almacenamiento personalizada
Configuración de almacenamiento personalizada
De forma predeterminada, el SDK usa almacenamiento basado en cookies. En entornos de producción con necesidades específicas (escalado horizontal, uso compartido de sesiones entre servicios), puede configurar backends de almacenamiento personalizados, como Redis o PostgreSQL.Cuándo usar almacenamiento personalizado:
- Necesita compartir sesiones entre varios servidores
- Tiene datos de sesión de gran tamaño que superan los límites de tamaño de las cookies
- Necesita administración centralizada de sesiones para el cierre de sesión por backchannel
auth.py
Para la mayoría de las aplicaciones, el almacenamiento predeterminado basado en cookies es suficiente. El almacenamiento personalizado requiere implementar la interfaz
StateStore. Consulte los ejemplos del SDK para ver implementaciones detalladas.Problemas comunes
MissingRequiredArgumentError
MissingRequiredArgumentError
Problema: Aparece “MissingRequiredArgumentError: secret” al iniciar la aplicaciónCausa: Falta la variable de entorno
AUTH0_SECRET o no se está cargando correctamente.Solución:- Verifique que el archivo
.envexista en la raíz del proyecto - Asegúrese de que
python-dotenvesté instalado:pip install python-dotenv - Genere un nuevo secreto si es necesario:
openssl rand -hex 64 - Añádalo a
.env:AUTH0_SECRET=your_generated_secret - Reinicie la aplicación Flask
Error de URL de callback inválida
Error de URL de callback inválida
Problema: Aparece el error “Callback URL mismatch” o “invalid_request” durante el inicio de sesiónCausa: El URI de redirección en tu código no coincide con el que está registrado en Auth0 Dashboard.Solución:
- Revisa tu archivo
.env:AUTH0_REDIRECT_URI=http://localhost:5000/callback - Ve a Auth0 Dashboard → Applications → Your App → Settings
- Agrega
http://localhost:5000/callbacka Allowed Callback URLs - Haz clic en Save Changes
- Reinicia tu aplicación Flask
Errores en el bucle de eventos de AsyncIO
Errores en el bucle de eventos de AsyncIO
Problema: Aparece “RuntimeError: This event loop is already running” u otros errores asíncronos similaresCausa: La compatibilidad asíncrona de Flask 2.0+ puede presentar problemas con determinadas configuraciones.Solución:Instale Flask con compatibilidad asíncrona:Luego, reinicia la aplicación Flask.
Errores de «módulo no encontrado»
Errores de «módulo no encontrado»
Problema: Aparece “ModuleNotFoundError: No module named ‘auth0_server_python’” o un mensaje similarCausa: El SDK no está instalado o el entorno virtual no está activado.Solución:
- Asegúrese de que su entorno virtual esté activado:
- Instale el SDK:
- Verifique la instalación:
Error de ClaimDecodingFailed
Error de ClaimDecodingFailed
Problema: Ves el error “ClaimDecodingFailed” o “Failed to decode claims” durante la autenticaciónCausa: El token de ID o el token de acceso recibido de Auth0 no se pudo decodificar correctamente, normalmente por una de estas razones:
- Formato de JWT no válido
- Datos de sesión dañados
- Algoritmos de firma incompatibles
- Desajuste de reloj entre tu servidor y Auth0
- Asegúrate de que
AUTH0_CLIENT_SECRETsea correcto en el archivo.env - Comprueba que la hora del sistema esté sincronizada (NTP):
- Borra las cookies del navegador y reinicia la autenticación
- Verifica que
AUTH0_DOMAINno incluya el prefijohttps:// - Comprueba que Auth0 Dashboard → Applications → Your App → Settings → Advanced → OAuth → JsonWebToken Signature Algorithm coincida con la configuración de tu SDK
Token caducado o inválido
Token caducado o inválido
Problema: Aparece el error “Token has expired” o “invalid_token”Causa: El token de acceso o el token de ID ha superado su tiempo de validez, o la sesión ha expirado.Solución:
- El SDK gestiona automáticamente la renovación del token si incluye el scope
offline_access: - En el caso de las API, asegúrese de solicitar tokens nuevos:
- Ajuste el tiempo de validez de los tokens en Auth0 Dashboard → Applications → Your App → Settings → Advanced → OAuth
- Implemente un manejo de errores adecuado para redirigir a los usuarios al inicio de sesión cuando los tokens expiren
CORS y errores entre orígenes
CORS y errores entre orígenes
Problema: Aparecen errores de CORS o “Blocked by CORS policy” en la consola del navegadorCausa: El origen de tu aplicación no está configurado correctamente en Auth0.Solución:
- Añade tu origen en Auth0 Dashboard → Applications → Your App → Settings:
- Allowed Web Origins:
http://localhost:5000 - Allowed Callback URLs:
http://localhost:5000/callback - Allowed Logout URLs:
http://localhost:5000
- Allowed Web Origins:
- Para producción, añade las URL de producción:
- Asegúrate de que tu aplicación Flask tenga una configuración de CORS adecuada si llamas a las API de Auth0 desde JavaScript del frontend:
Se superó el límite de tasa
Se superó el límite de tasa
Problema: Ves errores de “Demasiadas solicitudes” o “Se superó el límite de tasa”Causa: Tu aplicación ha superado los límites de tasa de Auth0 para las solicitudes de autenticación.Solución:
- Revisa Auth0 Dashboard → Monitoring → Logs para consultar los detalles del límite de tasa
- Implementa retroceso exponencial para los reintentos:
- Revisa los límites de tu plan de suscripción de Auth0
- Optimiza el flujo de autenticación para reducir las solicitudes de tokens innecesarias
- Almacena los tokens en caché adecuadamente en lugar de solicitar nuevos con frecuencia