Vue d'ensemble
Comment configurer SAML pour LibreChat
Aperçu
SAML (Security Assertion Markup Language) est un protocole d'authentification largement utilisé qui permet l'authentification unique (SSO). Il permet aux utilisateurs de s'authentifier une seule fois auprès d'un fournisseur d'identité (IdP) et d'accéder à plusieurs services sans avoir à se reconnecter.
SLO (Single Logout) non pris en charge
La déconnexion unique (Single Logout - SLO) n'est pas prise en charge dans cette implémentation.
Exclusion mutuelle d'OpenID et de SAML
Si l'authentification OpenID est activée, l'authentification SAML sera automatiquement désactivée.
Une seule méthode d'authentification peut être active à la fois.
Activation de la méthode d'authentification basée sur les variables d'environnement
Le tableau suivant indique quelle méthode d'authentification est activée en fonction des paramètres des variables d'environnement :
| OIDC | SAML | Méthode d'authentification active |
|---|---|---|
| ✅Activé | ❌Désactivé | OpenID Connect (OIDC) |
| ❌Désactivé | ✅Activé | SAML |
| ✅Activé | ✅Activé | OpenID Connect (OIDC) |
| ❌Désactivé | ❌Désactivé | Aucune authentification activée |
Format et configuration du certificat SAML
La variable d'environnement SAML_CERT est utilisée pour spécifier le certificat de signature du fournisseur d'identité (IdP) afin de valider les réponses SAML. Ce certificat doit être fourni au format PEM et peut être spécifié de l'une des manières suivantes :
En tant que chemin de fichier (relatif ou absolu)
Si SAML_CERT est défini sur un chemin de fichier, l'application chargera le certificat à partir du fichier spécifié.
Les chemins relatifs et les chemins absolus sont tous deux pris en charge.
Exemple de contenu de fichier (idp-cert.pem) :
En tant que chaîne PEM sur une seule ligne
Le certificat peut également être fourni sous forme de chaîne PEM sur une seule ligne (encodée en Base64, sans sauts de ligne).
Ce format est utile lors du stockage du certificat directement dans les variables d'environnement.
En tant que chaîne PEM multiligne (avec séquences d'échappement \n)
Le certificat peut également être fourni sous forme de chaîne PEM multiligne où les retours à la ligne sont représentés par \n.
Ce format est utile lors de la configuration de certificats dans des fichiers .env tout en préservant la structure PEM complète.
Exigences de format de certificat
- Le certificat doit toujours être au format PEM (certificat X.509 encodé en Base64).
- S'il est fourni sous forme de fichier, il doit s'agir d'un format PEM de message textuel strict RFC7468 valide.
- Lorsque vous utilisez un certificat sur une seule ligne, assurez-vous qu'il n'y a aucun saut de ligne dans la valeur.
- Lorsque vous utilisez une chaîne multiligne, assurez-vous que les retours à la ligne sont représentés par des séquences d'échappement \n.
Pour plus de détails, consultez la documentation node-saml.
Flux de détermination du nom d'utilisateur affiché basé sur les attributs SAML

Dans l'authentification SAML, le nom d'utilisateur affiché est déterminé selon le flux suivant.
Règles de détermination
- Si
SAML_NAME_CLAIMest fourni, sa valeur est utilisée comme nom d'utilisateur affiché. - Si
SAML_GIVEN_NAME_CLAIMetSAML_FAMILY_NAME_CLAIMsont tous deux fournis, leurs valeurs correspondantes sont concaténées pour former le nom d'utilisateur. - Si seul
SAML_GIVEN_NAME_CLAIMest fourni, sa valeur est utilisée. - Si seul
SAML_FAMILY_NAME_CLAIMest fourni, sa valeur est utilisée. - Si
SAML_USERNAME_CLAIMest fourni, sa valeur est utilisée. - Si aucun des attributs ci-dessus n'est fourni,
SAML_EMAIL_CLAIMest utilisé comme nom d'utilisateur affiché.
En suivant ce flux, un nom d'utilisateur approprié est déterminé lors de l'authentification SAML.
Exemples de configuration
Que pensez-vous de ce guide ?