Udostępnij za pośrednictwem


ClaimsPrincipal Klasa

Definicja

Implementacja IPrincipal , która obsługuje wiele tożsamości opartych na oświadczeniach.

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
Dziedziczenie
ClaimsPrincipal
Pochodne
Atrybuty
Implementuje

Przykłady

Poniższy przykład wyodrębnia oświadczenia przedstawione przez użytkownika w żądaniu HTTP i zapisuje je w odpowiedzi HTTP. Bieżący użytkownik jest odczytywany z elementu HttpContextClaimsPrincipaljako . Oświadczenia są następnie odczytywane z niego, a następnie zapisywane w odpowiedzi.

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

Uwagi

Począwszy od .NET Framework 4.5, tożsamość oparta na oświadczeniach (Windows Identity Foundation) i tożsamość oparta na oświadczeniach są w pełni zintegrowane z .NET Framework. Oznacza to, że wiele klas reprezentujących podmiot zabezpieczeń w .NET Framework pochodzi teraz od ClaimsPrincipal zamiast po prostu implementowania interfejsuIPrincipal. Oprócz implementowania interfejsu IPrincipal uwidacznia właściwości i metody, ClaimsPrincipal które są przydatne do pracy z oświadczeniami.

ClaimsPrincipal Uwidacznia kolekcję tożsamości, z których każda jest elementem ClaimsIdentity. W typowym przypadku ta kolekcja, do której uzyskuje się dostęp za pośrednictwem Identities właściwości, będzie miała tylko jeden element.

Wprowadzenie programu .NET 4.5 jako podmiotu ClaimsPrincipal zabezpieczeń, z którego pochodzą większość klas głównych, nie wymusza zmiany niczego w sposób, w jaki zajmujesz się tożsamością. Jednak otwiera więcej możliwości i oferuje więcej szans na wykonywanie bardziej precyzyjnej kontroli dostępu. Na przykład:

  • Sam kod aplikacji może pracować bezpośrednio z oświadczeniami zawartymi w bieżącym podmiotu zabezpieczeń, aby umożliwić wykonywanie dodatkowych zadań związanych z uwierzytelnianiem, autoryzacją i personalizacją.

  • Zasoby można obsługiwać przy użyciu potoku przetwarzania oświadczeń, który może obsługiwać żądania uwierzytelniania i zasady autoryzacji jeszcze przed osiągnięciem kodu. Na przykład można skonfigurować aplikację internetową lub usługę za pomocą niestandardowego menedżera uwierzytelniania oświadczeń, wystąpienia klasy pochodzącej ClaimsAuthenticationManager z klasy . Po skonfigurowaniu potok przetwarzania żądań wywołuje metodę Authenticate w menedżerze uwierzytelniania oświadczeń, przekazując ją jako ClaimsPrincipal , która reprezentuje kontekst żądania przychodzącego. Menedżer uwierzytelniania oświadczeń może następnie przeprowadzić uwierzytelnianie na podstawie wartości oświadczeń przychodzących. Może również filtrować, przekształcać lub dodawać oświadczenia do zestawu oświadczeń przychodzących. Na przykład może służyć do wzbogacania zestawu oświadczeń przychodzących za pomocą nowych oświadczeń utworzonych na podstawie lokalnego źródła danych, takiego jak lokalny profil użytkownika

  • Aplikację internetową można skonfigurować za pomocą niestandardowego menedżera autoryzacji oświadczeń, wystąpienia klasy pochodzącej ClaimsAuthorizationManager z klasy . Po skonfigurowaniu potok przetwarzania żądań pakuje przychodzące ClaimsPrincipal w obiekcie AuthorizationContext i wywołuje metodę CheckAccess w menedżerze autoryzacji oświadczeń. Menedżer autoryzacji oświadczeń może następnie wymusić autoryzację na podstawie oświadczeń przychodzących.

  • Wbudowane kontrole dostępu kodu oparte na oświadczeniach można wykonać przez skonfigurowanie aplikacji za pomocą niestandardowego menedżera autoryzacji oświadczeń i użycie ClaimsPrincipalPermission klasy do przeprowadzania kontroli dostępu imperatywnego lub sprawdzania dostępu deklaratywnego ClaimsPrincipalPermissionAttribute . Kontrole dostępu kodu opartego na oświadczeniach są wykonywane w tekście, poza potokiem przetwarzania, a więc są dostępne dla wszystkich aplikacji, o ile menedżer autoryzacji oświadczeń jest skonfigurowany.

Możesz uzyskać ClaimsPrincipal wystąpienie podmiotu zabezpieczeń skojarzonego z żądaniem lub podmiotem zabezpieczeń, w ramach którego jest wykonywany wątek, w aplikacji jednostki uzależnionej (RP) przez rzutowanie Thread.CurrentPrincipal właściwości na ClaimsPrincipalwartość . Oświadczenia skojarzone z obiektem ClaimsPrincipal są dostępne za pośrednictwem jego Claims właściwości. Właściwość Claims zwraca wszystkie oświadczenia zawarte w tożsamościach skojarzonych z podmiotem zabezpieczeń. W rzadkich przypadkach, w których ClaimsPrincipal zawiera wiele ClaimsIdentity wystąpień, można użyć Identities właściwości lub uzyskać dostęp do tożsamości podstawowej przy użyciu Identity właściwości . ClaimsPrincipal Udostępnia kilka metod, za pomocą których te oświadczenia mogą być przeszukiwane i w pełni obsługują zintegrowane zapytanie językowe (LINQ). Tożsamości można dodawać do podmiotu zabezpieczeń przy użyciu AddIdentities metod lub AddIdentity .

