概要
LibreChatでSAMLを設定する方法
概要
SAML (Security Assertion Markup Language) は、シングルサインオン (SSO) を可能にする広く利用されている認証プロトコルです。ユーザーは一度 Identity Provider (IdP) で認証を行うことで、再度ログインすることなく複数のサービスにアクセスできるようになります。
SLO (Single Logout) はサポートされていません
この実装では、シングルログアウト (SLO) はサポートされていません。
OpenIDとSAMLの相互排他
OpenID認証が有効な場合、SAML認証は自動的に無効になります。
一度に有効にできる認証方法は1つだけです。
環境変数に基づく認証方式の有効化
以下の表は、環境変数の設定に応じてどの認証方法が有効になるかを示しています:
| OIDC | SAML | 有効な認証方法 |
|---|---|---|
| ✅Enabled | ❌Disabled | OpenID Connect (OIDC) |
| ❌Disabled | ✅Enabled | SAML |
| ✅Enabled | ✅Enabled | OpenID Connect (OIDC) |
| ❌Disabled | ❌Disabled | 認証は有効になっていません |
SAML 証明書の形式と設定
SAML_CERT 環境変数は、SAMLレスポンスを検証するためのアイデンティティプロバイダー(IdP)の署名証明書を指定するために使用されます。この証明書は PEM形式 で提供する必要があり、以下のいずれかの方法で指定できます。
ファイルパスとして(相対パスまたは絶対パス)
SAML_CERT がファイルパスに設定されている場合、アプリケーションは指定されたファイルから証明書を読み込みます。
相対パスと絶対パスの両方がサポートされています。
Example File Content (idp-cert.pem):
1行のPEM文字列として
証明書は、1行のPEM文字列(Base64エンコード済み、改行なし)として提供することもできます。
この形式は、証明書を直接環境変数に保存する場合に便利です。
マルチラインPEM文字列として(\nエスケープシーケンスを使用)
証明書は、改行が \n として表現される 複数行のPEM文字列 として提供することもできます。
この形式は、PEM構造全体を保持したまま .env ファイルで証明書を設定する場合に便利です。
証明書の形式要件
- 証明書は常にPEM形式である必要があります(Base64エンコードされたX.509証明書)。
- ファイルとして提供される場合、それは有効な RFC7468 strict textual message PEM format である必要があります。
- 1行の証明書を使用する場合は、値に改行が含まれていないことを確認してください。
- 複数行の文字列を使用する場合は、改行が \n エスケープシーケンスとして表現されていることを確認してください。
詳細については、node-saml documentation を参照してください。
SAML属性に基づく表示ユーザー名の決定フロー

SAML認証において、表示されるユーザー名は以下のフローに従って決定されます。
決定ルール
SAML_NAME_CLAIMが提供されている場合、その値が表示ユーザー名として使用されます。SAML_GIVEN_NAME_CLAIMとSAML_FAMILY_NAME_CLAIMの両方が提供されている場合、それらに対応する値が連結されてユーザー名が形成されます。SAML_GIVEN_NAME_CLAIMのみが提供されている場合、その値が使用されます。SAML_FAMILY_NAME_CLAIMのみが提供されている場合は、その値が使用されます。SAML_USERNAME_CLAIMが提供されている場合、その値が使用されます。- 上記の属性がいずれも提供されない場合、
SAML_EMAIL_CLAIMが表示ユーザー名として使用されます。
このフローに従うことで、SAML認証中に適切なユーザー名が決定されます。
設定例
このガイドはいかがでしたか?