Saltar al contenido principal
Requisitos previos: Antes de comenzar, asegúrese de tener instalados los siguientes componentes:
  • Python 3.9 o posterior
  • pip 20.0 o posterior
  • jq - Necesario para configurar la CLI de Auth0
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

Esta guía de inicio rápido muestra cómo agregar la autenticación de Auth0 a una aplicación Flask. Crearás una aplicación web segura con funcionalidad de inicio de sesión, rutas protegidas y acceso al perfil del usuario mediante el SDK web de Python de Auth0.
1

Configura tu entorno

Crea un nuevo directorio para tu proyecto de Flask:
Crea un entorno virtual:
2

Instala las dependencias

Cree el archivo requirements.txt para registrar sus dependencias:
requirements.txt
El archivo requirements.txt enumera todas las dependencias del proyecto. Para instalarlas, ejecute:
3

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

Crear la configuración de autenticación, las rutas y las plantillas

Crear archivos
Y 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.
5

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

Si necesita llamar a una API protegida, recupere un token de acceso:
Para usar esta función, debe:
  1. Configurar AUTH0_AUDIENCE en su archivo .env
  2. Incluir offline_access en sus alcances (para tokens de actualización)
  3. Actualizar authorization_params en auth.py:
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
Ejemplo con Redis:
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

Problema: Aparece “MissingRequiredArgumentError: secret” al iniciar la aplicaciónCausa: Falta la variable de entorno AUTH0_SECRET o no se está cargando correctamente.Solución:
  1. Verifique que el archivo .env exista en la raíz del proyecto
  2. Asegúrese de que python-dotenv esté instalado: pip install python-dotenv
  3. Genere un nuevo secreto si es necesario: openssl rand -hex 64
  4. Añádalo a .env: AUTH0_SECRET=your_generated_secret
  5. Reinicie la aplicación Flask
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:
  1. Revisa tu archivo .env: AUTH0_REDIRECT_URI=http://localhost:5000/callback
  2. Ve a Auth0 Dashboard → Applications → Your App → Settings
  3. Agrega http://localhost:5000/callback a Allowed Callback URLs
  4. Haz clic en Save Changes
  5. Reinicia tu aplicación Flask
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.
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:
  1. Asegúrese de que su entorno virtual esté activado:
  2. Instale el SDK:
  3. Verifique la instalación:
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
Solución:
  1. Asegúrate de que AUTH0_CLIENT_SECRET sea correcto en el archivo .env
  2. Comprueba que la hora del sistema esté sincronizada (NTP):
  3. Borra las cookies del navegador y reinicia la autenticación
  4. Verifica que AUTH0_DOMAIN no incluya el prefijo https://
  5. Comprueba que Auth0 Dashboard → Applications → Your App → Settings → Advanced → OAuth → JsonWebToken Signature Algorithm coincida con la configuración de tu SDK
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:
  1. El SDK gestiona automáticamente la renovación del token si incluye el scope offline_access:
  2. En el caso de las API, asegúrese de solicitar tokens nuevos:
  3. Ajuste el tiempo de validez de los tokens en Auth0 Dashboard → Applications → Your App → Settings → Advanced → OAuth
  4. Implemente un manejo de errores adecuado para redirigir a los usuarios al inicio de sesión cuando los tokens expiren
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:
  1. 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
  2. Para producción, añade las URL de producción:
  3. 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:
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:
  1. Revisa Auth0 Dashboard → Monitoring → Logs para consultar los detalles del límite de tasa
  2. Implementa retroceso exponencial para los reintentos:
  3. Revisa los límites de tu plan de suscripción de Auth0
  4. Optimiza el flujo de autenticación para reducir las solicitudes de tokens innecesarias
  5. Almacena los tokens en caché adecuadamente en lugar de solicitar nuevos con frecuencia