ClaimsPrincipal Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
IPrincipal Birden çok talep tabanlı kimliği destekleyen bir uygulama.
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
- Devralma
-
ClaimsPrincipal
- Türetilmiş
- Öznitelikler
- Uygulamalar
Örnekler
Aşağıdaki örnek, http isteğinde bir kullanıcı tarafından sunulan talepleri ayıklar ve bunları HTTP yanıtına yazar. Geçerli kullanıcı' dan HttpContext olarak ClaimsPrincipalokunur. Talepler daha sonra ondan okunur ve ardından yanıta yazılır.
if (HttpContext.Current.User is ClaimsPrincipal principal)
{
foreach (Claim claim in principal.Claims)
{
Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
}
}
Açıklamalar
.NET Framework 4.5'le başlayarak, Windows Identity Foundation (WIF) ve talep tabanlı kimlik .NET Framework ile tamamen tümleşiktir. Bu, .NET Framework'te bir sorumluyu temsil eden birçok sınıfın artık yalnızca arabirimini uygulamak yerine'den ClaimsPrincipal türetilmesi IPrincipal anlamına gelir. Arabirimi uygulamaya IPrincipal ek olarak, ClaimsPrincipal taleplerle çalışmak için yararlı olan özellikleri ve yöntemleri kullanıma sunar.
ClaimsPrincipal her biri bir ClaimsIdentityolan kimlik koleksiyonunu kullanıma sunar. Yaygın durumda, özelliği aracılığıyla Identities erişilen bu koleksiyon yalnızca tek bir öğeye sahip olur.
.NET 4.5'te çoğu asıl sınıfın türetildiği sorumlu olarak girişi ClaimsPrincipal , sizi kimlikle başa çıkma şeklinizde hiçbir şeyi değiştirmeye zorlamaz. Ancak, daha fazla olasılık açar ve daha iyi erişim denetimi yapmak için daha fazla şans sunar. Örneğin:
Uygulama kodunun kendisi, ek kimlik doğrulaması, yetkilendirme ve kişiselleştirme görevlerini yönlendirmek için geçerli sorumluda yer alan taleplerle doğrudan çalışabilir.
Yürütme kodunuz ulaşmadan önce bile kimlik doğrulama istekleri ve yetkilendirme ilkesiyle başa çıkabilen bir talep işleme işlem hattı ile kaynaklarınızın önüne gidebilirsiniz. Örneğin, sınıfından türetilen ClaimsAuthenticationManager bir sınıfın örneği olan özel talep kimlik doğrulama yöneticisiyle web tabanlı bir uygulama veya hizmet yapılandırabilirsiniz. Yapılandırıldığında, istek işleme işlem hattı talep kimlik doğrulama yöneticinizde yöntemini çağırır Authenticate ve gelen isteğin bağlamını temsil eden bir ClaimsPrincipal geçirir. Talep kimlik doğrulama yöneticiniz daha sonra gelen taleplerin değerlerine göre kimlik doğrulaması gerçekleştirebilir. Ayrıca gelen talep kümesine talepleri filtreleyebilir, dönüştürebilir veya ekleyebilir. Örneğin, gelen talep kümesini yerel kullanıcı profili gibi yerel bir veri kaynağından oluşturulan yeni taleplerle zenginleştirmek için kullanılabilir
Web tabanlı bir uygulamayı, sınıfından ClaimsAuthorizationManager türetilen bir sınıfın örneği olan özel talep yetkilendirme yöneticisiyle yapılandırabilirsiniz. Bu şekilde yapılandırıldığında, istek işleme işlem hattı gelen ClaimsPrincipalAuthorizationContext 'i paketler ve talep yetkilendirme yöneticinizde yöntemini çağırır CheckAccess . Ardından, talep yetkilendirme yöneticiniz gelen taleplere göre yetkilendirmeyi zorunlu kılabilir.
Satır içi talep tabanlı kod erişim denetimleri, uygulamanızı özel talep yetkilendirme yöneticisiyle yapılandırarak ve kesinlik temelli erişim denetimleri gerçekleştirmek için sınıfı veya ClaimsPrincipalPermissionAttribute bildirim temelli erişim denetimleri gerçekleştirmek için sınıfı kullanılarak ClaimsPrincipalPermission gerçekleştirilebilir. Talep tabanlı kod erişim denetimleri, işlem hattı dışında satır içinde gerçekleştirilir ve bir talep yetkilendirme yöneticisi yapılandırıldığı sürece tüm uygulamalar tarafından kullanılabilir.
Bir istekle ilişkilendirilmiş sorumlunun veya bir iş parçacığının yürütülmekte olduğu sorumlunun örneğini, bağlı olan taraf (RP) uygulamasında özelliğini ClaimsPrincipalöğesine dönüştürerek Thread.CurrentPrincipal elde ClaimsPrincipal edebilirsiniz. Bir ClaimsPrincipal nesneyle ilişkili talepler özelliği aracılığıyla Claims kullanılabilir. özelliği, Claims sorumluyla ilişkilendirilmiş kimliklerin içerdiği tüm talepleri döndürür. 'nin birden çok ClaimsIdentity örnek içerdiği yaygın olmayan durumlarda ClaimsPrincipal özelliğini kullanabilir Identities veya özelliğini kullanarak Identity birincil kimliğe erişebilirsiniz. ClaimsPrincipal bu taleplerin aranabileceği çeşitli yöntemler sağlar ve Dil Tümleşik Sorgusunu (LINQ) tam olarak destekler. Kimlikler veya AddIdentity yöntemleri kullanılarak sorumluya AddIdentities eklenebilir.
Uyarı
öğesine kimlik eklemek için çağıranın ClaimsPrincipaltam güvene sahip olması gerekir.
Varsayılan olarak, WIF özelliği aracılığıyla Identity döndürülecek birincil kimliği seçerken nesnelerin önceliğini belirtirWindowsIdentity. Seçimi gerçekleştirmek için özelliği aracılığıyla PrimaryIdentitySelector bir temsilci sağlayarak bu davranışı değiştirebilirsiniz. özelliği, ClaimsPrincipalSelector özelliği için Current benzer işlevler sağlar.
Talep tabanlı modelde, bir sorumlunun belirli bir rolde olup olmadığı, temel alınan kimlikler tarafından sunulan talepler tarafından belirlenir. IsInRole yöntemi temelde sorumluyla ilişkili her kimliği inceleyerek belirtilen rol değerine sahip bir talep sahibi olup olmadığını belirler. Rol denetimleri sırasında hangi taleplerin incelenmesi gerektiğini belirlemek için kullanılan talebin türü (özelliğiyle Claim.Type temsil edilir) özelliği aracılığıyla ClaimsIdentity.RoleClaimType bir kimlikte belirtilir. Bu nedenle rol denetimleri sırasında incelenen talepler, sorumluyla ilişkili farklı kimlikler için farklı türde olabilir.
Oluşturucular
| Name | Description |
|---|---|
| ClaimsPrincipal() |
ClaimsPrincipal sınıfının yeni bir örneğini başlatır. |
| ClaimsPrincipal(BinaryReader) |
belirtilen BinaryReaderile bir örneğini ClaimsPrincipal başlatır. |
| ClaimsPrincipal(IEnumerable<ClaimsIdentity>) |
Belirtilen talep kimliklerini kullanarak sınıfının yeni bir örneğini ClaimsPrincipal başlatır. |
| ClaimsPrincipal(IIdentity) |
Belirtilen kimlikten sınıfının yeni bir örneğini ClaimsPrincipal başlatır. |
| ClaimsPrincipal(IPrincipal) |
Belirtilen sorumludan sınıfının yeni bir örneğini ClaimsPrincipal başlatır. |
| ClaimsPrincipal(SerializationInfo, StreamingContext) |
Geçersiz.
kullanılarak ISerializableoluşturulan serileştirilmiş bir akıştan sınıfının yeni bir örneğini ClaimsPrincipal başlatır. |
Özellikler
| Name | Description |
|---|---|
| Claims |
Bu talep sorumlusuyla ilişkili tüm talep kimliklerinden tüm talepleri içeren bir koleksiyon alır. |
| ClaimsPrincipalSelector |
özelliği tarafından döndürülen talep sorumlusunu seçmek için kullanılan temsilciyi Current alır veya ayarlar. |
| Current |
Geçerli talep sorumlusunu alır. |
| CustomSerializationData |
Türetilmiş bir tür tarafından sağlanan tüm ek verileri içerir. genellikle çağrılırken WriteTo(BinaryWriter, Byte[])ayarlanır. |
| Identities |
Bu talep sorumlusuyla ilişkili tüm talep kimliklerini içeren bir koleksiyon alır. |
| Identity |
Bu talep sorumlusuyla ilişkili birincil talep kimliğini alır. |
| PrimaryIdentitySelector |
Özelliği tarafından döndürülen talep kimliğini seçmek için kullanılan temsilciyi Identity alır veya ayarlar. |
Yöntemler
| Name | Description |
|---|---|
| AddIdentities(IEnumerable<ClaimsIdentity>) |
Belirtilen talep kimliklerini bu talep sorumlusuna ekler. |
| AddIdentity(ClaimsIdentity) |
Belirtilen talep kimliğini bu talep sorumlusuna ekler. |
| Clone() |
Bu örneğin bir kopyasını döndürür. |
| CreateClaimsIdentity(BinaryReader) |
Yeni bir talep kimliği oluşturur. |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| FindAll(Predicate<Claim>) |
Belirtilen koşulla eşleşen tüm talepleri alır. |
| FindAll(String) |
Belirtilen talep türüne sahip tüm talepleri veya talepleri alır. |
| FindFirst(Predicate<Claim>) |
Belirtilen koşulla eşleşen ilk talebi alır. |
| FindFirst(String) |
Belirtilen talep türüne sahip ilk talebi alır. |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
SerializationInfo geçerli ClaimsPrincipal nesneyi seri hale getirmek için gereken verilerle doldurur. |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| HasClaim(Predicate<Claim>) |
Bu talep sorumlusuyla ilişkili talep kimliklerinden herhangi birinin belirtilen koşulla eşleşen bir talep içerip içermediğini belirler. |
| HasClaim(String, String) |
Bu talep sorumlusuyla ilişkili talep kimliklerinden herhangi birinin belirtilen talep türüne ve değerine sahip bir talep içerip içermediğini belirler. |
| IsInRole(String) |
Bu talep sorumlusu tarafından temsil edilen varlığın (kullanıcı) belirtilen rolde olup olmadığını gösteren bir değer döndürür. |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
| WriteTo(BinaryWriter, Byte[]) |
kullanarak BinaryWriterseri hale getirmektedir. |
| WriteTo(BinaryWriter) |
kullanarak BinaryWriterseri hale getirmektedir. |