Panoramica
Come configurare SAML per LibreChat
Panoramica
SAML (Security Assertion Markup Language) è un protocollo di autenticazione ampiamente utilizzato che abilita il Single Sign-On (SSO). Consente agli utenti di autenticarsi una sola volta presso un Identity Provider (IdP) e di ottenere l'accesso a molteplici servizi senza dover effettuare nuovamente l'accesso.
SLO (Single Logout) non supportato
Il Single Logout (SLO) non è supportato in questa implementazione.
Esclusione reciproca di OpenID e SAML
Se l'autenticazione OpenID è abilitata, l'autenticazione SAML verrà disabilitata automaticamente.
È possibile attivare solo un metodo di autenticazione alla volta.
Attivazione del metodo di autenticazione basata sulle variabili d'ambiente
La seguente tabella indica quale metodo di autenticazione è abilitato a seconda delle impostazioni delle variabili d'ambiente:
| OIDC | SAML | Metodo di autenticazione attivo |
|---|---|---|
| ✅Abilitato | ❌Disabilitato | OpenID Connect (OIDC) |
| ❌Disabilitato | ✅Abilitato | SAML |
| ✅Abilitato | ✅Abilitato | OpenID Connect (OIDC) |
| ❌Disabilitato | ❌Disabilitato | Nessuna autenticazione abilitata |
Formato e configurazione del certificato SAML
La variabile d'ambiente SAML_CERT viene utilizzata per specificare il certificato di firma dell'Identity Provider (IdP) per la convalida delle risposte SAML. Questo certificato deve essere fornito in formato PEM e può essere specificato in uno dei seguenti modi:
Come percorso file (relativo o assoluto)
Se SAML_CERT è impostato su un percorso di file, l'applicazione caricherà il certificato dal file specificato.
Sono supportati sia i percorsi relativi che i percorsi assoluti.
# Relative path (resolved based on the application root)
SAML_CERT=idp-cert.pem
# Absolute path
SAML_CERT=/path/to/idp-cert.pemContenuto del file di esempio (idp-cert.pem):
-----BEGIN CERTIFICATE-----
MIIDazCCAlOgAwIBAgIUKhXaFJGJJPx466rl...
-----END CERTIFICATE-----Come stringa PEM su una sola riga
Il certificato può anche essere fornito come stringa PEM su una sola riga (codificata in Base64, senza interruzioni di riga).
SAML_CERT="MIICizCCAfQCCQCY8tKaMc0BMjANBgkqh...W=="Questo formato è utile quando si memorizza il certificato direttamente nelle variabili d'ambiente.
Come stringa PEM su più righe (con sequenze di escape \n)
Il certificato può anche essere fornito come una stringa PEM multilinea dove le nuove righe sono rappresentate come \n.
SAML_CERT="-----BEGIN CERTIFICATE-----\nMIIDazCCAlOgAwIBAgIUKhXaFJGJJPx466rl...\n-----END CERTIFICATE-----\n"Questo formato è utile quando si configurano i certificati nei file .env preservando l'intera struttura PEM.
Requisiti del formato del certificato
- Il certificato deve essere sempre in formato PEM (certificato X.509 codificato in Base64).
- Se fornito come file, deve essere un formato PEM di messaggio testuale rigoroso RFC7468 valido.
- Quando si utilizza un certificato su una sola riga, assicurarsi che non ci siano interruzioni di riga nel valore.
- Quando si utilizza una stringa multilinea, assicurarsi che le nuove righe siano rappresentate come sequenze di escape \n.
Per ulteriori dettagli, fare riferimento alla documentazione di node-saml.
Flusso di determinazione del nome utente visualizzato basato sugli attributi SAML

Nell'autenticazione SAML, il nome utente visualizzato viene determinato secondo il seguente flusso.
flowchart TD
A[Start] --> B{{Is SAML_NAME_CLAIM available?}}
B -- Yes --> C[Value of SAML_NAME_CLAIM]
B -- No --> D{{Are both SAML_GIVEN_NAME_CLAIM & SAML_FAMILY_NAME_CLAIM available?}}
D -- Yes --> E[Value of SAML_GIVEN_NAME_CLAIM / SAML_FAMILY_NAME_CLAIM]
D -- No --> F{{Is only SAML_GIVEN_NAME_CLAIM available?}}
F -- Yes --> G[Value of SAML_GIVEN_NAME_CLAIM]
F -- No --> H{{Is only SAML_FAMILY_NAME_CLAIM available?}}
H -- Yes --> I[Value of SAML_FAMILY_NAME_CLAIM]
H -- No --> J{{Is SAML_USERNAME_CLAIM available?}}
J -- Yes --> K[Value of SAML_USERNAME_CLAIM]
J -- No --> L[Value of SAML_EMAIL_CLAIM]
style C fill:#FFDEA5,stroke:#FFA500
style E fill:#FFDEA5,stroke:#FFA500
style G fill:#FFDEA5,stroke:#FFA500
style I fill:#FFDEA5,stroke:#FFA500
style K fill:#FFDEA5,stroke:#FFA500
style L fill:#FFDEA5,stroke:#FFA500Regole di determinazione
- Se
SAML_NAME_CLAIMviene fornito, il suo valore viene utilizzato come nome utente visualizzato. - Se vengono forniti sia
SAML_GIVEN_NAME_CLAIMcheSAML_FAMILY_NAME_CLAIM, i loro valori corrispondenti vengono concatenati per formare il nome utente. - Se viene fornito solo
SAML_GIVEN_NAME_CLAIM, viene utilizzato il suo valore. - Se viene fornito solo
SAML_FAMILY_NAME_CLAIM, viene utilizzato il suo valore. - Se
SAML_USERNAME_CLAIMè fornito, viene utilizzato il suo valore. - Se nessuno degli attributi di cui sopra viene fornito,
SAML_EMAIL_CLAIMviene utilizzato come nome utente visualizzato.
Seguendo questo flusso, viene determinato un nome utente appropriato durante l'autenticazione SAML.
Esempi di configurazione
Com’è questa guida?