Berbagi teknologi

Pertanyaan skenario wawancara arsitektur-bagaimana menerapkan sistem masuk tunggal (SSO)

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Ringkasan

Single Sign-On (SSO) adalah mekanisme autentikasi yang memungkinkan pengguna untuk login menggunakan satu kredensial di beberapa aplikasi dan situs web. Artinya, pengguna hanya perlu login satu kali di beberapa aplikasi atau layanan

Berbasis kue

Gunakan mekanisme cookie dari domain induk untuk menyetel cookie bersama di bawah nama domain utama. Nama subdomain dapat membaca cookie ini untuk mengonfirmasi identitas pengguna.
Metode ini cocok untuk SSO antara beberapa subdomain dengan nama domain utama yang sama, namun tidak berlaku jika nama domain utama berbeda.
Keuntungan: Mudah diterapkan, cocok untuk beberapa subdomain dengan nama domain utama yang sama.
Kekurangan: Tidak cocok untuk nama domain lintas utama, keamanan rendah, dan rentan terhadap serangan man-in-the-middle dan serangan cross-site scripting (XSS).

Berdasarkan Token (OAuth, JWT)

Setelah pengguna mengautentikasi di penyedia identitas, dia memperoleh Token (seperti Access Token atau JWT di OAuth).
Token disimpan di sisi klien (seperti Cookie, Penyimpanan Lokal) atau sisi server (seperti Sesi). Ketika pengguna mengakses aplikasi lain, aplikasi tersebut menggunakan Token untuk memverifikasi identitas pengguna.
Cara ini mendukung lintas domain dan lebih aman karena Token dapat dienkripsi.

Keuntungan: Mendukung lintas domain, Token dapat dienkripsi untuk transmisi, meningkatkan keamanan; Token dapat disimpan secara offline, mengurangi beban server.
Kekurangan: Masa berlaku dan keamanan Token perlu dikelola dengan baik untuk mencegah kebocoran Token; jika JWT terlalu lama dapat mempengaruhi kinerja.

Layanan Otentikasi Terpusat (CAS, SAML)

Layanan otentikasi terpusat berfungsi sebagai satu titik masuk dan semua aplikasi mengandalkannya untuk otentikasi.
Setelah pengguna masuk ke server CAS/SAML, server CAS/SAML akan menghasilkan Tiket atau Pernyataan dan meneruskannya ke aplikasi. Aplikasi kemudian akan menggunakan Tiket atau Pernyataan ini untuk berkomunikasi dengan server CAS/SAML untuk mengonfirmasi identitas pengguna.
CAS dan SAML adalah dua protokol otentikasi terpusat yang banyak digunakan.

Keunggulan: Menyediakan solusi SSO terstandar, mudah diintegrasikan; mampu mendukung berbagai aplikasi dan layanan berbeda.
Kekurangan: Layanan terpusat dapat menjadi satu titik kegagalan; konfigurasi dan pemeliharaannya rumit.

Sesi Terdistribusi:

Menggunakan penyimpanan sesi bersama (seperti Redis, Memcached), semua aplikasi dapat mengakses penyimpanan sesi yang sama.
Setelah pengguna masuk ke aplikasi apa pun, informasi sesi ditulis ke penyimpanan bersama, dan aplikasi lain dapat menentukan status pengguna dengan membaca sesi bersama ini.

Keuntungan: Peningkatan skalabilitas dan ketersediaan aplikasi, data sesi dapat dibagikan dalam cluster.
Kekurangan: Meningkatnya ketergantungan pada sistem penyimpanan bersama, kegagalan sistem penyimpanan akan mempengaruhi seluruh proses SSO.

Protokol Akses Direktori Ringan (LDAP)

LDAP digunakan untuk menyimpan dan mengambil informasi pengguna dan grup di jaringan, mendukung SSO.
Aplikasi memverifikasi identitas pengguna dengan menanyakan server LDAP, sehingga setiap aplikasi tidak perlu menyimpan informasi pengguna secara terpisah.

Keuntungan: Mudah untuk mengelola dan menanyakan informasi pengguna, cocok untuk lingkungan perusahaan besar.
Kekurangan: Relatif rumit untuk dikonfigurasi dan dipelihara, tidak cocok untuk proyek kecil atau sementara.

OAuth 2.0/OIDC

OAuth 2.0 adalah kerangka otorisasi. OpenID Connect (OIDC) dibangun di atas OAuth 2.0 dan menyediakan fungsi otentikasi.
Setelah pengguna masuk ke server otorisasi, server otorisasi mengeluarkan token ke aplikasi klien, dan aplikasi menggunakan token ini untuk mengakses server sumber daya atau mengonfirmasi identitas pengguna.

Keuntungan: Antarmuka standar, aplikasi pihak ketiga yang mudah diintegrasikan; mendukung berbagai mode otorisasi.
Kekurangan: Ada banyak detail implementasi dan langkah-langkah keamanan perlu dirancang dengan hati-hati; mungkin ada masalah dengan izin yang berlebihan;

Kerberos

Kerberos adalah protokol otentikasi jaringan, sangat cocok untuk lingkungan jaringan internal perusahaan dan mendukung SSO.
Kerberos menggunakan mekanisme tiket (Tiket) untuk mengautentikasi pengguna dan layanan. Setelah login, pengguna akan menerima serangkaian tiket, yang dapat digunakan untuk mengakses layanan lain di jaringan tanpa harus memasukkan kata sandi lagi.

Keuntungan: Keamanan tinggi, cocok untuk jaringan internal perusahaan besar; mendukung berbagai mekanisme otentikasi.
Kekurangan: Konfigurasi yang rumit dan biaya pemeliharaan yang tinggi terbatas pada jaringan internal dan tidak cocok untuk lingkungan Internet.