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 wird 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 Typ "als ClaimsPrincipal" gelesen. Die Ansprüche werden dann von ihnen 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 werden Windows Identity Foundation (WIF) und anspruchsbasierte Identität vollständig in .NET Framework integriert. Dies bedeutet, dass viele Klassen, die einen Prinzipal im .NET Framework darstellen, nicht ClaimsPrincipal einfach die IPrincipal Schnittstelle implementieren. Zusätzlich zur Implementierung der Schnittstelle werden Eigenschaften und Methoden verfügbar gemacht, ClaimsPrincipal die für das IPrincipal Arbeiten mit Ansprüchen nützlich sind.

ClaimsPrincipal stellt eine Sammlung von Identitäten zur Verfügung, 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 ClaimsPrincipal in .NET 4.5 als Prinzipal, von dem die meisten Prinzipalklassen abgeleitet werden, erzwingt nicht, dass Sie etwas in der Art und Weise ändern, in der Sie mit Identität umgehen. Es ö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 fördern.

  • Sie können Ihre Ressourcen mit einer Anspruchsverarbeitungspipeline frontieren, die sich mit Authentifizierungsanforderungen und Autorisierungsrichtlinien befassen kann, auch bevor die Ausführung Ihren Code erreicht. Sie können beispielsweise eine webbasierte Anwendung oder einen Dienst mit einem benutzerdefinierten Anspruchsauthentifizierungs-Manager konfigurieren, eine Instanz einer Klasse, die von der ClaimsAuthenticationManager Klasse abgeleitet wird. Bei der Konfiguration ruft die Anforderungsverarbeitungspipeline die Authenticate Methode für den Anspruchsauthentifizierungs-Manager ClaimsPrincipal auf, die den Kontext der eingehenden Anforderung darstellt. Ihr Anspruchsauthentifizierungs-Manager kann dann die Authentifizierung basierend auf den Werten der eingehenden Ansprüche ausführen. Sie kann auch Ansprüche zum eingehenden Anspruchssatz filtern, transformieren oder hinzufügen. Beispielsweise könnte es verwendet werden, um den eingehenden Anspruchssatz mit neuen Ansprüchen zu erweitern, die aus einer lokalen Datenquelle erstellt wurden, z. B. ein lokales Benutzerprofil

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

  • Inline-anspruchsbasierte Codezugriffsüberprüfungen können ausgeführt werden, indem Sie Ihre Anwendung mit einem benutzerdefinierten Anspruchsberechtigungs-Manager konfigurieren und entweder die ClaimsPrincipalPermission Klasse verwenden, um zwingende Zugriffsüberprüfungen durchzuführen oder ClaimsPrincipalPermissionAttribute deklarative Zugriffsüberprüfungen durchzuführen. Anspruchsbasierte Codezugriffsüberprüfungen werden inline, außerhalb der Verarbeitungspipeline ausgeführt und stehen allen Anwendungen zur Verfügung, solange ein Anspruchsberechtigungs-Manager konfiguriert ist.

Sie können eine ClaimsPrincipal Instanz für den Prinzipal abrufen, der einer Anforderung zugeordnet ist, oder dem Prinzipal, unter dem ein Thread ausgeführt wird, in einer vertrauenden Partei (RP)-Anwendung , indem Sie die Thread.CurrentPrincipal Eigenschaft in die Eigenschaft ClaimsPrincipalumwandeln. Die mit einem ClaimsPrincipal Objekt verknüpften Ansprüche sind über ihre Claims Eigenschaft verfügbar. Die Claims Eigenschaft gibt alle Ansprüche zurück, die durch die Identitäten zurückgegeben werden, die dem Prinzipal zugeordnet sind. In dem ungewöhnlichen Fall, in dem die ClaimsPrincipal Eigenschaft mehrere ClaimsIdentity Instanzen enthält, können Sie die Identities Eigenschaft verwenden oder auf die primäre Identität zugreifen, indem Sie die Identity Eigenschaft verwenden. ClaimsPrincipal stellt mehrere Methoden bereit, durch die diese Ansprüche durchsucht und vollständig sprachintegrierte Abfrage (LINQ) unterstützt werden können. Identitäten können dem Prinzipal mithilfe der AddIdentities Methoden AddIdentity oder Methoden hinzugefügt werden.

Hinweis

Um identitäten ClaimsPrincipaldem hinzuzufügen, muss ein Anrufer voll vertrauenswürdig sein.

Standardmäßig priorisiert WindowsIdentity WIF Objekte beim Auswählen der primären Identität, um durch die Identity Eigenschaft zurückzugeben. Sie können dieses Verhalten ändern, indem Sie eine Stellvertretung über die PrimaryIdentitySelector Eigenschaft angeben, um die Auswahl auszuführen. Die ClaimsPrincipalSelector Eigenschaft bietet ähnliche Funktionen für die Current Eigenschaft.

Im Anspruchsbasierten Modell wird bestimmt, ob sich ein Prinzipal in einer angegebenen Rolle befindet, durch die Ansprüche bestimmt wird, die von ihren zugrunde liegenden Identitäten dargestellt werden. Die IsInRole Methode untersucht im Wesentlichen jede Identität, die dem Prinzipal zugeordnet ist, um zu ermitteln, ob sie einen Anspruch mit dem angegebenen Rollenwert besitzt. Der Anspruchstyp (dargestellt durch seine Claim.Type Eigenschaft) wird verwendet, um zu ermitteln, welche Ansprüche während der Rollenüberprüfung auf eine Identität durch seine ClaimsIdentity.RoleClaimType Eigenschaft angegeben werden sollen. Daher kann die während der Rollenüberprüfung untersuchten Ansprüche eine andere Art für unterschiedliche Identitäten sein, die dem Prinzipal zugeordnet sind.

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