ClaimsPrincipal Třída

Definice

Implementace IPrincipal , která podporuje více identit založených na deklaracích.

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
Dědičnost
ClaimsPrincipal
Odvozené
Atributy
Implementuje

Příklady

Následující příklad extrahuje deklarace identity předložené uživatelem v požadavku HTTP a zapíše je do odpovědi HTTP. Aktuální uživatel se načte z objektu HttpContext jako .ClaimsPrincipal Deklarace identity se pak načtou a pak se zapíšou do odpovědi.

if (HttpContext.Current.User is ClaimsPrincipal principal)
{
   foreach (Claim claim in principal.Claims)
   {
      Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
   }
}

Poznámky

Počínaje rozhraním .NET Framework 4.5 jsou plně integrované technologie WINDOWS Identity Foundation (WIF) a deklarace identity založené na deklaracích do rozhraní .NET Framework. To znamená, že mnoho tříd, které představují instanční objekt v rozhraní .NET Framework nyní odvozeny od ClaimsPrincipal namísto pouhé implementace IPrincipal rozhraní. Kromě implementace IPrincipal rozhraní ClaimsPrincipal zveřejňuje vlastnosti a metody, které jsou užitečné pro práci s deklaracemi.

ClaimsPrincipalzveřejňuje kolekci identit, z nichž každý je .ClaimsIdentity V běžném případě tato kolekce, která je přístupná prostřednictvím Identities vlastnosti, bude mít pouze jeden prvek.

Zavedení ClaimsPrincipal v .NET 4.5 jako objekt zabezpečení, ze kterého je odvozena většina hlavních tříd, vás přinutí změnit nic způsobem, jakým se zabýváte identitou. Otevírá ale více možností a nabízí větší šanci na lepší řízení přístupu. Například:

  • Samotný kód aplikace může pracovat přímo s deklaracemi identity obsaženými v aktuálním objektu zabezpečení a řídit další úlohy ověřování, autorizace a přizpůsobení.

  • Prostředky můžete předložit kanálem zpracování deklarací identity, který může zpracovávat žádosti o ověření a zásady autorizace i před tím, než provádění dosáhne vašeho kódu. Můžete například nakonfigurovat webovou aplikaci nebo službu pomocí vlastního správce ověřování deklarací identity, instanci třídy, která je odvozena z ClaimsAuthenticationManager třídy. Pokud je tak nakonfigurovaný, kanál zpracování požadavků vyvolá metodu Authenticate ve správci ověřování deklarací identity, která ClaimsPrincipal představuje kontext příchozího požadavku. Správce ověřování deklarací identity pak může provádět ověřování na základě hodnot příchozích deklarací identity. Může také filtrovat, transformovat nebo přidávat deklarace identity do příchozí sady deklarací identity. Dá se například použít k obohacení příchozí sady deklarací identity novými deklaracemi vytvořenými z místního zdroje dat, jako je místní profil uživatele.

  • Webovou aplikaci můžete nakonfigurovat s vlastním správcem autorizace deklarací identity, instancí třídy, která je odvozena od ClaimsAuthorizationManager třídy. Pokud je tato konfigurace nakonfigurovaná, zabalí kanál zpracování požadavků příchozí ClaimsPrincipal kanál AuthorizationContext a vyvolá metodu CheckAccess ve správci autorizace deklarací identity. Správce autorizace deklarací identity pak může vynutit autorizaci na základě příchozích deklarací identity.

  • Vložené kontroly přístupu kódu založené na deklaracích je možné provádět konfigurací aplikace pomocí vlastního správce autorizace deklarací identity a pomocí ClaimsPrincipalPermission třídy provádět imperativní kontroly přístupu nebo ClaimsPrincipalPermissionAttribute provádět deklarativní kontroly přístupu. Kontroly přístupu kódu založené na deklarací identity se provádějí přímo, mimo kanál zpracování a jsou k dispozici pro všechny aplikace, pokud je nakonfigurovaný správce autorizace deklarací identity.

Můžete získat ClaimsPrincipal instanci objektu zabezpečení přidruženého k požadavku nebo objekt zabezpečení, pod kterým se vlákno spouští, v aplikaci předávající strany (RP) přetypováním Thread.CurrentPrincipal vlastnosti na ClaimsPrincipal. Deklarace identity přidružené k objektu ClaimsPrincipal jsou k dispozici prostřednictvím jeho Claims vlastnosti. Vlastnost Claims vrátí všechny deklarace identity obsažené identitami přidruženými k objektu zabezpečení. V neobvyklém případě, ClaimsPrincipal kdy obsahuje více ClaimsIdentity instancí, můžete použít Identities vlastnost nebo můžete získat přístup k primární identitě pomocí Identity vlastnosti. ClaimsPrincipal poskytuje několik metod, pomocí kterých se můžou tyto deklarace identity prohledávat a plně podporují jazykový integrovaný dotaz (LINQ). Identity lze do objektu zabezpečení přidat pomocí AddIdentities metod nebo AddIdentity metod.

