ClaimsPrincipal Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
En IPrincipal implementering som stöder flera anspråksbaserade identiteter.
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
- Arv
-
ClaimsPrincipal
- Härledda
- Attribut
- Implementeringar
Exempel
I följande exempel extraheras anspråken som presenteras av en användare i en HTTP-begäran och skriver dem till HTTP-svaret. Den aktuella användaren läse från HttpContext som en ClaimsPrincipal. Anspråken läse sedan från den och skrivs sedan till svaret.
if (HttpContext.Current.User is ClaimsPrincipal principal)
{
foreach (Claim claim in principal.Claims)
{
Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
}
}
Kommentarer
Från och med .NET Framework 4.5 är Windows Identity Foundation (WIF) och anspråksbaserad identitet helt integrerade i .NET Framework. Det innebär att många klasser som representerar ett huvudnamn i .NET Framework nu härleds från ClaimsPrincipal i stället för att bara implementera gränssnittet IPrincipal. Förutom att implementera IPrincipal gränssnittet ClaimsPrincipal exponeras egenskaper och metoder som är användbara för att arbeta med anspråk.
ClaimsPrincipal exponerar en samling identiteter, som var och en är en ClaimsIdentity. I det vanliga fallet har den här samlingen, som nås via Identities egenskapen, bara ett enda element.
Introduktionen av ClaimsPrincipal i .NET 4.5 som huvudnamn som de flesta huvudklasser härleder från tvingar dig inte att ändra något på det sätt som du hanterar identitet. Det öppnar dock upp fler möjligheter och ger fler chanser att utöva finare åtkomstkontroll. Ett exempel:
Själva programkoden kan fungera direkt med anspråken i det aktuella huvudkontot för att driva extra autentiserings-, auktoriserings- och anpassningsuppgifter.
Du kan fronta dina resurser med en pipeline för anspråksbearbetning som kan hantera autentiseringsbegäranden och auktoriseringsprincip redan innan körningen når koden. Du kan till exempel konfigurera ett webbaserat program eller en tjänst med en autentiseringshanterare för anpassade anspråk, en instans av en klass som härleds från ClaimsAuthenticationManager klassen. När den är konfigurerad anropar Authenticate pipelinen för bearbetning av begäran metoden på din anspråksautentiseringshanterare som skickar den en ClaimsPrincipal som representerar kontexten för den inkommande begäran. Din anspråksautentiseringshanterare kan sedan utföra autentisering baserat på värdena för inkommande anspråk. Den kan också filtrera, transformera eller lägga till anspråk i den inkommande anspråksuppsättningen. Den kan till exempel användas för att utöka den inkommande anspråksuppsättningen med nya anspråk som skapats från en lokal datakälla, till exempel en lokal användarprofil
Du kan konfigurera ett webbaserat program med en ansvarig för anpassad anspråksauktorisering, en instans av en klass som härleds från ClaimsAuthorizationManager klassen. När den är konfigurerad paketerar pipelinen för bearbetning av begäran den inkommande ClaimsPrincipal i en AuthorizationContext och anropar CheckAccess metoden på din anspråksauktoriseringshanterare. Din anspråksauktoriseringshanterare kan sedan framtvinga auktorisering baserat på inkommande anspråk.
Infogade anspråksbaserade kodåtkomstkontroller kan utföras genom att konfigurera ditt program med en ansvarig för anpassad anspråksauktorisering och använda antingen ClaimsPrincipalPermission klassen för att utföra imperativa åtkomstkontroller eller ClaimsPrincipalPermissionAttribute för att utföra deklarativa åtkomstkontroller. Anspråksbaserade kodåtkomstkontroller utförs infogade, utanför bearbetningspipelinen och är därför tillgängliga för alla program så länge en hanterare för anspråksauktorisering har konfigurerats.
Du kan hämta en ClaimsPrincipal instans för det huvudnamn som är associerat med en begäran, eller det huvudnamn under vilket en tråd körs, i ett förlitande partprogram (RP) genom att casta Thread.CurrentPrincipal egenskapen till ClaimsPrincipal. Anspråken som är associerade med ett ClaimsPrincipal objekt är tillgängliga via dess Claims egenskap. Egenskapen Claims returnerar alla anspråk som ingår i de identiteter som är associerade med huvudkontot. I det ovanliga fallet där innehåller ClaimsPrincipal flera ClaimsIdentity instanser kan du använda Identities egenskapen eller så kan du komma åt den primära identiteten Identity med hjälp av egenskapen . ClaimsPrincipal innehåller flera metoder med vilka dessa anspråk kan sökas igenom och har fullt stöd för LINQ (Language Integrated Query). Identiteter kan läggas till i huvudkontot med hjälp AddIdentities av metoderna eller AddIdentity .
Note
Om du vill lägga till identiteter i ClaimsPrincipalmåste en anropare ha fullt förtroende.
Som standard prioriterar WIF objekt när du väljer den primära identitet som ska returneras WindowsIdentity via Identity egenskapen. Du kan ändra det här beteendet genom att ange ett ombud via PrimaryIdentitySelector egenskapen för att utföra valet. Egenskapen ClaimsPrincipalSelector innehåller liknande funktioner för egenskapen Current .
I den anspråksbaserade modellen bestäms huruvida ett huvudnamn finns i en angiven roll av de anspråk som presenteras av dess underliggande identiteter. Metoden IsInRole undersöker i huvudsak varje identitet som är associerad med huvudnamnet för att avgöra om den har ett anspråk med det angivna rollvärdet. Den typ av anspråk (representeras av dess Claim.Type egenskap) som används för att avgöra vilka anspråk som ska undersökas under rollkontroller anges på en identitet via dess ClaimsIdentity.RoleClaimType egenskap. Därför kan de anspråk som granskas under rollkontroller vara av en annan typ för olika identiteter som är associerade med huvudnamnet.
Konstruktorer
| Name | Description |
|---|---|
| ClaimsPrincipal() |
Initierar en ny instans av ClaimsPrincipal klassen. |
| ClaimsPrincipal(BinaryReader) |
Initierar en instans av ClaimsPrincipal med angiven BinaryReader. |
| ClaimsPrincipal(IEnumerable<ClaimsIdentity>) |
Initierar en ny instans av ClaimsPrincipal klassen med de angivna anspråksidentiteterna. |
| ClaimsPrincipal(IIdentity) |
Initierar en ny instans av ClaimsPrincipal klassen från den angivna identiteten. |
| ClaimsPrincipal(IPrincipal) |
Initierar en ny instans av ClaimsPrincipal klassen från det angivna huvudkontot. |
| ClaimsPrincipal(SerializationInfo, StreamingContext) |
Initierar en ny instans av ClaimsPrincipal klassen från en serialiserad ström som skapats med hjälp ISerializableav . |
Egenskaper
| Name | Description |
|---|---|
| Claims |
Hämtar en samling som innehåller alla anspråk från alla anspråksidentiteter som är associerade med anspråksobjektet. |
| ClaimsPrincipalSelector |
Hämtar eller anger ombudet som används för att välja anspråksobjektet som returneras av Current egenskapen. |
| Current |
Hämtar det aktuella anspråksobjektet. |
| CustomSerializationData |
Innehåller ytterligare data som tillhandahålls av en härledd typ. Anges vanligtvis när du anropar WriteTo(BinaryWriter, Byte[]). |
| Identities |
Hämtar en samling som innehåller alla anspråksidentiteter som är associerade med anspråksobjektet. |
| Identity |
Hämtar den primära anspråksidentiteten som är associerad med det här anspråksobjektet. |
| PrimaryIdentitySelector |
Hämtar eller anger det ombud som används för att välja den anspråksidentitet som returneras av Identity egenskapen. |
Metoder
| Name | Description |
|---|---|
| AddIdentities(IEnumerable<ClaimsIdentity>) |
Lägger till de angivna anspråksidentiteterna i anspråksobjektet. |
| AddIdentity(ClaimsIdentity) |
Lägger till den angivna anspråksidentiteten i anspråksobjektet. |
| Clone() |
Returnerar en kopia av den här instansen. |
| CreateClaimsIdentity(BinaryReader) |
Skapar en ny anspråksidentitet. |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| FindAll(Predicate<Claim>) |
Hämtar alla anspråk som matchas av det angivna predikatet. |
| FindAll(String) |
Hämtar alla eller de anspråk som har den angivna anspråkstypen. |
| FindFirst(Predicate<Claim>) |
Hämtar det första anspråket som matchas av det angivna predikatet. |
| FindFirst(String) |
Hämtar det första anspråket med den angivna anspråkstypen. |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetObjectData(SerializationInfo, StreamingContext) |
Fyller i SerializationInfo med data som behövs för att serialisera det aktuella ClaimsPrincipal objektet. |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| HasClaim(Predicate<Claim>) |
Avgör om någon av anspråksidentiteterna som är associerade med det här anspråksobjektet innehåller ett anspråk som matchas av det angivna predikatet. |
| HasClaim(String, String) |
Avgör om någon av anspråksidentiteterna som är associerade med det här anspråksobjektet innehåller ett anspråk med den angivna anspråkstypen och värdet. |
| IsInRole(String) |
Returnerar ett värde som anger om entiteten (användaren) som representeras av anspråksobjektet finns i den angivna rollen. |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| WriteTo(BinaryWriter, Byte[]) |
Serialiserar med hjälp av en BinaryWriter. |
| WriteTo(BinaryWriter) |
Serialiserar med hjälp av en BinaryWriter. |