Uwaga

Aby dodać tożsamości do elementu ClaimsPrincipal, obiekt wywołujący musi mieć pełną relację zaufania.

Domyślnie program WIF określa priorytety WindowsIdentity obiektów podczas wybierania tożsamości podstawowej do zwrócenia przez Identity właściwość . To zachowanie można zmodyfikować, podając delegata PrimaryIdentitySelector za pomocą właściwości , aby wykonać wybór. Właściwość ClaimsPrincipalSelector zapewnia podobną Current funkcjonalność dla właściwości .

W modelu opartym na oświadczeniach, czy podmiot zabezpieczeń znajduje się w określonej roli, jest określany przez oświadczenia przedstawione przez jego tożsamości bazowe. Metoda IsInRole zasadniczo sprawdza każdą tożsamość skojarzona z podmiotem zabezpieczeń, aby określić, czy posiada oświadczenie z określoną wartością roli. Typ oświadczenia (reprezentowany przez jego Claim.Type właściwość) używany do określenia, które oświadczenia należy zbadać podczas kontroli ról, jest określony na tożsamości za pośrednictwem jego ClaimsIdentity.RoleClaimType właściwości. W związku z tym oświadczenia badane podczas kontroli ról mogą być innego typu dla różnych tożsamości skojarzonych z podmiotem zabezpieczeń.

Konstruktory

ClaimsPrincipal()

Inicjuje nowe wystąpienie klasy ClaimsPrincipal.

ClaimsPrincipal(BinaryReader)

Inicjuje wystąpienie klasy ClaimsPrincipal z określonym BinaryReaderelementem .

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

Inicjuje ClaimsPrincipal nowe wystąpienie klasy przy użyciu określonych tożsamości oświadczeń.

ClaimsPrincipal(IIdentity)

Inicjuje ClaimsPrincipal nowe wystąpienie klasy z określonej tożsamości.

ClaimsPrincipal(IPrincipal)

Inicjuje ClaimsPrincipal nowe wystąpienie klasy z określonego podmiotu zabezpieczeń.

ClaimsPrincipal(SerializationInfo, StreamingContext)
Przestarzałe.

Inicjuje ClaimsPrincipal nowe wystąpienie klasy na podstawie serializowanego strumienia utworzonego przy użyciu polecenia ISerializable.

Właściwości

Claims

Pobiera kolekcję zawierającą wszystkie oświadczenia ze wszystkich tożsamości oświadczeń skojarzonych z tym podmiotem zabezpieczeń oświadczeń.

ClaimsPrincipalSelector

Pobiera lub ustawia delegata używanego do wybierania podmiotu zabezpieczeń oświadczeń zwróconego Current przez właściwość .

Current

Pobiera bieżący podmiot zabezpieczeń oświadczeń.

CustomSerializationData

Zawiera wszelkie dodatkowe dane udostępniane przez typ pochodny. Zazwyczaj ustawiane podczas wywoływania metody WriteTo(BinaryWriter, Byte[]).

Identities

Pobiera kolekcję zawierającą wszystkie tożsamości oświadczeń skojarzone z tym podmiotem zabezpieczeń oświadczeń.

Identity

Pobiera tożsamość oświadczeń podstawowych skojarzonych z tym podmiotem zabezpieczeń oświadczeń.

PrimaryIdentitySelector

Pobiera lub ustawia delegata używanego do wybierania tożsamości oświadczeń zwróconej Identity przez właściwość.

Metody

AddIdentities(IEnumerable<ClaimsIdentity>)

Dodaje określone tożsamości oświadczeń do tego podmiotu zabezpieczeń oświadczeń.

AddIdentity(ClaimsIdentity)

Dodaje określoną tożsamość oświadczeń do tego podmiotu zabezpieczeń oświadczeń.

Clone()

Zwraca kopię tego wystąpienia.

CreateClaimsIdentity(BinaryReader)

Tworzy nową tożsamość oświadczeń.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
FindAll(Predicate<Claim>)

Pobiera wszystkie oświadczenia dopasowane przez określony predykat.

FindAll(String)

Pobiera wszystkie oświadczenia, które mają określony typ oświadczenia.

FindFirst(Predicate<Claim>)

Pobiera pierwsze oświadczenie zgodne z określonym predykatem.

FindFirst(String)

Pobiera pierwsze oświadczenie z określonym typem oświadczenia.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetObjectData(SerializationInfo, StreamingContext)

Wypełnia element SerializationInfo danymi wymaganymi do serializacji bieżącego ClaimsPrincipal obiektu.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
HasClaim(Predicate<Claim>)

Określa, czy którakolwiek z tożsamości oświadczeń skojarzonych z tym podmiotem zabezpieczeń oświadczeń zawiera oświadczenie zgodne z określonym predykatem.

HasClaim(String, String)

Określa, czy którakolwiek z tożsamości oświadczeń skojarzonych z tym podmiotem zabezpieczeń oświadczeń zawiera oświadczenie o określonym typie i wartości oświadczenia.

IsInRole(String)

Zwraca wartość wskazującą, czy jednostka (użytkownik) reprezentowana przez ten podmiot zabezpieczeń oświadczeń znajduje się w określonej roli.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
WriteTo(BinaryWriter, Byte[])

Serializuje przy użyciu klasy BinaryWriter.

WriteTo(BinaryWriter)

Serializuje przy użyciu klasy BinaryWriter.

Dotyczy

Zobacz też