- SAML (Single Assertion Markup Language) adalah standar yang mendefinisikan aturan untuk bertukar pesan terkait keamanan dalam format XML
- Terutama digunakan untuk pertukaran pesan antara tiga atau lebih entitas yang independen
- Skenario umumnya adalah ketika dua sistem perangkat lunak dari perusahaan yang berbeda dan seorang pengguna terlibat
- Kedua sistem perlu bertukar informasi tentang pengguna
- Integrasi kustom bisa dibuat, tetapi sulit dipelihara
- SAML menyederhanakan pekerjaan integrasi yang kompleks dengan membuat sistem-sistem mengikuti aturan yang sama
Format pesan SAML
- Pesan SAML berbentuk XML
- SAML mendefinisikan sintaks pesan dan menjelaskan cara memproses isi pesan dengan aman
- Misalnya, jika menerima tag
<Response>, Anda tahu harus mencari tag <Assertion>
- SAML juga memberikan panduan tentang seperti apa tanda tangan digital, dan bagaimana pesan harus diproses untuk menghindari masalah keamanan
Fleksibilitas SAML
- SAML dirancang dengan penekanan pada fleksibilitas. Secara prinsip, banyak hal bisa dilakukan dengan SAML, tetapi fleksibilitas itu juga memicu kompleksitas
- Spesifikasi SAML memiliki banyak sekali pengecualian, serta banyak kondisi if dan contoh, yang menambah edge case
- Karena SAML sudah tua, sebagian orang memanfaatkan fleksibilitas tersebut
- Di lingkungan produksi nyata, terutama pada sistem legacy, SAML kadang menunjukkan perilaku yang tidak biasa
- Bagi kebanyakan orang, hidup akan lebih mudah jika hanya fokus pada subset kecil dari SAML
Tujuan penggunaan SAML di dunia nyata
- SAML terutama digunakan untuk Single Sign-On (SSO)
- SAML mendefinisikan beberapa jenis SSO yang agak aneh, tetapi umumnya yang digunakan adalah Web Browser SSO Profile
- Pengguna akhir terlebih dahulu diautentikasi ke sistem terpusat, lalu mengakses aplikasi perangkat lunak yang diinginkan
- Pengguna tidak melakukan autentikasi langsung ke aplikasi
- Misalnya, jika Anda pernah menggunakan Okta untuk mengakses email, berarti Anda telah menggunakan Web Browser SSO Profile
Entitas yang terlibat dalam SSO
- Ada tiga pihak yang terlibat dalam SSO:
- Pengguna: orang yang ingin menggunakan aplikasi
- Penyedia layanan (SP): aplikasi itu sendiri
- Penyedia identitas (IDP): layanan terpusat yang digunakan pengguna untuk autentikasi
- IDP milik tiap pelanggan bisa dianggap sebagai database. Ia melacak data tentang orang-orang
- Perusahaan sering menggunakan penyedia identitas untuk menempatkan karyawan ke departemen tertentu dan memberi berbagai izin
- Setiap kali pengguna login melalui SAML, informasi perlu diambil dari IDP. Dalam SSO, biasanya yang diminta adalah konfirmasi ID pengguna ke IDP
- Diperlukan hubungan kepercayaan yang telah dikonfigurasi sebelumnya dengan IDP
- Semua pelanggan yang menggunakan SAML SSO memerlukan pengaturan masing-masing di aplikasi
- Namun, pesan tidak dipertukarkan langsung dengan IDP. Dalam SAML SSO, penyedia layanan dan penyedia identitas berkomunikasi melalui browser pengguna
Cara entitas SAML saling berinteraksi
- Proses SAML SSO yang umum:
- Pengguna mencoba mengakses bagian tertentu dari aplikasi di browser web
- Sistem memeriksa apakah pengguna memiliki konteks keamanan yang valid
- Karena pengguna tidak memiliki konteks keamanan yang valid, halaman login ditampilkan
- Pengguna memasukkan beberapa informasi (misalnya alamat email), yang digunakan untuk menentukan metode login yang tepat
- Pengguna diarahkan ke alamat web IDP, dan pesan SAML dikirim ke IDP melalui browser pengguna
- IDP menampilkan prompt yang meminta kredensial pengguna. Pengguna berhasil diautentikasi
- IDP kemudian mengarahkan kembali pengguna ke aplikasi bersama pesan SAML yang menyampaikan informasi tentang autentikasi pengguna
- Pesan SAML diproses, lalu sistem memutuskan bahwa konteks keamanan untuk pengguna harus dibuat
- Pengguna diberi akses ke bagian aplikasi yang diinginkan
- Proses SAML SSO juga bisa dimulai dari penyedia identitas
- Dalam kasus ini, yang diterima adalah respons autentikasi tanpa mengirim permintaan autentikasi terlebih dahulu
- Saat mengimplementasikan dukungan SAML SSO, Anda harus siap menangani SSO yang dimulai dari IDP
Pesan yang dipertukarkan dalam SAML
- Dalam SAML SSO, ada dua jenis pesan utama yang menjadi perhatian
- Pesan dari penyedia layanan ke IDP disebut permintaan SAML (request)
- Pesan yang kembali dari IDP ke penyedia layanan disebut respons SAML (response)
- Permintaan SAML sebenarnya tidak terlalu rumit. Cukup mengirim XML melalui HTTP redirect
- Sertakan ID di tag
<AuthnRequest> agar IDP dapat membagikan <Response> yang terkait dengan permintaan awal
- Data yang dibungkus dalam tag
<Issuer> juga dikirim ke IDP untuk memberi tahu siapa pengirimnya
- Respons SAML lebih rumit. Biasanya dikirim melalui POST
- Secara konseptual,
<Response> membungkus beberapa tag <Assertion>
<Assertion> membungkus klaim tentang pengguna (siapa dia, bagaimana dia diautentikasi oleh IDP, dan sebagainya)
- Assertion diproses untuk menentukan apakah pengguna akan di-login atau tidak
Hal yang perlu diperhatikan
- Banyak detail, terutama yang penting untuk keamanan, dihilangkan di sini
- Kecuali Anda memang tertarik secara pribadi pada SAML atau punya alasan profesional untuk menyelidikinya secara mendalam, tidak disarankan mengimplementasikan login berbasis SAML sendiri. Itu buang-buang waktu
- Jika Anda ingin menyiapkan SAML secepat mungkin, kami menyediakan open source SSOReady yang mengabstraksikan SAML. Ini akan menghemat banyak waktu dan penderitaan
Belum ada komentar.