Poznámka:

Chcete-li přidat identity do ClaimsPrincipalvolajícího, musí mít úplný vztah důvěryhodnosti.

Technologie WIF ve výchozím nastavení upřednostňuje WindowsIdentity objekty při výběru primární identity, která se má vrátit prostřednictvím Identity vlastnosti. Toto chování můžete upravit tak, že zadáte delegáta PrimaryIdentitySelector prostřednictvím vlastnosti, která provede výběr. Vlastnost ClaimsPrincipalSelector poskytuje podobné funkce pro Current vlastnost.

V modelu založeném na deklarací identity určuje, jestli je objekt zabezpečení v zadané roli, a to deklaracemi, které předkládají jeho podkladové identity. Metoda IsInRole v podstatě zkoumá každou identitu přidruženou k objektu zabezpečení a určí, jestli má deklaraci identity se zadanou hodnotou role. Typ deklarace identity (reprezentované jeho Claim.Type vlastností) sloužící k určení, které deklarace identity by se měly zkoumat při kontrolách rolí, je určena pro identitu prostřednictvím jeho ClaimsIdentity.RoleClaimType vlastnosti. Deklarace identity, které se prověřují během kontrol rolí, tedy mohou být jiného typu pro různé identity přidružené k objektu zabezpečení.

Konstruktory

Name Description
ClaimsPrincipal()

Inicializuje novou instanci ClaimsPrincipal třídy.

ClaimsPrincipal(BinaryReader)

Inicializuje instanci ClaimsPrincipal se zadaným BinaryReader.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

Inicializuje novou instanci ClaimsPrincipal třídy pomocí zadaných identit deklarací identity.

ClaimsPrincipal(IIdentity)

Inicializuje novou instanci ClaimsPrincipal třídy ze zadané identity.

ClaimsPrincipal(IPrincipal)

Inicializuje novou instanci ClaimsPrincipal třídy ze zadaného objektu zabezpečení.

ClaimsPrincipal(SerializationInfo, StreamingContext)
Zastaralé.

Inicializuje novou instanci třídy ze serializovaného datového ClaimsPrincipal proudu vytvořeného pomocí ISerializable.

Vlastnosti

Name Description
Claims

Získá kolekci, která obsahuje všechny deklarace identity ze všech identit deklarací přidružených k tomuto objektu deklarací identity.

ClaimsPrincipalSelector

Získá nebo nastaví delegát použitý k výběru objektu deklarací identity vráceného Current vlastností.

Current

Získá aktuální objekt zabezpečení deklarací identity.

CustomSerializationData

Obsahuje všechna další data poskytovaná odvozeným typem. Obvykle se nastavuje při volání WriteTo(BinaryWriter, Byte[]).

Identities

Získá kolekci, která obsahuje všechny identity deklarací identity přidružené k tomuto objektu deklarací identity.

Identity

Získá primární identitu deklarací identity přidruženou k tomuto objektu deklarací identity.

PrimaryIdentitySelector

Získá nebo nastaví delegát použitý k výběru identity deklarací identity vrácené Identity vlastností.

Metody

Name Description
AddIdentities(IEnumerable<ClaimsIdentity>)

Přidá zadané identity deklarací identity k tomuto objektu deklarací identity.

AddIdentity(ClaimsIdentity)

Přidá zadanou identitu deklarací identity k tomuto objektu deklarací identity.

Clone()

Vrátí kopii této instance.

CreateClaimsIdentity(BinaryReader)

Vytvoří novou identitu deklarací identity.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
FindAll(Predicate<Claim>)

Načte všechny deklarace identity, které odpovídají zadanému predikátu.

FindAll(String)

Načte všechny deklarace identity nebo deklarace identity, které mají zadaný typ deklarace identity.

FindFirst(Predicate<Claim>)

Načte první deklaraci identity, která se shoduje se zadaným predikátem.

FindFirst(String)

Načte první deklaraci identity se zadaným typem deklarace identity.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetObjectData(SerializationInfo, StreamingContext)

Naplní SerializationInfo data potřebná k serializaci aktuálního ClaimsPrincipal objektu.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
HasClaim(Predicate<Claim>)

Určuje, zda některé identity deklarací identity přidružené k tomuto objektu deklarací identity obsahují deklaraci identity, která se shoduje se zadaným predikátem.

HasClaim(String, String)

Určuje, zda některé identity deklarací identity přidružené k tomuto objektu deklarací identity obsahují deklaraci identity se zadaným typem a hodnotou deklarace identity.

IsInRole(String)

Vrátí hodnotu, která určuje, jestli je entita (uživatel) reprezentovaná tímto objektem deklarací identity v zadané roli.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
WriteTo(BinaryWriter, Byte[])

Serializuje pomocí BinaryWriter.

WriteTo(BinaryWriter)

Serializuje pomocí BinaryWriter.

Platí pro

Viz také