Otorisasi pengguna dengan layanan microser

12

Haruskah layanan microser bertanggung jawab untuk menangani otorisasi mereka sendiri atau Anda pikir lebih baik untuk memiliki layanan otorisasi terpisah yang dibagikan di semua atau sebagian (dalam domain bisnis yang sama) dari layanan microser?

Bagi saya yang terakhir lebih masuk akal karena membuatnya lebih mudah untuk menerapkan perubahan, menegakkan kebijakan; itu KERING dll. Namun dapat dengan mudah keluar dari tangan oleh semua jenis layanan membuang aturan mereka ke satu tempat, dan juga khawatir tentang overhead jaringan.

Adakah pikiran?

marcmarc
sumber

Jawaban:

7

Saya akan menggunakan sistem otentikasi terpusat dan terpadu dan memiliki izin / statistik terpisah untuk setiap layanan mikro (seperti bagaimana saya belum dapat melakukan upvote di situs pertukaran tumpukan ini, tetapi saya dapat melakukan stack overflow saat menggunakan sistem otentikasi pertukaran pertukaran sentral stack). Salah satu proyek saya saat ini akan melibatkan pendekatan ini dalam waktu dekat, yang akan menyenangkan; pekerjaan pengembangan sebelumnya melibatkan pembuatan sistem yang sesuai dengan HIPPA, yang mengharuskan otorisasi / otentikasi tingkat kedua, dan itu adalah gangguan yang memakan waktu untuk otorisasi rantai daisy dari komponen sistem yang terpisah secara hukum tetapi secara fungsional tidak dapat dipisahkan. Proses debugging melibatkan jauh lebih sedikit sukacita daripada login sederhana atau api dengan header appid dan x-auth.

Yang mana untuk digunakan tergantung pada persyaratan spesifik dari roadmap pengembangan, tapi saya akan memilih pendekatan yang lebih sederhana jika mungkin untuk menghindari overhead yang berlebihan dan waktu / upaya pengembangan.

Jonathan Voss
sumber
Kami menggunakan OAuth2 untuk otentikasi, dan saya ingin mengikuti prinsip yang sama - yaitu, memiliki layanan terpusat dengan satu tanggung jawab yang jelas - untuk otorisasi, daripada menduplikasi fungsi dan menyebarkan logika di seluruh layanan. Bagi saya itu adalah pelanggaran batas domain. Saya setuju bahwa itu berarti kita harus memilah isolasi aturan layanan (ala stackoverflow, programmer, dll).
morcmarc
2
Anda dapat berpotensi memiliki izin global yang ditolak oleh izin khusus layanan, berguna jika segelintir layanan inti mikro menggunakan izin yang sama. Izin khusus microservice mungkin harus disimpan dalam infrastruktur aplikasi untuk microservice itu untuk menghindari masalah kinerja potensial untuk layanan otentikasi pusat.
Jonathan Voss
4

Setiap microservice tidak harus melakukan otentikasi sendiri, tetapi perlu melakukan otorisasi sendiri.

Sumber

Dan ini masuk akal. Saya berasumsi tidak ada keraguan tentang otentikasi pusat. Tetapi otorisasi cukup membingungkan.

Mempertimbangkan bahwa jumlah layanan mikro dapat tumbuh hingga ratusan, ribuan, sebuah layanan otorisasi pusat harus bertanggung jawab untuk mendaftarkan izin saja, tetapi tidak memvalidasi izin tersebut. Layanan mikro individual mungkin harus melakukan pendekatan yang berbeda untuk memvalidasi izin.

Layanan otorisasi pusat ini, mungkin perlu mendapatkan model dari layanan yang berbeda, dan pendekatan yang berbeda untuk mengambil keputusan, mungkin terlihat mudah dan cantik pada awalnya. Tapi bisa jadi kekacauan nantinya.

Ashwani Agarwal
sumber