Teilen über


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 ClaimsPrincipalgelesen. Die Ansprüche werden dann daraus gelesen und dann in die Antwort geschrieben.

if (HttpContext.Current.User is ClaimsPrincipal 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 ClaimsPrincipal abgeleitet werden, anstatt einfach die IPrincipal -Schnittstelle zu implementieren. Zusätzlich zur Implementierung der IPrincipal -Schnittstelle macht Eigenschaften und Methoden verfügbar, ClaimsPrincipal die für die Arbeit mit Ansprüchen nützlich sind.

ClaimsPrincipal macht eine Auflistung von Identitäten verfügbar, von denen jede eine ClaimsIdentityist. Im allgemeinen Fall verfügt diese Auflistung, auf die über die Identities -Eigenschaft zugegriffen 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, etwas in der Art und Weise zu ändern, wie Sie mit Identität umgehen. Es eröffnet jedoch mehr Möglichkeiten und bietet mehr Chancen, eine feinere Zugriffssteuerung zu üben. Beispiel:

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

  • Sie können Ihre Ressourcen mit einer Anspruchsverarbeitungspipeline voran stellen, die Authentifizierungsanforderungen und Autorisierungsrichtlinien verarbeiten kann, noch bevor die Ausführung Ihren Code erreicht. Sie können beispielsweise eine webbasierte Anwendung oder einen webbasierten Dienst mit einem benutzerdefinierten Anspruchsauthentifizierungs-Manager konfigurieren, einem instance einer Klasse, die von der ClaimsAuthenticationManager -Klasse abgeleitet wird. Wenn dies konfiguriert ist, ruft die Anforderungsverarbeitungspipeline die Authenticate -Methode im 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. Es kann auch Ansprüche filtern, transformieren oder dem eingehenden Anspruchssatz hinzufügen. Sie könnte beispielsweise verwendet werden, um den eingehenden Anspruchssatz mit neuen Ansprüchen anzureichern, die aus einer lokalen Datenquelle erstellt wurden, z. B. einem lokalen Benutzerprofil.

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

  • Auf Inlineansprüchen basierende Codezugriffsprüfungen können durchgeführt werden, indem Sie Ihre Anwendung mit einem benutzerdefinierten Anspruchsautorisierungs-Manager konfigurieren und entweder die ClaimsPrincipalPermission -Klasse zum Durchführen imperativer Zugriffsprüfungen oder deklarative ClaimsPrincipalPermissionAttribute Zugriffsprüfungen verwenden. Anspruchsbasierte Codezugriffsprüfungen werden inline außerhalb der Verarbeitungspipeline ausgeführt und stehen daher allen Anwendungen zur Verfügung, solange ein Anspruchsautorisierungs-Manager konfiguriert ist.

Sie können eine ClaimsPrincipal instance 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 (RP) abrufen, indem Sie die Thread.CurrentPrincipal -Eigenschaft in umwandelnClaimsPrincipal. Die einem ClaimsPrincipal Objekt zugeordneten Ansprüche sind über seine Claims -Eigenschaft verfügbar. Die Claims -Eigenschaft gibt alle Ansprüche zurück, die in den Identitäten enthalten sind, die dem Prinzipal zugeordnet sind. In dem ungewöhnlichen Fall, in dem der ClaimsPrincipal mehrere ClaimsIdentity Instanzen enthält, können Sie die Identities -Eigenschaft verwenden oder mithilfe der -Eigenschaft auf die Identity primäre Identität zugreifen. ClaimsPrincipal stellt mehrere Methoden bereit, mit denen diese Ansprüche durchsucht werden können, und unterstützt vollständig LINQ (Language Integrated Query). Identitäten können dem Prinzipal mithilfe der AddIdentities Methoden oder AddIdentity hinzugefügt werden.

Hinweis

Um Identitäten hinzuzufügen ClaimsPrincipal, muss ein Aufrufer voll vertrauenswürdig sein.

Standardmäßig priorisiert WindowsIdentity WIF Objekte beim Auswählen der primären Identität, die durch die Identity Eigenschaft zurückgegeben werden 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 durch die Ansprüche bestimmt, die von den zugrunde liegenden Identitäten bereitgestellt werden, ob ein Prinzipal eine bestimmte Rolle hat. Die IsInRole -Methode untersucht im Wesentlichen jede Identität, die dem Prinzipal zugeordnet ist, um zu bestimmen, ob er einen Anspruch mit dem angegebenen Rollenwert besitzt. Der Typ des Anspruchs (dargestellt durch seine Claim.Type -Eigenschaft), mit dem bestimmt wird, welche Ansprüche bei Rollenüberprüfungen untersucht werden sollen, wird über die ClaimsIdentity.RoleClaimType -Eigenschaft für eine Identität angegeben. Daher können die ansprüche, die bei Rollenüberprüfungen untersucht werden, 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)
Veraltet.

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, Byte[])

Serialisiert mithilfe von BinaryWriter.

WriteTo(BinaryWriter)

Serialisiert mithilfe von BinaryWriter.

Gilt für:

Weitere Informationen