Saya mengalami kesulitan memilih strategi otentikasi yang layak / aman untuk arsitektur layanan mikro. Satu-satunya posting SO yang saya temukan pada topik adalah yang ini: Single Sign-On dalam Arsitektur Microsoft
Gagasan saya di sini adalah untuk memiliki di setiap layanan (mis. Otentikasi, pengiriman pesan, pemberitahuan, profil, dll.) Referensi unik untuk setiap pengguna (cukup logis dari miliknya user_id
) dan kemungkinan untuk mendapatkan pengguna saat iniid
jika login.
Dari penelitian saya, saya melihat ada dua strategi yang mungkin:
1. Arsitektur bersama
Dalam strategi ini, aplikasi otentikasi adalah salah satu layanan di antara yang lainnya. Tetapi setiap layanan harus dapat membuat konversi session_id
=> user_id
sehingga harus mati sederhana. Itu sebabnya saya memikirkan Redis, yang akan menyimpan kuncinya: nilaisession_id:user_id
.
2. Arsitektur firewall
Dalam strategi ini, penyimpanan sesi tidak terlalu penting, karena hanya ditangani oleh aplikasi otentikasi. Kemudian user_id
dapat diteruskan ke layanan lain. Saya memikirkan Rails + Devise (+ Redis atau mem-cache, atau penyimpanan cookie, dll.) Tetapi ada banyak kemungkinan. Satu-satunya hal yang penting adalah bahwa Layanan X tidak akan pernah perlu untuk mengotentikasi pengguna.
Bagaimana kedua solusi tersebut dibandingkan dalam hal:
- keamanan
- kekokohan
- skalabilitas
- kemudahan penggunaan
Atau mungkin Anda akan menyarankan solusi lain yang belum saya sebutkan di sini?
Saya suka solusi # 1 lebih baik tetapi belum menemukan banyak implementasi standar yang akan mengamankan saya pada kenyataan bahwa saya akan ke arah yang benar.
Saya harap pertanyaan saya tidak ditutup. Saya tidak tahu harus bertanya ke mana lagi.
Terima kasih sebelumnya