Réutilisation de jeton OpenID Connect
Comment configurer la réutilisation des jetons OpenID Connect avec LibreChat
LibreChat prend en charge la réutilisation des jetons d'accès et de rafraîchissement émis par votre fournisseur OpenID Connect (comme Azure Entra ID ou Auth0) pour gérer l'état d'authentification des utilisateurs. Lorsque cette fonctionnalité est active, le jeton de rafraîchissement transmis à l'utilisateur sous forme de cookie est émis par votre fournisseur OpenID au lieu de LibreChat, permettant aux serveurs LibreChat de le rafraîchir et de demander des jetons d'accès auprès de votre fournisseur.
Prérequis
- Un fournisseur OpenID Connect configuré (comme Azure Entra ID, Auth0, etc.)
- Configuration de base OpenID Connect terminée
Étapes de configuration
- Définissez
OPENID_REUSE_TOKENS=truedans vos variables d'environnement.
Configuration spécifique au fournisseur
Configuration Auth0
Important pour Auth0
Lorsque vous utilisez Auth0 avec la réutilisation de jetons, vous devez configurer la variable d'environnement OPENID_AUDIENCE. Sans cela, Auth0 renverra des jetons opaques qui ne pourront pas être validés par LibreChat, provoquant des boucles de rafraîchissement infinies.
Pour Auth0, vous devez :
-
Créer une API dans Auth0 (requis pour les jetons d'accès JWT) :
- Allez dans Auth0 Dashboard → Applications → APIs
- Cliquez sur "Create API"
- Définissez un Identifier (par ex.
https://api.librechat.com) - Activez "Allow Offline Access" dans les paramètres de l'API
-
Définissez les variables d'environnement requises :
Pour une configuration détaillée d'Auth0, consultez : Configuration OpenID Connect d'Auth0
Configuration d'Azure Entra ID
- Configurez votre fournisseur OpenID (en utilisant Azure Entra ID comme exemple) :
- Allez sur le portail Azure et accédez à votre inscription d'application
- Cliquez sur "Expose API" dans le menu de gauche
- Cliquez sur "Add" à côté de "Application ID URI"
- Entrez votre URI d'API (par ex. "api://librechat") et enregistrez
- Créer une portée d'API :
- Dans la section "Expose API", cliquez sur "Add a scope"
- Configurez la portée avec les autorisations appropriées
- Enregistrer la configuration de la portée
- Configurer les permissions de l'API :
- Allez dans "API permissions" dans le menu de gauche
- Cliquez sur "Add a permission"
- Sous « APIs my organization uses », recherchez votre application
- Sélectionnez "Delegated permissions" et choisissez la portée appropriée (par exemple, "access_user")
-
Définissez la portée requise dans votre environnement :
Remarque : La portée
offline_accessest requise pour obtenir un jeton de rafraîchissement à des fins de réutilisation. -
Accorder le consentement administrateur :
- Allez dans Enterprise Applications dans le portail Azure
- Trouvez votre application LibreChat
- Accédez à Security > Permissions
- Cliquez sur "Grant admin consent"
- Acceptez les autorisations demandées dans la fenêtre contextuelle
- Videz le cache de LibreChat et redémarrez le service.
Intégration de l'API Microsoft Graph
Lorsque vous utilisez Azure Entra ID avec la réutilisation de jetons, vous pouvez également activer l'intégration de l'API Microsoft Graph pour des capacités de recherche de personnes et de groupes améliorées. Voir Intégration de l'API Microsoft Graph pour plus de détails.
Variables d'environnement
Options de configuration supplémentaires
OPENID_AUDIENCE: Valeur d'audience pour la validation JWT et les requêtes d'autorisation. Requis pour Auth0 afin de recevoir des jetons d'accès JWT au lieu de jetons opaques. Les valeurs séparées par des virgules sont acceptées pour la validation JWT ; les requêtes d'autorisation utilisent la première valeur non vide.OPENID_REUSE_MAX_SESSION_AGE_MS: Âge maximal auquel un jeton de session OpenID réutilisé est servi avant que LibreChat ne force un rafraîchissement auprès de l'IdP (par défaut : 900000 ms / 15 minutes). Accepte les expressions arithmétiques comme60 * 60 * 24 * 1000. Augmentez cette valeur pour qu'elle corresponde à la durée de vie du jeton d'accès de votre IdP si votre fournisseur révoque le jeton d'accès précédent à chaque rafraîchissement.OPENID_JWKS_URL_CACHE_ENABLED: Active la mise en cache des résultats de vérification des clés de signature pour éviter les requêtes HTTP excessives vers l'endpoint JWKSOPENID_JWKS_URL_CACHE_TIME: Durée du cache en millisecondes (par défaut : 600000 ms / 10 minutes)OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED: Active le flux « on-behalf-of » pour les informations utilisateur (spécifique à Azure)OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE: Portée (scope) pour les informations utilisateur dans le flux on-behalf-of (spécifique à Azure)OPENID_USE_END_SESSION_ENDPOINT: Active l'utilisation de l'endpoint de fin de session pour la déconnexion
Considérations de sécurité
- Assurer un stockage et une gestion appropriés des jetons
- Implémenter des mécanismes de rafraîchissement de jeton appropriés
- Surveillez l'utilisation des jetons et implémentez une limitation de débit si nécessaire
- Renouveler régulièrement les secrets client
- Utilisez des paramètres de cookie sécurisés pour le stockage des jetons
Dépannage
Si vous rencontrez des problèmes avec la réutilisation de jetons :
- Vérifiez que toutes les portées (scopes) requises sont correctement configurées
- Vérifiez que le consentement de l'administrateur a été accordé
- Assurez-vous que les permissions de l'API sont correctement configurées
- Vérifiez que le cache de jetons fonctionne comme prévu
- Vérifiez les journaux de l'application pour toute erreur d'authentification
- Activez la journalisation détaillée des en-têtes de requête OpenID en définissant
DEBUG_OPENID_REQUESTS=truedans vos variables d'environnement pour voir les en-têtes de requête en plus des URLs (avec les données sensibles masquées).
Que pensez-vous de ce guide ?