Wiederverwendung von OpenID Connect-Tokens
Konfiguration der OpenID Connect Token-Wiederverwendung mit LibreChat
LibreChat unterstützt die Wiederverwendung von Zugriffs- und Aktualisierungs-Tokens (Access und Refresh Tokens), die von Ihrem OpenID Connect-Anbieter (wie Azure Entra ID oder Auth0) ausgestellt wurden, um den Authentifizierungsstatus der Benutzer zu verwalten. Wenn diese Funktion aktiv ist, wird das an den Benutzer als Cookie übergebene Refresh Token von Ihrem OpenID-Anbieter anstelle von LibreChat ausgestellt, wodurch LibreChat-Server es aktualisieren und Zugriffs-Tokens von Ihrem Anbieter anfordern können.
Voraussetzungen
- Ein konfigurierter OpenID Connect-Anbieter (wie Azure Entra ID, Auth0, etc.)
- Grundlegende OpenID Connect-Einrichtung abgeschlossen
Konfigurationsschritte
- Setze
OPENID_REUSE_TOKENS=truein deinen Umgebungsvariablen.
Anbieter-spezifische Konfiguration
Auth0-Konfiguration
Wichtig für Auth0
Wenn Sie Auth0 mit Token-Wiederverwendung (Token Reuse) verwenden, müssen Sie die Umgebungsvariable OPENID_AUDIENCE konfigurieren. Ohne diese gibt Auth0 opake Token zurück, die von LibreChat nicht validiert werden können, was zu endlosen Aktualisierungsschleifen führt.
Für Auth0 müssen Sie:
-
Erstellen Sie eine API in Auth0 (erforderlich für JWT-Zugriffstokens):
- Gehen Sie zu Auth0 Dashboard → Applications → APIs
- Klicken Sie auf "Create API"
- Legen Sie einen Identifier fest (z. B.
https://api.librechat.com) - Aktivieren Sie "Allow Offline Access" in den API-Einstellungen
-
Legen Sie die erforderlichen Umgebungsvariablen fest:
Für eine detaillierte Auth0-Konfiguration siehe: Auth0 OpenID Connect Configuration
Azure Entra ID Konfiguration
- Konfigurieren Sie Ihren OpenID-Anbieter (unter Verwendung von Azure Entra ID als Beispiel):
- Gehen Sie zum Azure Portal und navigieren Sie zu Ihrer App-Registrierung
- Klicken Sie im linken Menü auf "Expose API"
- Klicken Sie neben „Application ID URI“ auf „Add“
- Geben Sie Ihren API-URI ein (z. B. "api://librechat") und speichern Sie ihn.
- Erstellen Sie einen API-Scope:
- Klicken Sie im Abschnitt "Expose API" auf "Add a scope"
- Konfigurieren Sie den Bereich mit den entsprechenden Berechtigungen
- Speichern Sie die Bereichskonfiguration
- API-Berechtigungen konfigurieren:
- Gehe im linken Menü zu "API permissions"
- Klicke auf „Add a permission“
- Suchen Sie unter „APIs my organization uses“ nach Ihrer App
- Wählen Sie „Delegated permissions“ und wählen Sie den entsprechenden Bereich (z. B. „access_user“) aus.
-
Legen Sie den erforderlichen Scope in Ihrer Umgebung fest:
Hinweis: Der
offline_accessScope ist erforderlich, um ein Refresh Token zur Wiederverwendung zu erhalten. -
Administrator-Zustimmung erteilen:
- Gehe zu Enterprise Applications im Azure Portal
- Finden Sie Ihre LibreChat-Anwendung
- Navigieren Sie zu Security > Permissions
- Klicken Sie auf "Grant admin consent"
- Akzeptieren Sie die angeforderten Berechtigungen im Popup
- Leeren Sie den LibreChat-Cache und starten Sie den Dienst neu.
Microsoft Graph API Integration
Wenn Sie Azure Entra ID mit Token-Wiederverwendung verwenden, können Sie auch die Microsoft Graph API-Integration für verbesserte Personen- und Gruppensuchfunktionen aktivieren. Weitere Details finden Sie unter Microsoft Graph API-Integration.
Umgebungsvariablen
Zusätzliche Konfigurationsoptionen
OPENID_AUDIENCE: Audience-Wert für JWT-Validierung und Autorisierungsanfragen. Erforderlich für Auth0, um JWT-Zugriffstoken anstelle von opaken Token zu erhalten. Kommagetrennte Werte werden für die JWT-Validierung akzeptiert; Autorisierungsanfragen verwenden den ersten nicht leeren Wert.OPENID_REUSE_MAX_SESSION_AGE_MS: Maximales Alter eines wiederverwendeten OpenID-Sitzungstokens, bevor LibreChat eine IdP-Aktualisierung erzwingt (Standard: 900000 ms / 15 Minuten). Akzeptiert arithmetische Ausdrücke wie60 * 60 * 24 * 1000. Erhöhen Sie diesen Wert in Richtung der Lebensdauer Ihres IdP-Zugriffstokens, falls Ihr Anbieter das vorherige Zugriffstoken bei jeder Aktualisierung widerruft.OPENID_JWKS_URL_CACHE_ENABLED: Aktiviert das Caching der Ergebnisse der Signaturschlüssel-Verifizierung, um übermäßige HTTP-Anfragen an den JWKS-endpoint zu verhindernOPENID_JWKS_URL_CACHE_TIME: Cache-Dauer in Millisekunden (Standard: 600000 ms / 10 Minuten)OPENID_ON_BEHALF_FLOW_FOR_USERINFO_REQUIRED: Aktiviert den On-Behalf-Of-Flow für Benutzerinformationen (Azure-spezifisch)OPENID_ON_BEHALF_FLOW_USERINFO_SCOPE: Scope für Benutzerinformationen im On-Behalf-Of-Flow (Azure-spezifisch)OPENID_USE_END_SESSION_ENDPOINT: Aktiviert die Verwendung des End-Session-endpoint für die Abmeldung
Sicherheitsaspekte
- Stellen Sie eine ordnungsgemäße Speicherung und Handhabung von Token sicher
- Implementieren Sie geeignete Mechanismen zur Token-Aktualisierung
- Überwachen Sie die Token-Nutzung und implementieren Sie bei Bedarf ein Rate Limiting.
- Regelmäßig Client-Secrets rotieren
- Verwenden Sie sichere Cookie-Einstellungen für die Token-Speicherung
Fehlerbehebung
Falls Probleme bei der Token-Wiederverwendung auftreten:
- Überprüfen Sie, ob alle erforderlichen Scopes ordnungsgemäß konfiguriert sind
- Überprüfen Sie, ob die Administratorzustimmung erteilt wurde
- Stellen Sie sicher, dass die API-Berechtigungen korrekt eingerichtet sind
- Überprüfen Sie, ob der Token-Cache wie erwartet funktioniert
- Überprüfen Sie die Anwendungsprotokolle auf Authentifizierungsfehler.
- Aktivieren Sie die detaillierte Protokollierung der OpenID-Anfrage-Header, indem Sie
DEBUG_OPENID_REQUESTS=truein Ihren Umgebungsvariablen setzen, um zusätzlich zu den URLs auch die Anfrage-Header zu sehen (wobei sensible Daten maskiert werden).
Wie finden Sie diese Anleitung?