Apa klaim dalam ASP .NET Identity

174

Dapatkah seseorang tolong jelaskan, apa artinya mekanisme klaim dalam ASP.NET Identity Core baru?

Seperti yang saya lihat, ada AspNetUserLoginstabel, yang berisi UserId, LoginProviderdan ProviderKey.

Tetapi, saya masih tidak dapat memahami atau menemukan informasi kapan data ditambahkan ke AspNetUserClaimstabel dan untuk situasi apa tabel ini digunakan?

Maxim Zhukov
sumber

Jawaban:

207

Apa arti mekanisme klaim dalam ASP.NET Identity Core baru?

Ada dua pendekatan otorisasi umum yang didasarkan pada Peran dan Klaim.

Keamanan Berbasis Peran

Seorang pengguna ditugaskan ke satu peran atau lebih di mana pengguna mendapatkan hak akses. Selain itu, dengan menetapkan pengguna ke peran, pengguna segera mendapatkan semua hak akses yang ditetapkan untuk peran itu.

Keamanan Berbasis Klaim

Identitas berbasis klaim adalah serangkaian klaim. Klaim adalah pernyataan yang dibuat entitas (pengguna atau aplikasi lain) tentang dirinya sendiri, itu hanya klaim. Misalnya daftar klaim dapat memiliki nama pengguna, email pengguna, usia pengguna, otorisasi pengguna untuk suatu tindakan. Di Keamanan berbasis peran, pengguna menyajikan kredensial langsung ke aplikasi. Dalam model berbasis klaim, pengguna menyajikan klaim dan bukan kredensial ke aplikasi. Agar klaim memiliki nilai praktis, klaim harus berasal dari entitas yang dipercaya oleh aplikasi.

Langkah-langkah di bawah ini mengilustrasikan urutan yang terjadi dalam model keamanan berbasis klaim:

  1. Pengguna meminta tindakan. Aplikasi pihak yang mengandalkan (meminta) meminta token.
  2. Pengguna menyajikan kredensial kepada otoritas penerbit yang dipercaya oleh aplikasi RP.
  3. Otoritas penerbit mengeluarkan token yang ditandatangani dengan klaim, setelah mengautentikasi kredensial pengguna.
  4. Pengguna menyajikan token ke aplikasi RP. Aplikasi memvalidasi tanda tangan token, mengekstraksi klaim, dan berdasarkan pada klaim, menerima atau menolak permintaan.

Namun, saya masih tidak dapat memahami dan menemukan informasi apa pun, ketika data ditambahkan ke AspNetUserClaims dan untuk situasi apa tabel ini digunakan?

Saat Anda berada dalam situasi di mana Keamanan Berbasis Peran tidak digunakan, dan Anda memilih untuk menggunakan Keamanan Berbasis Klaim, Anda perlu menggunakan tabel AspNetUserClaims. Untuk cara menggunakan Klaim dalam ASP.NET Identity, lihat tautan di bawah ini untuk informasi lebih lanjut.

http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html

Memperbarui

Jam berapa saya harus menggunakan keamanan berbasis peran dan kapan berbasis klaim? Bisakah Anda menulis beberapa contoh?

Tidak ada situasi yang sangat jelas di mana Anda akan atau tidak akan menggunakan Keamanan Berbasis Peran atau Klaim, Tidak seperti kasus di mana Anda akan menggunakan A daripada B.

Tetapi, kontrol akses Berbasis Klaim memungkinkan pemisahan aturan otorisasi yang lebih baik dari logika bisnis inti. Ketika aturan otorisasi berubah, logika bisnis inti tetap tidak terpengaruh. Akan ada situasi di mana Anda mungkin lebih suka menggunakan pendekatan Berbasis Klaim.

Terkadang klaim tidak diperlukan. Ini adalah penafian penting. Perusahaan dengan sejumlah aplikasi internal dapat menggunakan Otentikasi Windows Terpadu untuk mencapai banyak manfaat yang diberikan oleh klaim. Active Directory melakukan pekerjaan yang baik untuk menyimpan identitas pengguna, dan karena Kerberos adalah bagian dari Windows, aplikasi Anda tidak harus menyertakan banyak logika otentikasi. Selama setiap aplikasi yang Anda bangun dapat menggunakan Otentikasi Windows Terpadu, Anda mungkin telah mencapai utopia identitas Anda. Namun, ada banyak alasan mengapa Anda mungkin memerlukan sesuatu selain otentikasi Windows. Anda mungkin memiliki aplikasi yang menghadap ke web yang digunakan oleh orang-orang yang tidak memiliki akun di domain Windows Anda. Alasan lain mungkin karena perusahaan Anda telah bergabung dengan perusahaan lain dan Anda kembali mengalami masalah saat mengautentikasi dua hutan Windows yang tidak (dan mungkin tidak pernah) memiliki hubungan kepercayaan. Mungkin Anda ingin berbagi identitas dengan perusahaan lain yang memiliki aplikasi Kerangka non-NET atau Anda perlu berbagi identitas antara aplikasi yang berjalan pada platform yang berbeda (misalnya, Macintosh). Ini hanya beberapa situasi di mana identitas berbasis klaim dapat menjadi pilihan yang tepat untuk Anda.

