Belajar Keycloak - Sejarah, Latar Belakang & Mengapa Membutuhkan SSO
Memahami mengapa SSO dibutuhkan: masalah password fatigue dan risiko keamanan autentikasi tradisional, evolusi autentikasi dari basic hingga protokol modern, serta keuntungan dan tantangan Single Sign-On.
Di episode 0 kalian menjalankan Keycloak dengan Docker dan mengenal konsep realm. Episode 1 ini berhenti sejenak dari praktik untuk memahami mengapa SSO itu ada: masalah autentikasi tradisional yang menyiksa pengguna dan tim IT, bagaimana autentikasi berevolusi dari waktu ke waktu, serta keuntungan dan risiko menerapkan SSO. Pemahaman ini menjadi alasan di balik setiap keputusan arsitektur pada episode-episode berikutnya.
Sebelum SSO populer, hampir setiap aplikasi mengelola kredensialnya sendiri. Setiap sistem punya username dan password berbeda, dan konsekuensinya menumpuk:
Multiple usernames dan passwords — seorang karyawan bisa memegang puluhan kredensial untuk email, ERP, CRM, repository kode, dan berbagai tool internal.
Password fatigue — kelelahan karena harus mengingat terlalu banyak password memicu perilaku buruk seperti menulis password di sticky note atau memakai satu password untuk semua akun.
Security risks — password reuse memperbesar dampak kebocoran satu database: begitu satu kredensial bocor, semua aplikasi yang memakai password sama ikut terancam.
User experience friction — setiap login tambahan menambah gesekan, dan semakin lama alur akses semakin buruk produktivitas.
IT support burden — panggilan help desk yang dominan adalah reset password. Semakin banyak sistem, semakin besar beban tim IT.
Compliance complexity — audit akses menjadi sulit ketika identitas tersebar di banyak silo dan tidak ada satu titik kontrol yang jelas.
Semua masalah di atas tidak berdiri sendiri — mereka saling menguatkan:
Lingkaran setan — semakin banyak sistem, semakin banyak password; semakin banyak password, semakin besar godaan memakai yang sama.
Permukaan serangan melebar — setiap akun yang memakai password sama adalah pintu masuk ke sistem lain ketika satu kredensial bocor.
Beban organisasi — panggilan help desk, resiko compliance, dan gesekan pengguna berbiaya nyata di skala enterprise.
Note
Panggilan help desk untuk reset password secara konsisten menjadi salah satu
jenis ticket terbesar di organisasi mana pun. SSO tidak menghapus reset
password, tetapi memusatkannya sehingga penyelesaiannya jauh lebih cepat
dan konsisten.
Perintah curl -u di atas mengirim username dan password pada setiap request. Kredensial yang sama terus diulang berarti peluang kebocoran semakin besar — inilah salah satu pendorong utama evolusi menuju token dan SSO.
Single Sign-On (SSO) adalah mekanisme di mana satu autentikasi memberikan akses ke banyak aplikasi. Ciri utamanya:
Single authentication for multiple applications — pengguna login sekali, lalu diarahkan ke aplikasi lain tanpa login ulang.
Centralized identity management — user, kredensial, dan kebijakan dikelola di satu tempat.
Improved user experience — alur akses menjadi singkat dan konsisten.
Enhanced security — kebijakan keamanan bisa diterapkan seragam di semua aplikasi.
Reduced IT costs — pengelolaan identitas terpusat menurunkan beban operasional.
Dalam arsitektur SSO ada dua pihak utama: Identity Provider (IdP) yang melakukan autentikasi (dalam series ini, Keycloak) dan Service Provider (SP) yang merupakan aplikasi yang ingin diakses. SSO bisa dipicu dari dua arah:
Arah
Inisiatif
Contoh
SP-initiated
Pengguna membuka aplikasi lebih dulu, lalu diarahkan ke IdP
Membuka portal internal, diarahkan ke halaman login SSO
IdP-initiated
Pengguna login di IdP lebih dulu, lalu memilih aplikasi
Login di dashboard SSO lalu memilih aplikasi
Kedua pola ini akan sering kalian temui saat mengkonfigurasi Keycloak dan mengintegrasikan aplikasi.
User convenience — satu login menghilangkan kebiasaan mencatat dan menebak banyak password.
Reduced password fatigue — pengguna cukup mengingat satu kredensial utama.
Improved security posture — kebijakan bisa ditegakkan di satu titik, termasuk MFA (multi-factor authentication) yang hanya perlu dikonfigurasi sekali di IdP.
Centralized access control — pemberian dan pencabutan akses dilakukan dari satu konsol, berlaku untuk semua aplikasi.
Better compliance — audit login dan akses lebih mudah karena semua event tercatat terpusat.
Simplified user provisioning — saat karyawan bergabung atau keluar, akses ke semua aplikasi diatur dari satu tempat.
Reduced help desk calls — reset password menjadi satu alur terpusat yang cepat.
SSO bukan tanpa harga. Pahami risikonya sebelum berkomitmen:
Single point of failure — jika IdP down, semua aplikasi yang bergantung padanya ikut tidak bisa diakses. Perlu ketersediaan tinggi dan strategi fallback.
Implementation complexity — mengintegrasikan protokol identitas ke banyak aplikasi membutuhkan pemahaman yang dalam dan pengujian menyeluruh.
Legacy application support — aplikasi lama yang tidak mendukung OAuth 2.0 atau SAML membutuhkan adapter atau pola bridging.
Session management — sesi SSO, sesi aplikasi, dan logout perlu dikelola hati-hati agar tidak meninggalkan celah.
Security considerations — satu kredensial yang bocor berarti akses ke banyak sistem sekaligus, sehingga proteksi seperti MFA menjadi wajib.
Episode 1 menjelaskan mengapa SSO diperlukan: masalah autentikasi tradisional seperti password fatigue dan password reuse, evolusi autentikasi dari basic authentication hingga protokol modern, keuntungan berupa pengalaman pengguna dan keamanan yang lebih baik, serta tantangan seperti single point of failure yang harus dimitigasi.
Inti yang harus dibawa pulang:
Password fatigue dan reuse adalah akar masalah — itulah yang membuat autentikasi terpusat sangat menarik.
SSO memusatkan kebijakan dan audit — termasuk peluang menerapkan MFA sekali untuk semua aplikasi.
Ada dua pola inisiasi — SP-initiated dan IdP-initiated, keduanya akan kalian temui di Keycloak.
Single point of failure adalah risiko utama — mitigasinya dibahas di episode production deployment.
Di episode 2 berikutnya, kalian berkenalan dengan empat protokol identitas utama: OAuth 2.0, OpenID Connect, SAML 2.0, dan SCIM 2.0 — masing-masing dengan peran dan kapan sebaiknya dipakai.