Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

Reutilización de tokens de OpenID Connect

Cómo configurar la reutilización de tokens de OpenID Connect con LibreChat

LibreChat permite reutilizar los tokens de acceso y de actualización emitidos por su proveedor de OpenID Connect (como Azure Entra ID o Auth0) para gestionar el estado de autenticación del usuario. Cuando esta función está activa, el token de actualización enviado al usuario como cookie es emitido por su proveedor de OpenID en lugar de LibreChat, lo que permite a los servidores de LibreChat actualizarlo y solicitar tokens de acceso a su proveedor.

Requisitos previos

  • Un proveedor de OpenID Connect configurado (como Azure Entra ID, Auth0, etc.)
  • Configuración básica de OpenID Connect completada

Pasos de configuración

  1. Establece OPENID_REUSE_TOKENS=true en tus variables de entorno.

Configuración específica del proveedor

Configuración de Auth0

Importante para Auth0

Al usar Auth0 con reutilización de tokens, debe configurar la variable de entorno OPENID_AUDIENCE. Sin ella, Auth0 devolverá tokens opacos que no pueden ser validados por LibreChat, lo que provocará bucles de actualización infinitos.

Para Auth0, necesitas:

  1. Cree una API en Auth0 (requerido para tokens de acceso JWT):

    • Ve a Auth0 DashboardApplicationsAPIs
    • Haz clic en "Create API"
    • Establezca un Identifier (p. ej., https://api.librechat.com)
    • Habilite "Allow Offline Access" en la configuración de la API
  2. Establezca las variables de entorno requeridas:

    # Required for Auth0
    OPENID_AUDIENCE=https://api.librechat.com  # Your API identifier from Auth0
    OPENID_SCOPE=openid profile email offline_access

Para obtener una configuración detallada de Auth0, consulte: Auth0 OpenID Connect Configuration

Configuración de Azure Entra ID

  1. Configure su proveedor OpenID (usando Azure Entra ID como ejemplo):
    • Ve al Azure Portal y navega a tu registro de aplicaciones
    • Haz clic en "Expose API" en el menú de la izquierda
    • Haz clic en "Add" junto a "Application ID URI"
    • Ingrese su API URI (p. ej., "api://librechat") y guarde

image

  1. Crear un ámbito de API:
    • En la sección "Expose API", haz clic en "Add a scope"
    • Configure el alcance con los permisos adecuados
    • Guardar la configuración del alcance

image

  1. Configurar permisos de API:
    • Ve a "API permissions" en el menú de la izquierda
    • Haz clic en "Add a permission"
    • En "APIs my organization uses", busca tu aplicación
    • Seleccione "Delegated permissions" y elija el ámbito apropiado (por ejemplo, "access_user")

image

image

image

  1. Establezca el alcance requerido en su entorno:

    OPENID_SCOPE=api://librechat/.default openid profile email offline_access

    Nota: El scope offline_access es necesario para obtener un token de actualización para su reutilización.

  2. Otorgar consentimiento de administrador:

    • Ve a Enterprise Applications en Azure Portal
    • Encuentra tu aplicación LibreChat
    • Navega a Security > Permissions
    • Haz clic en "Grant admin consent"

image

  1. Acepta los permisos solicitados en la ventana emergente

image

  1. Limpie la caché de LibreChat y reinicie el servicio.

Integración con Microsoft Graph API

Al utilizar Azure Entra ID con reutilización de tokens, también puede habilitar la integración con Microsoft Graph API para obtener capacidades mejoradas de búsqueda de personas y grupos. Consulte Integración con Microsoft Graph API para obtener más detalles.

Variables de entorno

# OpenID Token Reuse Configuration
OPENID_REUSE_TOKENS=true
OPENID_SCOPE=api://librechat/.default openid profile email offline_access
OPENID_REUSE_MAX_SESSION_AGE_MS=900000  # 15 minutes in milliseconds
 
# Required for Auth0 (use your API identifier)
# OPENID_AUDIENCE=https://api.librechat.com
 
# Caching Configuration
OPENID_JWKS_URL_CACHE_ENABLED=true
OPENID_JWKS_URL_CACHE_TIME=600000  # 10 minutes in milliseconds
 
# Azure-specific Configuration
OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED=true
OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE=user.read
 
# Logout Configuration
OPENID_USE_END_SESSION_ENDPOINT=true

Opciones de configuración adicionales

  • OPENID_AUDIENCE: Valor de audiencia para la validación de JWT y las solicitudes de autorización. Requerido para Auth0 para recibir tokens de acceso JWT en lugar de tokens opacos. Se aceptan valores separados por comas para la validación de JWT; las solicitudes de autorización utilizan el primer valor que no esté vacío.
  • OPENID_REUSE_MAX_SESSION_AGE_MS: Edad máxima que un token de sesión OpenID reutilizado se sirve antes de que LibreChat fuerce una actualización del IdP (predeterminado: 900000 ms / 15 minutos). Acepta expresiones aritméticas como 60 * 60 * 24 * 1000. Auméntelo hacia el tiempo de vida del token de acceso de su IdP si su proveedor revoca el token de acceso anterior cada vez que se actualiza.
  • OPENID_JWKS_URL_CACHE_ENABLED: Habilita el almacenamiento en caché de los resultados de verificación de claves de firma para evitar solicitudes HTTP excesivas al endpoint JWKS
  • OPENID_JWKS_URL_CACHE_TIME: Duración de la caché en milisegundos (predeterminado: 600000 ms / 10 minutos)
  • OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED: Habilita el flujo "on-behalf-of" para la información del usuario (específico de Azure)
  • OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE: Scope para la información del usuario en el flujo on-behalf-of (específico de Azure)
  • OPENID_USE_END_SESSION_ENDPOINT: Habilita el uso del endpoint de fin de sesión para cerrar sesión

Consideraciones de seguridad

  • Asegure el almacenamiento y manejo adecuado de tokens
  • Implementar mecanismos adecuados de actualización de tokens
  • Monitoree el uso de tokens e implemente límites de tasa si es necesario
  • Rote regularmente los secretos del cliente
  • Utilice configuraciones de cookies seguras para el almacenamiento de tokens

Solución de problemas

Si experimentas problemas con la reutilización de tokens:

  1. Verifique que todos los alcances (scopes) requeridos estén configurados correctamente
  2. Compruebe que se haya otorgado el consentimiento del administrador
  3. Asegúrate de que los permisos de la API estén configurados correctamente
  4. Verifique que la caché de tokens esté funcionando como se espera
  5. Revise los registros de la aplicación en busca de errores de autenticación
  6. Habilite el registro detallado de encabezados de solicitud OpenID configurando DEBUG_OPENID_REQUESTS=true en sus variables de entorno para ver los encabezados de solicitud además de las URLs (con los datos confidenciales enmascarados).

¿Qué te parece esta guía?