ClaimsPrincipal Klasse

Definition

Eine IPrincipal-Implementierung, die mehrere anspruchsbasierte Identitäten unterstützt.

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
Vererbung
ClaimsPrincipal
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Beispiel werden die Von einem Benutzer in einer HTTP-Anforderung dargestellten Ansprüche extrahiert und in die HTTP-Antwort geschrieben. Der aktuelle Benutzer wird aus dem HttpContext als ClaimsPrincipal gelesen. Die Ansprüche werden dann aus ihr gelesen und dann in die Antwort geschrieben.

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

Hinweise

Ab .NET Framework 4.5 sind Windows Identity Foundation (WIF) und die anspruchsbasierte Identität vollständig in .NET Framework integriert. Dies bedeutet, dass viele Klassen, die einen Prinzipal im .NET Framework darstellen, jetzt von abgeleitet werden, ClaimsPrincipal anstatt einfach die -Schnittstelle zu IPrincipal implementieren. Zusätzlich zur Implementierung der IPrincipal -Schnittstelle ClaimsPrincipal macht Eigenschaften und Methoden verfügbar, die für die Arbeit mit Ansprüchen nützlich sind.

ClaimsPrincipal macht eine Auflistung von Identitäten verfügbar, von denen jede ein ClaimsIdentity ist. Im allgemeinen Fall verfügt diese Auflistung, auf die über die -Eigenschaft zugegriffen Identities wird, nur über ein einzelnes -Element.

Die Einführung von ClaimsPrincipal in .NET 4.5 als Prinzipal, von dem die meisten Prinzipalklassen abgeleitet werden, zwingt Sie nicht, die Art und Weise zu ändern, wie Sie mit der Identität umgehen. Dies eröffnet jedoch mehr Möglichkeiten und bietet mehr Möglichkeiten, eine präzisere Zugriffssteuerung durchzuführen. Beispiel:

  • Der Anwendungscode selbst kann direkt mit den Im aktuellen Prinzipal enthaltenen Ansprüchen arbeiten, um zusätzliche Authentifizierungs-, Autorisierungs- und Personalisierungsaufgaben zu fördern.

  • Sie können Ihren Ressourcen eine Anspruchsverarbeitungspipeline voran stellen, die Authentifizierungsanforderungen und Autorisierungsrichtlinien verarbeiten kann, noch bevor die Ausführung Ihren Code erreicht. Beispielsweise können Sie eine webbasierte Anwendung oder einen dienst mit einem benutzerdefinierten Anspruchsauthentifizierungs-Manager konfigurieren, einer Instanz einer Klasse, die von der -Klasse abgeleitet ClaimsAuthenticationManager ist. Wenn dies konfiguriert ist, ruft die Anforderungsverarbeitungspipeline die Authenticate -Methode für Ihren Anspruchsauthentifizierungs-Manager auf und übergibt ihr einen , ClaimsPrincipal der den Kontext der eingehenden Anforderung darstellt. Ihr Anspruchsauthentifizierungs-Manager kann dann die Authentifizierung basierend auf den Werten der eingehenden Ansprüche durchführen. Sie kann auch Ansprüche filtern, transformieren oder dem eingehenden Anspruchssatz hinzufügen. Sie kann beispielsweise verwendet werden, um den eingehenden Anspruchssatz mit neuen Ansprüchen anzureichern, die aus einer lokalen Datenquelle wie einem lokalen Benutzerprofil erstellt wurden.

  • Sie können eine webbasierte Anwendung mit einem benutzerdefinierten Anspruchsautorisierungs-Manager konfigurieren, einer Instanz einer Klasse, die von der -Klasse abgeleitet ClaimsAuthorizationManager wird. Wenn dies konfiguriert ist, packt die Anforderungsverarbeitungspipeline den eingehenden ClaimsPrincipal in einem und ruft die AuthorizationContext CheckAccess -Methode für Ihren Anspruchsautorisierungs-Manager auf. Ihr Anspruchsautorisierungs-Manager kann dann die Autorisierung basierend auf den eingehenden Ansprüchen erzwingen.

  • Anspruchsbasierte Inline-Codezugriffsprüfungen können durchgeführt werden, indem Ihre Anwendung mit einem benutzerdefinierten Anspruchsautorisierungs-Manager konfiguriert und entweder die ClaimsPrincipalPermission -Klasse verwendet wird, um imperative Zugriffsüberprüfungen durchzuführen, oder ClaimsPrincipalPermissionAttribute um deklarative Zugriffsüberprüfungen durchzuführen. Anspruchsbasierte Codezugriffsprüfungen werden inline außerhalb der Verarbeitungspipeline ausgeführt und sind daher für alle Anwendungen verfügbar, solange ein Anspruchsautorisierungs-Manager konfiguriert ist.

