Dalam ASP.Net Core, saya menemukan Claims
otorisasi adalah metode yang sangat tidak konkret. Kami dapat menambahkan apa pun sebagai ClaimType
dan ClaimValue
pasangan; grup, nama depan, nama belakang, brithdate, canAccessThisURI, isEditor, dll. Namun, pendekatan ini (menyimpan apa pun yang dapat disimpan sebagai klaim) akan membuat tabel klaim besar yang mencakup 50% dari data aplikasi saya.
Saya bertanya-tanya, sebagai praktik yang baik, apa data umum yang harus disimpan sebagai klaim?
Jawaban:
Klaim hanyalah fakta tentang pengguna yang berpotensi digunakan untuk mengidentifikasi atau mengotorisasi seseorang di sistem Anda. Kedua kendala itu harus cukup untuk membatasi apa yang akan Anda masukkan sebagai klaim.
Beberapa ide untuk klaim meliputi:
Metadata pengguna harus dibatasi pada apa yang diperlukan untuk mempersonalisasi aplikasi untuk pengguna dan untuk mengaitkan pengguna dengan data mereka. Id pengguna cukup untuk mengaitkan pengguna dengan data atau memberikan jejak audit. Jangan serakah.
Peran dan keanggotaan grup adalah klaim otorisasi. Misalnya jika Anda memiliki grup di aplikasi Anda maka daftar grup yang dimiliki pengguna memungkinkan Anda dengan cepat memeriksa apakah mereka dapat mengakses grup pribadi atau tidak. Peran sedikit lebih halus dan berbicara tentang hak istimewa yang dimiliki pengguna. Ini biasanya khusus untuk aplikasi, jadi tambahkan saja apa yang perlu Anda tegakkan.
sumber
Ada banyak sistem, terutama STS / sistem federasi, yang melakukannya dengan cara ini:
Data "profil" pengguna dalam aplikasi mungkin tidak diterjemahkan ke / dari sumber otentikasi yang Anda gunakan dan Anda tidak boleh menggunakan titik akhir yang sama setiap saat atau semua pengguna.
Jika Anda terbiasa dengan otentikasi Formulir lama, analog dengan nama pengguna & model peran dan banyak hal bawaan yang masih terlihat seperti itu jika Anda menggunakan System.Security.Claims.ClaimTypes nama dan peran dengan tepat.
Model lama atau baru tidak memberi Anda banyak hal untuk klaim atau warisan peran, tetapi itu tidak terlalu sulit untuk diterapkan dan diimplementasikan sehingga Anda dapat mengurangi volume klaim atau peran yang perlu Anda mainkan dari permintaan untuk meminta.
Jika aplikasi Anda perlu melacak ulang tahun, tetapi tidak perlu menggunakannya dalam mekanisme keamanan maka benar-benar tidak ada manfaat dalam menyimpannya dalam koleksi klaim. Masukkan ke dalam dataset profil terpisah atau apalah.
Jika aplikasi Anda perlu mendapatkan tanggal lahir sebagai klaim dari sistem lain, maka Anda mencari sesuatu yang lebih seperti menyesuaikan federasi Aututhentication atau membiarkan klaim tambahan tetap ada.
sumber