Data mana yang harus disimpan sebagai `Klaim`?

9

Dalam ASP.Net Core, saya menemukan Claimsotorisasi adalah metode yang sangat tidak konkret. Kami dapat menambahkan apa pun sebagai ClaimTypedan ClaimValuepasangan; 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?

Mohammed Noureldin
sumber
4
Anda akan menyimpan di sana data apa pun yang Anda butuhkan untuk memvalidasi / mengotorisasi pengguna. Itu hampir pasti tidak termasuk 50% dari data aplikasi Anda.
Robert Harvey

Jawaban:

3

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:

  • identitas pengguna
  • nama pengguna
  • email pengguna
  • peran
  • keanggotaan grup

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.

Berin Loritsch
sumber
0

Ada banyak sistem, terutama STS / sistem federasi, yang melakukannya dengan cara ini:

  • satu klaim yang menggambarkan pengguna secara unik
  • bermacam-macam klaim yang menggambarkan hal-hal konseptual umum yang mereka (dan lainnya) miliki

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.

Tagihan
sumber