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
- Establece
OPENID_REUSE_TOKENS=trueen 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:
-
Cree una API en Auth0 (requerido para tokens de acceso JWT):
- Ve a Auth0 Dashboard → Applications → APIs
- 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
-
Establezca las variables de entorno requeridas:
Para obtener una configuración detallada de Auth0, consulte: Auth0 OpenID Connect Configuration
Configuración de Azure Entra ID
- 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
- 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
- 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")
-
Establezca el alcance requerido en su entorno:
Nota: El scope
offline_accesses necesario para obtener un token de actualización para su reutilización. -
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"
- Acepta los permisos solicitados en la ventana emergente
- 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
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 como60 * 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 JWKSOPENID_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:
- Verifique que todos los alcances (scopes) requeridos estén configurados correctamente
- Compruebe que se haya otorgado el consentimiento del administrador
- Asegúrate de que los permisos de la API estén configurados correctamente
- Verifique que la caché de tokens esté funcionando como se espera
- Revise los registros de la aplicación en busca de errores de autenticación
- Habilite el registro detallado de encabezados de solicitud OpenID configurando
DEBUG_OPENID_REQUESTS=trueen 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?