Auth0
Configurer Auth0 en tant que fournisseur OpenID Connect pour LibreChat
Ce guide vous accompagne dans la configuration d'Auth0 en tant que fournisseur OpenID Connect pour LibreChat.
Aperçu
Auth0 peut être utilisé comme fournisseur OpenID Connect pour LibreChat. Lorsque vous utilisez Auth0 avec la réutilisation de jetons activée (OPENID_REUSE_TOKENS=true), vous devez configurer la variable d'environnement OPENID_AUDIENCE pour éviter les problèmes d'authentification.
Prérequis
- Un compte Auth0 avec un tenant actif
- Accès administrateur pour créer des applications et des API dans Auth0
- Instance LibreChat prête pour la configuration
Étapes de configuration
Étape 1 : Créer une application Auth0
- Allez dans Auth0 Dashboard → Applications → Applications
- Cliquez sur "Create Application"
- Configurez l'application :
- Nom :
LibreChat(ou le nom de votre choix) - Type d'application : Sélectionnez "Single Page Application"
- Nom :
- Cliquez sur "Create"
Étape 2 : Configurer les paramètres de l'application
HTTPS requis
Auth0 n'autorise pas les URLs http://localhost dans les applications en production. Pour le développement/test local, vous devrez utiliser HTTPS. Vous pouvez utiliser des services comme :
- ngrok:
ngrok http 3080(fournit un tunnel HTTPS vers localhost) - Caddy : Serveur proxy HTTPS local
- localtunnel : Similaire à ngrok
Exemple avec ngrok :
- Dans l'onglet Settings de votre application :
- Définissez les Allowed Callback URLs :
(Utilisez votre URL ngrok pour les tests, ou votre URL HTTPS de production) - Définissez les Allowed Logout URLs (si vous utilisez la fin de session) :
- Définissez les Allowed Web Origins :
- Enregistrer les modifications
Étape 3 : Créer une API Auth0 (Requis pour la réutilisation de jetons)
Important pour la réutilisation des jetons
Cette étape est requise lors de l'utilisation de OPENID_REUSE_TOKENS=true. Sans elle, Auth0 renverra des jetons opaques qui ne pourront pas être validés par LibreChat, provoquant des boucles de rafraîchissement infinies.
- Allez sur le tableau de bord Auth0 → Applications → APIs
- Cliquez sur "Create API"
- Configurer l'API :
- Nom :
LibreChat API(ou le nom de votre choix) - Identifiant :
https://api.librechat.ai(ou votre identifiant préféré)- Note : Il s'agit simplement d'un identifiant unique, et non d'une URL réelle. Il n'a pas besoin d'être accessible.
- Modèles courants :
https://api.yourdomain.com,https://librechat.yourdomain.com, etc.
- Algorithme de signature : RS256 (recommandé)
- Nom :
- Cliquez sur "Create"
Étape 4 : Configurer l'accès hors ligne
- Allez dans les paramètres de votre API → Paramètres d'accès
- Activer "Allow Offline Access"
- Enregistrer les modifications
Étape 5 : Rassembler les valeurs de configuration
Dans la section Basic Information de votre application Auth0, vous trouverez :
- Domaine : S'affiche sous la forme
dev-example.us.auth0.com(vous devrez ajouter le préfixehttps://) - Client ID : Une longue chaîne alphanumérique
- Client Secret : Masqué par défaut (cliquez pour révéler)
Important
Le Domain affiché dans Auth0 n'inclut pas le préfixe https://. Vous devez l'ajouter lors de la configuration de OPENID_ISSUER.
Exemple : Si Auth0 affiche dev-abc123.us.auth0.com, utilisez https://dev-abc123.us.auth0.com
Étape 6 : Configurer les variables d'environnement de LibreChat
Ajoutez les variables d'environnement suivantes à votre fichier .env :
Comprendre OPENID_AUDIENCE
Le problème
Lors de l'utilisation d'Auth0 avec OPENID_REUSE_TOKENS=true :
- Auth0 renvoie des opaque access tokens (format JWE) par défaut
- LibreChat attend des jetons JWT signés (format JWS) qui peuvent être validés
- Sans une configuration appropriée, cette inadéquation provoque des échecs d'authentification et des boucles de rafraîchissement infinies.
La solution
La variable d'environnement OPENID_AUDIENCE :
- Doit être défini sur votre identifiant d'API Auth0 (créé à l'étape 3)
- Force Auth0 à émettre des jetons d'accès JWT signés au lieu de jetons opaques
- Permet à LibreChat de valider les jetons en utilisant l'endpoint JWKS d'Auth0
- Peut contenir des audiences séparées par des virgules pour la validation JWT ; les requêtes d'autorisation Auth0 utilisent la première valeur non vide
Comment ça fonctionne
Lorsque OPENID_AUDIENCE est configuré :
- LibreChat inclut le paramètre
audiencedans les requêtes d'autorisation, en utilisant la première valeur non vide lorsque plusieurs audiences séparées par des virgules sont configurées. - Auth0 reconnaît l'audience comme une API enregistrée
- Auth0 émet des jetons d'accès JWT qui peuvent être validés
- LibreChat valide les jetons avec succès et l'authentification fonctionne correctement
Référence des variables d'environnement
| Key | Type | Description | Example |
|---|---|---|---|
| OPENID_AUDIENCE | string | L'identifiant de votre API Auth0. Requis lors de l'utilisation de OPENID_REUSE_TOKENS=true avec Auth0 pour éviter les problèmes de jetons opaques. Les valeurs séparées par des virgules sont acceptées pour la validation JWT ; les demandes d'autorisation utilisent la première valeur non vide. | OPENID_AUDIENCE=https://api.librechat.ai |
Dépannage
Boucle de rafraîchissement infinie
Symptômes : La page se recharge en continu après avoir cliqué sur « Continue with OpenID »
Solution :
- Assurez-vous que
OPENID_AUDIENCEest défini sur votre identifiant d'API Auth0 - Vérifiez que l'API a été créée dans Auth0 et que l'accès hors ligne (offline access) est activé
- Vérifiez que la valeur de l'audience correspond exactement
Erreurs de jeton invalide
Symptômes : L'authentification échoue avec des erreurs de validation de jeton
Solution :
- Activer la journalisation de débogage :
DEBUG_OPENID_REQUESTS=true - Vérifiez qu'Auth0 renvoie des jetons JWT (et non des jetons opaques)
- Vérifier que le endpoint JWKS est accessible
Jeton de rafraîchissement manquant
Symptômes : Aucun jeton d'actualisation (refresh token) dans la réponse d'authentification
Solution :
- Assurez-vous que
offline_accessest inclus dansOPENID_SCOPE - Vérifiez que "Allow Offline Access" est activé dans vos paramètres d'API Auth0
Bonnes pratiques
- Toujours utiliser HTTPS - Auth0 nécessite HTTPS pour toutes les URL de rappel (callback URLs)
- Test en local - Utilisez ngrok ou des services similaires pour créer des tunnels HTTPS vers localhost
- Sécurisez votre secret de session - Utilisez une valeur forte et aléatoire pour
OPENID_SESSION_SECRET - Activer PKCE - Définissez
OPENID_USE_PKCE=truepour une sécurité renforcée - Restreindre les URLs de rappel - N'autorisez que votre domaine réel dans les paramètres Auth0
- Surveiller les journaux - Utilisez
DEBUG_OPENID_REQUESTS=truelors de la configuration - Identifiant API - N'oubliez pas qu'il s'agit simplement d'un identifiant, et non d'un endpoint réel qui doit exister
Ressources supplémentaires
Que pensez-vous de ce guide ?