Gambaran Umum
Cara mengonfigurasi SAML untuk LibreChat
Ikhtisar
SAML (Security Assertion Markup Language) adalah protokol autentikasi yang digunakan secara luas yang memungkinkan Single Sign-On (SSO). Protokol ini memungkinkan pengguna untuk melakukan autentikasi satu kali dengan Identity Provider (IdP) dan mendapatkan akses ke berbagai layanan tanpa perlu masuk kembali.
SLO (Single Logout) Tidak Didukung
Single Logout (SLO) tidak didukung dalam implementasi ini.
Eksklusi Timbal Balik OpenID dan SAML
Jika autentikasi OpenID diaktifkan, autentikasi SAML akan dinonaktifkan secara otomatis.
Hanya satu metode autentikasi yang dapat aktif dalam satu waktu.
Aktivasi Metode Autentikasi Berdasarkan Variabel Lingkungan
Tabel berikut menunjukkan metode autentikasi mana yang diaktifkan tergantung pada pengaturan variabel lingkungan:
| OIDC | SAML | Metode Autentikasi Aktif |
|---|---|---|
| ✅Diaktifkan | ❌Dinonaktifkan | OpenID Connect (OIDC) |
| ❌Dinonaktifkan | ✅Diaktifkan | SAML |
| ✅Diaktifkan | ✅Diaktifkan | OpenID Connect (OIDC) |
| ❌Dinonaktifkan | ❌Dinonaktifkan | Tidak ada autentikasi yang diaktifkan |
Format dan Konfigurasi Sertifikat SAML
Variabel lingkungan SAML_CERT digunakan untuk menentukan sertifikat penandatanganan Identity Provider (IdP) untuk memvalidasi Respons SAML. Sertifikat ini harus disediakan dalam format PEM dan dapat ditentukan dengan salah satu cara berikut:
Sebagai Jalur File (Relatif atau Absolut)
Jika SAML_CERT diatur ke jalur file, aplikasi akan memuat sertifikat dari file yang ditentukan.
Baik jalur relatif maupun jalur absolut didukung.
# Relative path (resolved based on the application root)
SAML_CERT=idp-cert.pem
# Absolute path
SAML_CERT=/path/to/idp-cert.pemContoh Isi Berkas (idp-cert.pem):
-----BEGIN CERTIFICATE-----
MIIDazCCAlOgAwIBAgIUKhXaFJGJJPx466rl...
-----END CERTIFICATE-----Sebagai String PEM Satu Baris
Sertifikat juga dapat disediakan sebagai string PEM satu baris (dikodekan Base64, tanpa jeda baris).
SAML_CERT="MIICizCCAfQCCQCY8tKaMc0BMjANBgkqh...W=="Format ini berguna saat menyimpan sertifikat secara langsung di dalam environment variables.
Sebagai String PEM Multi-Baris (dengan urutan escape \n)
Sertifikat juga dapat disediakan sebagai string PEM multi-baris di mana baris baru direpresentasikan sebagai \n.
SAML_CERT="-----BEGIN CERTIFICATE-----\nMIIDazCCAlOgAwIBAgIUKhXaFJGJJPx466rl...\n-----END CERTIFICATE-----\n"Format ini berguna saat mengonfigurasi sertifikat di dalam file .env dengan tetap mempertahankan struktur PEM secara utuh.
Persyaratan Format Sertifikat
- Sertifikat harus selalu dalam format PEM (sertifikat X.509 yang dikodekan Base64).
- Jika disediakan sebagai file, file tersebut harus berupa format PEM pesan tekstual ketat RFC7468 yang valid.
- Saat menggunakan sertifikat satu baris, pastikan tidak ada jeda baris dalam nilainya.
- Saat menggunakan string multi-baris, pastikan baris baru direpresentasikan sebagai urutan escape \n.
Untuk detail lebih lanjut, lihat dokumentasi node-saml.
Alur Penentuan Nama Pengguna Tampilan Berdasarkan Atribut SAML

Dalam autentikasi SAML, nama pengguna yang ditampilkan ditentukan berdasarkan alur berikut.
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:#FFA500Aturan Penentuan
- Jika
SAML_NAME_CLAIMdisediakan, nilainya akan digunakan sebagai nama pengguna tampilan. - Jika
SAML_GIVEN_NAME_CLAIMdanSAML_FAMILY_NAME_CLAIMkeduanya disediakan, nilai yang sesuai akan digabungkan untuk membentuk nama pengguna. - Jika hanya
SAML_GIVEN_NAME_CLAIMyang disediakan, nilainya akan digunakan. - Jika hanya
SAML_FAMILY_NAME_CLAIMyang disediakan, nilainya akan digunakan. - Jika
SAML_USERNAME_CLAIMdisediakan, nilainya akan digunakan. - Jika tidak ada atribut di atas yang disediakan,
SAML_EMAIL_CLAIMakan digunakan sebagai nama pengguna tampilan.
Dengan mengikuti alur ini, nama pengguna yang sesuai akan ditentukan selama autentikasi SAML.
Contoh Konfigurasi
Bagaimana panduan ini?