Untuk informasi lebih lanjut, silakan kunjungi http://msdn.microsoft.com/en-us/library/ff359101.aspx

Lin
sumber
6
Terima kasih atas jawabannya, tetapi saya masih tidak mengerti, jam berapa saya harus menggunakan keamanan berbasis peran dan kapan berbasis klaim? Bisakah Anda menulis beberapa contoh?
Maxim Zhukov
1
@ FSou1, sebenarnya tidak ada kasus di mana Anda akan menggunakan pendekatan Berbasis Peran atau Klaim. Lihat jawaban saya yang diperbarui untuk kejelasan lebih lanjut.
Lin
The user presents the credentials to the issuing authority that the RP application trusts.Apa yang dapat Anda gunakan sebagai otoritas / penerbit ini? Beberapa contoh akan menyenangkan. Saya merah artikel di situs msdn (tautan yang Anda berikan), tetapi mereka hanya mencantumkan satu contoh: ADFS, apakah ada opsi lain? Tidak dapat menemukan informasi ini di mana pun. :(
Jo Smo
1
Panduan untuk Identitas Berbasis Klaim dan Kontrol Akses memberikan penjelasan lengkap tentang pendekatan berbasis vs vs Kontrol Akses Berbasis (RBAC). Buku lengkap tersedia gratis dan online melalui unduhan MS. goodreads.com/book/show/…
Chris Mylonas
2
Buku Microsoft RBAC gratis yang disebutkan oleh @ChrisMylonas dapat diunduh secara gratis dari Microsoft di sini: microsoft.com/en-us/download/details.aspx?id=28362
OzBob
16

Hanya untuk menambahkan lebih banyak tentang apa yang @Lin katakan di atas. Saya secara khusus merujuk pada pertanyaan:

Jam berapa saya harus menggunakan keamanan berbasis peran dan kapan berbasis klaim? Bisakah Anda menulis beberapa contoh?

Pertimbangkan kasus di mana Anda memiliki sistem pencatatan jam kerja di mana Anda memiliki teknisi dan manajer. Pada akhir setiap minggu, teknisi harus mengatur laporan dengan informasi waktu yang menunjukkan jam kerja pengrajin bekerja untuk minggu itu, yang dikonsolidasikan dan digunakan oleh penggajian. Sistem seperti itu seringkali harus diubah atau diperbaiki sebelum laporan akhir diserahkan, karena Anda tidak ingin membayar lebih atau membayar lebih rendah kepada karyawan Anda. Anda dapat menggunakan Role-Basedpendekatan untuk Manajer dan Teknisi dengan membuat Manager Roledan Technician Role. Tetapi yang Manager Rolememiliki kemampuan untuk mengakses dan mengedit informasi pencatatan jam kerja dari para pengrajin. Di sisi lain, Anda dapat memilikiTechnician Roletanpa kemampuan ini untuk mengakses informasi itu. Tapi ini bagian yang menarik; Seorang manajer dapat membuat klaim dan mengizinkan teknisi untuk mengakses Sistem Pencatatan Jam Kerja dan membuat laporan. Jadi klaim dapat dibuat hanya untuk akses tanpa edit atau dapat dibuat dengan akses dan kemampuan edit.

Ini lebih seperti mengatakan, Ya, Secara default sebagai manajer saya dapat mengakses beberapa informasi yang tidak dapat diakses oleh teknisi saya. Tapi saya tidak selalu di kantor? apa yang bisa saya lakukan sehingga dia masih bisa melakukan pekerjaan bahkan ketika saya tidak ada? Untuk mengatasi ini, sistem dapat memiliki fitur bagi manajer untuk membuat klaim untuk orang-orang tanpa akses ke beberapa informasi tertentu. Kita sering melihat ini di mana-mana dalam sistem ERP kami. Seorang pengguna tanpa akses ke beberapa modul dan ketika mereka dipromosikan mereka memberikan izin untuk lebih banyak modul dari sistem ERP, kadang-kadang mempertahankan peran pengguna yang sama.

Ini adalah contoh yang dapat Anda pertimbangkan untuk lebih memahami klaim dan peran.

Mosia Thabo
sumber
0

Ada dua jenis otentikasi dalam identitas ASP.Net.

  1. Berbasis peran
  2. Berbasis klaim

Anda dapat menggunakan salah satu atau keduanya sekaligus. Gunakan peran berdasarkan ketika Anda memiliki hal-hal yang sangat jelas. Misalnya Anda membuat dua peran guru dan siswa. Hanya guru yang bisa menambahkan mata pelajaran. Jadi, Anda menetapkan peran guru untuk para pengguna yang Anda ingin memiliki akses untuk menambahkan mata pelajaran.

Berbasis klaim lebih fleksibel. Misalkan Anda memiliki persyaratan, beberapa siswa juga dapat menambahkan mata pelajaran. Dalam hal ini Anda harus membuat satu peran lagi yang dapat menjadi siswa dan akses untuk menambahkan subjek. Tetapi jika Anda menggunakan berbasis klaim itu akan sangat mudah. Cukup buat klaim seperti addSubject dan tetapkan ke pengguna mana saja yang ingin Anda akses untuk menambahkan subjek.

umer
sumber