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 HttpContext jako ClaimsPrincipal. Oświadczenia są następnie odczytywane z niego, a następnie zapisywane w odpowiedzi.

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>");  
   }  
}  

Uwagi

Począwszy od .NET Framework 4.5, Windows Identity Foundation (WIF) i tożsamości opartej 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, ClaimsPrincipal a nie tylko implementuje IPrincipal interfejs. Oprócz implementacji interfejsu IPrincipal ClaimsPrincipal uwidacznia właściwości i metody 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, która jest dostępna 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ą. To jednak otwiera więcej możliwości i oferuje więcej szans na wykonanie 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 zwiększyć uwierzytelnianie, autoryzację i zadania personalizacji.

  • Zasoby można radzić sobie z potokiem przetwarzania oświadczeń, który może zajmować się żądaniami uwierzytelniania i zasadami autoryzacji jeszcze przed osiągnięciem kodu. Można na przykład skonfigurować aplikację lub usługę internetową 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ącym ClaimsPrincipal go jako, który 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żna go użyć do wzbogacania zestawu oświadczeń przychodzących przy użyciu 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ń tworzy pakiety 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 wymuszać autoryzację na podstawie oświadczeń przychodzących.

  • Wbudowane testy dostępu kodu oparte na oświadczeniach można wykonać, konfigurując aplikację za pomocą niestandardowego menedżera autoryzacji oświadczeń i używając 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 i dlatego 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 którym jest wykonywany wątek, w aplikacji jednostki uzależnionej (RP), rzutując Thread.CurrentPrincipal właściwość na ClaimsPrincipal. 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 przez tożsamości skojarzone z podmiotem zabezpieczeń. W rzadkich przypadkach, w których zawiera ClaimsPrincipal 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ługuje zintegrowane zapytanie językowe (LINQ). Tożsamości można dodać 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, która ma być zwracana przez Identity właściwość. To zachowanie można zmodyfikować, podając delegata za pomocą PrimaryIdentitySelector właściwości w celu wykonania zaznaczenia. Właściwość ClaimsPrincipalSelector zapewnia podobną funkcjonalność dla Current 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 podstawowe tożsamości. Metoda IsInRole zasadniczo sprawdza każdą tożsamość skojarzona z podmiotem zabezpieczeń, aby określić, czy posiada oświadczenie o określonej 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 jej 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 określonego ClaimsPrincipal BinaryReaderobiektu .

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)

Inicjuje ClaimsPrincipal nowe wystąpienie klasy z serializacji 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żytego do wybrania podmiotu zabezpieczeń oświadczeń zwróconego Current przez właściwość.

Current

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

CustomSerializationData

Zawiera wszelkie dodatkowe dane dostarczone 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żytego do wybrania tożsamości oświadczeń zwróconej przez Identity właściwość.

Metody

AddIdentities(IEnumerable<ClaimsIdentity>)

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

AddIdentity(ClaimsIdentity)

Dodaje tożsamość określonych 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, które są zgodne z określonym predykatem.

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 dane SerializationInfo wymagane 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 tę jednostkę oświadczenia jest 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)

Serializuje przy użyciu klasy BinaryWriter.

WriteTo(BinaryWriter, Byte[])

Serializuje przy użyciu klasy BinaryWriter.

Dotyczy

Zobacz też