Sie können eine ClaimsPrincipal -Instanz für den Prinzipal, der einer Anforderung zugeordnet ist, oder den Prinzipal, unter dem ein Thread ausgeführt wird, in einer Anwendung der vertrauenden Seite (Relying Party, RP) abrufen, indem Sie die Thread.CurrentPrincipal -Eigenschaft in ClaimsPrincipal umwandeln. Die einem Objekt zugeordneten Ansprüche ClaimsPrincipal sind über seine Claims -Eigenschaft verfügbar. Die -Eigenschaft gibt alle Ansprüche zurück, die in den identitäten enthalten sind, Claims die dem Prinzipal zugeordnet sind. In dem ungewöhnlichen Fall, in dem ClaimsPrincipal das mehrere ClaimsIdentity Instanzen enthält, können Sie die -Eigenschaft verwenden Identities oder mithilfe der -Eigenschaft auf die primäre Identität Identity zugreifen. ClaimsPrincipal stellt mehrere Methoden bereit, mit denen diese Ansprüche durchsucht werden können, und unterstützt linq (Language Integrated Query) vollständig. Identitäten können dem Prinzipal mithilfe der - oder -Methode hinzugefügt AddIdentities AddIdentity werden.

Hinweis

Um dem Identitäten ClaimsPrincipal hinzuzufügen, muss ein Aufrufer über volle Vertrauenswürdigkeit verfügen.

Standardmäßig priorisiert WIF WindowsIdentity Objekte, wenn die primäre Identität ausgewählt wird, die über die -Eigenschaft zurückgegeben werden Identity soll. Sie können dieses Verhalten ändern, indem Sie einen Delegaten über die PrimaryIdentitySelector -Eigenschaft bereitstellen, um die Auswahl auszuführen. Die ClaimsPrincipalSelector -Eigenschaft stellt ähnliche Funktionen für die Current -Eigenschaft bereit.

Im anspruchsbasierten Modell wird bestimmt, ob sich ein Prinzipal in einer angegebenen Rolle befindet, durch die Ansprüche, die von den zugrunde liegenden Identitäten dargestellt werden. Die IsInRole -Methode untersucht im Wesentlichen jede Identität, die dem Prinzipal zugeordnet ist, um zu bestimmen, ob sie einen Anspruch mit dem angegebenen Rollenwert besitzt. Der Typ des Anspruchs (dargestellt durch seine Claim.Type -Eigenschaft), der verwendet wird, um zu bestimmen, welche Ansprüche während rollenüberprüfungen überprüft werden sollen, wird für eine Identität über seine ClaimsIdentity.RoleClaimType -Eigenschaft angegeben. Daher können die bei Rollenprüfungen untersuchten Ansprüche für verschiedene Identitäten, die dem Prinzipal zugeordnet sind, einen anderen Typ aufweisen.

Konstruktoren

ClaimsPrincipal()

Initialisiert eine neue Instanz der ClaimsPrincipal-Klasse.

ClaimsPrincipal(BinaryReader)

Initialisiert eine Instanz von ClaimsPrincipal mit der angegebenen BinaryReader.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

