13 poin oleh xguru 2024-07-29 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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:
    1. Pengguna: orang yang ingin menggunakan aplikasi
    2. Penyedia layanan (SP): aplikasi itu sendiri
    3. 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:
    1. Pengguna mencoba mengakses bagian tertentu dari aplikasi di browser web
    2. Sistem memeriksa apakah pengguna memiliki konteks keamanan yang valid
    3. Karena pengguna tidak memiliki konteks keamanan yang valid, halaman login ditampilkan
    4. Pengguna memasukkan beberapa informasi (misalnya alamat email), yang digunakan untuk menentukan metode login yang tepat
    5. Pengguna diarahkan ke alamat web IDP, dan pesan SAML dikirim ke IDP melalui browser pengguna
    6. IDP menampilkan prompt yang meminta kredensial pengguna. Pengguna berhasil diautentikasi
    7. IDP kemudian mengarahkan kembali pengguna ke aplikasi bersama pesan SAML yang menyampaikan informasi tentang autentikasi pengguna
    8. Pesan SAML diproses, lalu sistem memutuskan bahwa konteks keamanan untuk pengguna harus dibuat
    9. 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.

Belum ada komentar.