Menghubungkan SAML provider Authentik dengan Service Provider nyata: pertukaran metadata IdP dan SP, studi kasus GitLab, Nextcloud, Google Workspace, dan AWS, pemetaan atribut lewat property mappings, hingga troubleshooting SAML dengan SAML tracer dan teknik diagnosis umum.

Di episode 14 kalian mengonfigurasi SAML provider pertama — Authentik kini bisa menerbitkan assertion. Episode 15 menjawab pertanyaan yang sesungguhnya: bagaimana menghubungkan provider itu dengan Service Provider (SP) nyata? Karena SAML hanya bermakna jika ada dua pihak, dan setiap SP punya cara integrasi serta tuntutan atribut yang sedikit berbeda.
Kuncinya ada pada dua hal: pertukaran metadata yang benar, dan pemetaan atribut yang sesuai ekspektasi SP. Kegagalan SAML hampir selalu berakar di salah satu dari keduanya — bukan di kriptografi, melainkan di data yang tidak cocok.
Integrasi SAML yang sehat dimulai dari metadata, bukan menyalin nilai manual:
https://authentik.example.com/application/saml/<slug>/metadata/) atau unduh XML-nya. Tempelkan di form SAML aplikasi. Banyak SP mengizinkan import via URL maupun upload file XML.Keuntungan metadata: nilai yang rawan salah ketik — entity ID, ACS URL, sertifikat — berpindah secara otomatis dan akurat. Sebagian aplikasi tidak mendukung ekspor metadata; untuk itu, isi manual diperlukan dengan membaca dokumentasinya.
| SP | Cara integrasi | Nilai yang perlu disiapkan |
|---|---|---|
| GitLab | OmniAuth SAML di gitlab.rb | Entity ID dan Assertion Consumer Service URL dari GitLab, IdP metadata |
| Nextcloud | Aplikasi user_saml | URL atau XML metadata IdP, atribut uid, mail, displayname |
| Google Workspace | Custom SAML app | Metadata IdP (XML), atribut email dan nama |
| AWS SSO | IAM Identity Center, external IdP | Upload metadata IdP, lalu atribut NameID dan format |
Untuk GitLab, kalian memasang di /etc/gitlab/gitlab.rb blok OmniAuth yang mengarah ke metadata Authentik. GitLab mengambil ACS URL dan entity ID dari sisi aplikasi, sementara sertifikat IdP diambil dari metadata Authentik — sekali lagi, metadata menghapus sebagian besar kerja manual:
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
gitlab_rails['omniauth_auto_link_saml_user'] = true
gitlab_rails['omniauth_providers'] = [
{
name: 'saml',
label: 'authentik',
args: {
assertion_consumer_service_url: 'https://gitlab.example.com/users/auth/saml/callback',
idp_cert_fingerprint: '4E:1E:CD:67:4A:67:5A:E9:6A:D0:3C:E6:DD:7A:F2:44:2E:76:00:6A',
idp_sso_target_url: 'https://authentik.example.com/application/saml/gitlab/',
issuer: 'https://gitlab.example.com',
name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',
attribute_statements: {
email: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'],
first_name: ['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'],
nickname: ['http://schemas.goauthentik.io/2021/02/saml/username']
}
}
}
]Di sisi Authentik, ACS URL diisi https://gitlab.example.com/users/auth/saml/callback, Audience diisi https://gitlab.example.com, dan binding disarankan Post — beberapa versi GitLab bermasalah dengan binding Redirect karena URL assertion yang terlalu panjang.
Untuk Nextcloud, pasang aplikasi user_saml dari app store, pilih mode One Login, lalu tempel metadata IdP. Atur property mapping agar atribut Authentik (username, email, name, groups) mengalir ke user Nextcloud. Nextcloud memakai atribut uid untuk mencocokkan user.
Untuk Google Workspace, buka Apps → Web and mobile apps → Add app → Custom SAML app, lalu unggah metadata XML IdP. Di menu attribute mapping, samakan atribut SAML Authentik (firstname, lastname, email) dengan yang dikirim Authentik.
Untuk AWS SSO (IAM Identity Center), pilih Enable external identity provider, unggah metadata IdP Authentik sebagai IdP metadata, lalu konfigurasi atribut NameID dan formatnya agar cocok dengan nilai persistent Authentik.
Note
Setiap SP menyebut atribut dengan nama dan URN yang berbeda. Aturan emasnya: baca dokumentasi SP untuk daftar atribut yang diminta, lalu pastikan property mapping Authentik menghasilkan atribut dengan SAML Attribute Name yang sama persis.
Sering kali SP menuntut atribut yang belum tersedia di mapping bawaan. Misalnya SP meminta atribut role untuk kontrol akses:
return "admin" if request.user.is_superuser else "user"return "admin" if ak_is_group_member(request.user, name="admin") else "member"Buat mapping dengan SAML Attribute Name sesuai yang diminta SP, pilih pada provider, dan uji dengan login. Property mapping yang mengembalikan None akan dilewati Authentik — sehingga ekspresi yang tidak menemukan nilai tidak memecah assertion.
SAML sulit di-debug karena pesannya terbungkus XML dan sering lewat beberapa redirect. Alat paling penting: ekstensi browser SAML tracer (tersedia untuk Firefox dan Chrome). Ia menampilkan seluruh permintaan dan respons SAML di setiap login — termasuk assertion, atribut, dan signature.
Masalah yang paling sering muncul:
timedatectl status
ntpq -pWarning
Mulailah diagnosis dari assertion mentah di SAML tracer, bukan dari pesan error SP yang sering generik. Assertion menjawab tiga pertanyaan sekaligus: siapa user-nya, atribut apa yang dibawa, dan signature-nya valid atau tidak.
Setelah metadata dan atribut disiapkan, uji dengan alur yang tenang:
Strategi pengujian yang membatasi risiko: mulai dari satu user uji dan satu aplikasi, konfirmasi seluruh atribut benar, baru lalu beri akses ke seluruh organisasi. Sinkronkan juga kunci dan metadata antara kedua sisi setiap kali sertifikat Authentik diganti — perubahan sertifikat adalah momen paling rawan integrasi SAML "mendadak rusak".
Episode ini menghubungkan SAML provider Authentik dengan SP nyata: pertukaran metadata dua arah, studi kasus GitLab, Nextcloud, Google Workspace, dan AWS, pemetaan atribut lewat property mappings kustom, serta teknik troubleshooting dengan SAML tracer, pengecekan signature, audience mismatch, dan sinkronisasi waktu.
Pola yang harus kalian bawa: metadata meminimalkan kesalahan manual, atribut harus cocok dengan nama yang diminta SP, dan assertion mentah di SAML tracer adalah sumber kebenaran diagnosis. Di episode 16, kita membalik arah koneksi — dari Authentik sebagai IdP menjadi Authentik sebagai klien: OAuth sources (social login), menghubungkan GitHub, Google, dan Discord sebagai sumber login. Sampai jumpa!