Initialisiert eine neue Instanz der ClaimsPrincipal-Klasse unter Verwendung der angegebenen Anspruchsidentitäten.

ClaimsPrincipal(IIdentity)

Initialisiert eine neue Instanz der ClaimsPrincipal-Klasse aus der angegebenen Identität.

ClaimsPrincipal(IPrincipal)

Initialisiert eine neue Instanz der ClaimsPrincipal-Klasse des angegebenen Prinzipals.

ClaimsPrincipal(SerializationInfo, StreamingContext)

Initialisiert mithilfe von ISerializable eine neue Instanz der ClaimsPrincipal-Klasse aus einem serialisierten Stream.

Eigenschaften

Claims

Ruft eine Auflistung mit allen Ansprüchen aller Anspruchsidentitäten ab, die diesem Anspruchsprinzipal zugeordnet sind.

ClaimsPrincipalSelector

Ruft den Delegaten ab, der verwendet wird, um den von der Current-Eigenschaft zurückgegebenen Anspruchsprinzipal auszuwählen, oder legt ihn fest.

Current

Ruft den aktuellen Anspruchsprinzipal ab.

CustomSerializationData

Enthält alle zusätzlichen Daten, die von einem abgeleiteten Typ bereitgestellt werden. Wird in der Regel beim Aufrufen von WriteTo(BinaryWriter, Byte[]) festgelegt.

Identities

Ruft eine Auflistung mit allen Anspruchsidentitäten ab, die diesem Anspruchsprinzipal zugeordnet sind.

Identity

Ruft die primäre Anspruchsidentität ab, die diesem Anspruchsprinzipal zugeordnet ist.

PrimaryIdentitySelector

Ruft den Delegaten ab, der verwendet wird, um die von der Identity-Eigenschaft zurückgegebene Anspruchsidentität auszuwählen, oder legt ihn fest.

Methoden

AddIdentities(IEnumerable<ClaimsIdentity>)

Fügt die angegebenen Anspruchsidentitäten diesem Anspruchsprinzipal hinzu.

AddIdentity(ClaimsIdentity)

Fügt die angegebene Anspruchsidentität diesem Anspruchsprinzipal hinzu.

Clone()

Gibt eine Kopie dieser Instanz zurück.

CreateClaimsIdentity(BinaryReader)

Erstellt eine neue Anspruchsidentität.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
FindAll(Predicate<Claim>)

Ruft alle Ansprüche ab, die dem angegebenen Prädikat entsprechen.

FindAll(String)

Ruft alle Ansprüche ab oder diejenigen, die den angegebenen Anspruchstyp aufweisen.

FindFirst(Predicate<Claim>)

Ruft den ersten Anspruch ab, der dem angegebenen Prädikat entspricht.

FindFirst(String)

Ruft den ersten Anspruch mit dem angegebenen Anspruchstyp ab.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetObjectData(SerializationInfo, StreamingContext)

Füllt das SerializationInfo-Objekt mit den für das Serialisieren des aktuellen ClaimsPrincipal-Objekts erforderlichen Daten.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
HasClaim(Predicate<Claim>)

Ermittelt, ob eine der Anspruchsidentitäten, die diesem Anspruchsprinzipal zugeordnet sind, einen Anspruch enthält, der mit dem angegebenen Prädikat verglichen wird.

HasClaim(String, String)

Ermittelt, ob eine der Anspruchsidentitäten, die diesem Anspruchsprinzipal zugeordnet sind, einen Anspruch mit dem angegebenen Anspruchstyp und -wert enthält.

IsInRole(String)

Gibt einen Wert zurück, der angibt, ob die Entität (Benutzer), die von diesem Anspruchsprinzipal dargestellt wird, die angegebene Rolle innehat.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
WriteTo(BinaryWriter)

Serialisiert mithilfe von BinaryWriter.

WriteTo(BinaryWriter, Byte[])

Serialisiert mithilfe von BinaryWriter.

Gilt für

Siehe auch