ClaimsPrincipal Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Implementasi IPrincipal yang mendukung beberapa identitas berbasis klaim.
public ref class ClaimsPrincipal : System::Security::Principal::IPrincipal
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
type ClaimsPrincipal = class
interface IPrincipal
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ClaimsPrincipal = class
interface IPrincipal
Public Class ClaimsPrincipal
Implements IPrincipal
- Warisan
-
ClaimsPrincipal
- Turunan
- Atribut
- Penerapan
Contoh
Contoh berikut mengekstrak klaim yang disajikan oleh pengguna dalam permintaan HTTP dan menulisnya ke respons HTTP. Pengguna saat ini dibaca dari HttpContext sebagai ClaimsPrincipal. Klaim kemudian dibaca darinya dan kemudian ditulis ke respons.
if (HttpContext.Current.User is ClaimsPrincipal principal)
{
foreach (Claim claim in principal.Claims)
{
Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
}
}
Keterangan
Dimulai dengan .NET Framework 4.5, Windows Identity Foundation (WIF) dan identitas berbasis klaim sepenuhnya terintegrasi ke dalam .NET Framework. Ini berarti bahwa banyak kelas yang mewakili perwakilan dalam .NET Framework sekarang berasal dari ClaimsPrincipal daripada hanya mengimplementasikan IPrincipal antarmuka. Selain menerapkan IPrincipal antarmuka, ClaimsPrincipal mengekspos properti dan metode yang berguna untuk bekerja dengan klaim.
ClaimsPrincipal mengekspos kumpulan identitas, yang masing-masing adalah ClaimsIdentity. Dalam kasus umum, koleksi ini, yang diakses melalui Identities properti , hanya akan memiliki satu elemen.
Pengenalan ClaimsPrincipal dalam .NET 4.5 sebagai prinsipal dari mana sebagian besar kelas utama berasal tidak memaksa Anda untuk mengubah apa pun dalam cara Anda menangani identitas. Namun, ini membuka lebih banyak kemungkinan dan menawarkan lebih banyak kesempatan untuk menjalankan kontrol akses yang lebih halus. Contohnya:
Kode aplikasi itu sendiri dapat bekerja langsung dengan klaim yang terkandung dalam prinsipal saat ini untuk mendorong tugas autentikasi, otorisasi, dan personalisasi ekstra.
Anda dapat memhadapkan sumber daya Anda dengan alur pemrosesan klaim, yang dapat menangani permintaan autentikasi dan kebijakan otorisasi bahkan sebelum eksekusi mencapai kode Anda. Misalnya, Anda dapat mengonfigurasi aplikasi atau layanan berbasis web dengan manajer autentikasi klaim kustom, instans kelas yang berasal dari ClaimsAuthenticationManager kelas . Ketika dikonfigurasi, alur Authenticate pemrosesan permintaan memanggil metode pada manajer autentikasi klaim Anda yang meneruskannya yang ClaimsPrincipal mewakili konteks permintaan masuk. Manajer autentikasi klaim Anda kemudian dapat melakukan autentikasi berdasarkan nilai klaim masuk. Ini juga dapat memfilter, mengubah, atau menambahkan klaim ke kumpulan klaim masuk. Misalnya, dapat digunakan untuk memperkaya kumpulan klaim masuk dengan klaim baru yang dibuat dari sumber data lokal seperti profil pengguna lokal
Anda dapat mengonfigurasi aplikasi berbasis web dengan manajer otorisasi klaim kustom, instans kelas yang berasal dari ClaimsAuthorizationManager kelas . Ketika demikian dikonfigurasi, alur pemrosesan permintaan mengemas yang masuk ClaimsPrincipal dalam dan AuthorizationContext memanggil CheckAccess metode pada manajer otorisasi klaim Anda. Manajer otorisasi klaim Anda kemudian dapat memberlakukan otorisasi berdasarkan klaim yang masuk.
Pemeriksaan akses kode berbasis klaim sebaris dapat dilakukan dengan mengonfigurasi aplikasi Anda dengan manajer otorisasi klaim kustom dan menggunakan ClaimsPrincipalPermission kelas untuk melakukan pemeriksaan akses imperatif atau ClaimsPrincipalPermissionAttribute untuk melakukan pemeriksaan akses deklaratif. Pemeriksaan akses kode berbasis klaim dilakukan sebaris, di luar alur pemrosesan, dan juga tersedia untuk semua aplikasi selama manajer otorisasi klaim dikonfigurasi.
Anda dapat memperoleh ClaimsPrincipal instans untuk prinsipal yang terkait dengan permintaan, atau perwakilan tempat utas dijalankan, dalam aplikasi pihak yang mengandalkan (RP) dengan mentransmisikan Thread.CurrentPrincipal properti ke ClaimsPrincipal. Klaim yang terkait dengan ClaimsPrincipal objek tersedia melalui propertinya Claims . Properti Claims mengembalikan semua klaim yang terkandung oleh identitas yang terkait dengan prinsipal. Dalam kasus yang jarang terjadi di mana ClaimsPrincipal berisi beberapa ClaimsIdentity instans, Anda dapat menggunakan Identities properti atau Anda dapat mengakses identitas utama dengan menggunakan Identity properti . ClaimsPrincipal menyediakan beberapa metode di mana klaim ini dapat dicari dan sepenuhnya mendukung Language Integrated Query (LINQ). Identitas dapat ditambahkan ke prinsipal dengan menggunakan AddIdentities metode atau AddIdentity .
Catatan
Untuk menambahkan identitas ke ClaimsPrincipal, penelepon harus memiliki kepercayaan penuh.
Secara default, WIF memprioritaskan WindowsIdentity objek saat memilih identitas utama untuk dikembalikan melalui Identity properti . Anda dapat memodifikasi perilaku ini dengan menyediakan delegasi melalui PrimaryIdentitySelector properti untuk melakukan pilihan. Properti ClaimsPrincipalSelector ini menyediakan fungsionalitas serupa untuk Current properti .
Dalam model berbasis klaim, apakah prinsipal berada dalam peran tertentu ditentukan oleh klaim yang disajikan oleh identitas dasarnya. Metode ini IsInRole pada dasarnya memeriksa setiap identitas yang terkait dengan prinsipal untuk menentukan apakah ia memiliki klaim dengan nilai peran yang ditentukan. Jenis klaim (diwakili oleh propertinya Claim.Type ) yang digunakan untuk menentukan klaim mana yang harus diperiksa selama pemeriksaan peran ditentukan pada identitas melalui propertinya ClaimsIdentity.RoleClaimType . Dengan demikian, klaim yang diperiksa selama pemeriksaan peran dapat memiliki jenis yang berbeda untuk identitas yang berbeda yang terkait dengan prinsipal.
Konstruktor
ClaimsPrincipal() |
Menginisialisasi instans baru kelas ClaimsPrincipal. |
ClaimsPrincipal(BinaryReader) |
Menginisialisasi instans ClaimsPrincipal dengan yang ditentukan BinaryReader. |
ClaimsPrincipal(IEnumerable<ClaimsIdentity>) |
Menginisialisasi instans ClaimsPrincipal baru kelas menggunakan identitas klaim yang ditentukan. |
ClaimsPrincipal(IIdentity) |
Menginisialisasi instans ClaimsPrincipal baru kelas dari identitas yang ditentukan. |
ClaimsPrincipal(IPrincipal) |
Menginisialisasi instans ClaimsPrincipal baru kelas dari prinsipal yang ditentukan. |
ClaimsPrincipal(SerializationInfo, StreamingContext) |
Kedaluwarsa.
Menginisialisasi instans ClaimsPrincipal baru kelas dari aliran berseri yang dibuat dengan menggunakan ISerializable. |
Properti
Claims |
Mendapatkan koleksi yang berisi semua klaim dari semua identitas klaim yang terkait dengan prinsip klaim ini. |
ClaimsPrincipalSelector |
Mendapatkan atau mengatur delegasi yang digunakan untuk memilih prinsip klaim yang dikembalikan oleh Current properti . |
Current |
Mendapatkan prinsip klaim saat ini. |
CustomSerializationData |
Berisi data tambahan yang disediakan oleh jenis turunan. Biasanya diatur saat memanggil WriteTo(BinaryWriter, Byte[]). |
Identities |
Mendapatkan koleksi yang berisi semua identitas klaim yang terkait dengan prinsip klaim ini. |
Identity |
Mendapatkan identitas klaim utama yang terkait dengan prinsip klaim ini. |
PrimaryIdentitySelector |
Mendapatkan atau mengatur delegasi yang digunakan untuk memilih identitas klaim yang dikembalikan oleh Identity properti . |
Metode
AddIdentities(IEnumerable<ClaimsIdentity>) |
Menambahkan identitas klaim yang ditentukan ke prinsip klaim ini. |
AddIdentity(ClaimsIdentity) |
Menambahkan identitas klaim yang ditentukan ke prinsip klaim ini. |
Clone() |
Mengembalikan salinan instans ini. |
CreateClaimsIdentity(BinaryReader) |
Membuat identitas klaim baru. |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
FindAll(Predicate<Claim>) |
Mengambil semua klaim yang cocok dengan predikat yang ditentukan. |
FindAll(String) |
Mengambil semua atau klaim yang memiliki jenis klaim yang ditentukan. |
FindFirst(Predicate<Claim>) |
Mengambil klaim pertama yang cocok dengan predikat yang ditentukan. |
FindFirst(String) |
Mengambil klaim pertama dengan jenis klaim yang ditentukan. |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetObjectData(SerializationInfo, StreamingContext) |
Mengisi dengan data yang SerializationInfo diperlukan untuk membuat serial objek saat ini ClaimsPrincipal . |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
HasClaim(Predicate<Claim>) |
Menentukan apakah salah satu identitas klaim yang terkait dengan prinsip klaim ini berisi klaim yang cocok dengan predikat yang ditentukan. |
HasClaim(String, String) |
Menentukan apakah salah satu identitas klaim yang terkait dengan prinsip klaim ini berisi klaim dengan jenis dan nilai klaim yang ditentukan. |
IsInRole(String) |
Mengembalikan nilai yang menunjukkan apakah entitas (pengguna) yang diwakili oleh prinsipal klaim ini berada dalam peran yang ditentukan. |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
WriteTo(BinaryWriter) |
Menserialisasikan menggunakan BinaryWriter. |
WriteTo(BinaryWriter, Byte[]) |
Menserialisasikan menggunakan BinaryWriter. |