Übersicht
Konfiguration von SAML für LibreChat
Übersicht
SAML (Security Assertion Markup Language) ist ein weit verbreitetes Authentifizierungsprotokoll, das Single Sign-On (SSO) ermöglicht. Es erlaubt Benutzern, sich einmal bei einem Identity Provider (IdP) zu authentifizieren und Zugriff auf mehrere Dienste zu erhalten, ohne sich erneut anmelden zu müssen.
SLO (Single Logout) wird nicht unterstützt
Single Logout (SLO) wird in dieser Implementierung nicht unterstützt.
Gegenseitiger Ausschluss von OpenID und SAML
Wenn die OpenID-Authentifizierung aktiviert ist, wird die SAML-Authentifizierung automatisch deaktiviert.
Es kann jeweils nur eine Authentifizierungsmethode aktiv sein.
Aktivierung der Authentifizierungsmethode basierend auf Umgebungsvariablen
Die folgende Tabelle zeigt, welche Authentifizierungsmethode je nach Einstellung der Umgebungsvariablen aktiviert ist:
| OIDC | SAML | Aktive Authentifizierungsmethode |
|---|---|---|
| ✅Aktiviert | ❌Deaktiviert | OpenID Connect (OIDC) |
| ❌Deaktiviert | ✅Aktiviert | SAML |
| ✅Aktiviert | ✅Aktiviert | OpenID Connect (OIDC) |
| ❌Deaktiviert | ❌Deaktiviert | Keine Authentifizierung aktiviert |
SAML-Zertifikatsformat und -Konfiguration
Die Umgebungsvariable SAML_CERT wird verwendet, um das Signaturzertifikat des Identity Providers (IdP) zur Validierung von SAML-Antworten anzugeben. Dieses Zertifikat muss im PEM-Format bereitgestellt werden und kann auf eine der folgenden Arten angegeben werden:
Als Dateipfad (relativ oder absolut)
Wenn SAML_CERT auf einen Dateipfad gesetzt ist, lädt die Anwendung das Zertifikat aus der angegebenen Datei.
Sowohl relative Pfade als auch absolute Pfade werden unterstützt.
Beispiel-Dateiinhalt (idp-cert.pem):
Als einzeiliger PEM-String
Das Zertifikat kann auch als einzeiliger PEM-String (Base64-kodiert, ohne Zeilenumbrüche) bereitgestellt werden.
Dieses Format ist nützlich, wenn das Zertifikat direkt in Umgebungsvariablen gespeichert wird.
Als mehrzeiliger PEM-String (mit \n Escape-Sequenzen)
Das Zertifikat kann auch als mehrzeiliger PEM-String bereitgestellt werden, wobei Zeilenumbrüche als \n dargestellt werden.
Dieses Format ist nützlich, wenn Zertifikate in .env Dateien konfiguriert werden, während die vollständige PEM-Struktur beibehalten wird.
Anforderungen an das Zertifikatsformat
- Das Zertifikat muss immer im PEM-Format vorliegen (Base64-kodiertes X.509-Zertifikat).
- Falls es als Datei bereitgestellt wird, muss es ein gültiges RFC7468 strict textual message PEM format sein.
- Wenn Sie ein einzeiliges Zertifikat verwenden, stellen Sie sicher, dass der Wert keine Zeilenumbrüche enthält.
- Wenn Sie einen mehrzeiligen String verwenden, stellen Sie sicher, dass Zeilenumbrüche als \n-Escape-Sequenzen dargestellt werden.
Weitere Details finden Sie in der node-saml documentation.
Ablauf zur Bestimmung des angezeigten Benutzernamens basierend auf SAML-Attributen

Bei der SAML-Authentifizierung wird der angezeigte Benutzername gemäß dem folgenden Ablauf bestimmt.
Bestimmungsregeln
- Wenn
SAML_NAME_CLAIMbereitgestellt wird, wird dessen Wert als Anzeigename des Benutzers verwendet. - Wenn sowohl
SAML_GIVEN_NAME_CLAIMals auchSAML_FAMILY_NAME_CLAIMbereitgestellt werden, werden ihre entsprechenden Werte verkettet, um den Benutzernamen zu bilden. - Wenn nur
SAML_GIVEN_NAME_CLAIMbereitgestellt wird, wird dessen Wert verwendet. - Wenn nur
SAML_FAMILY_NAME_CLAIMbereitgestellt wird, wird dessen Wert verwendet. - Wenn
SAML_USERNAME_CLAIMbereitgestellt wird, wird dessen Wert verwendet. - Wenn keines der oben genannten Attribute angegeben ist, wird
SAML_EMAIL_CLAIMals Anzeigename für den Benutzer verwendet.
Durch Befolgen dieses Ablaufs wird während der SAML-Authentifizierung ein geeigneter Benutzername ermittelt.
Konfigurationsbeispiele
Wie finden Sie diese Anleitung?