SessionSecurityTokenHandler Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Element SecurityTokenHandler , który przetwarza tokeny zabezpieczające typu SessionSecurityToken.
public ref class SessionSecurityTokenHandler : System::IdentityModel::Tokens::SecurityTokenHandler
public class SessionSecurityTokenHandler : System.IdentityModel.Tokens.SecurityTokenHandler
type SessionSecurityTokenHandler = class
inherit SecurityTokenHandler
Public Class SessionSecurityTokenHandler
Inherits SecurityTokenHandler
- Dziedziczenie
- Pochodne
Przykłady
Poniższy kod XML pokazuje, jak zastąpić domyślną procedurę obsługi tokenów zabezpieczających sesji w kolekcji programu obsługi tokenów MachineKeySessionSecurityTokenHandler wystąpieniem klasy w konfiguracji.
<securityTokenHandlers>
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
Uwagi
Klasa SessionSecurityTokenHandler serializuje, deserializuje i weryfikuje tokeny sesji. Tokeny sesji są tokenami typu SessionSecurityToken. Klasa SessionSecurityTokenHandler serializuje tokeny do i z formatu pliku cookie. Domyślnie klasa serializuje tokeny w WS-Secure Conversation Feb2005 lub WS-Secure Conversation 1.3 <wsc:SecurityContextToken>
elementów. Tokeny sesji są używane przez WSFederationAuthenticationModule (WSFAM) i SessionAuthenticationModule (SAM) do przechowywania informacji o sesji, jest to przede wszystkim ClaimsPrincipal skojarzone z uwierzytelnionego użytkownika oraz czas rozpoczęcia i wygaśnięcia sesji.
W scenariuszach WSFederationAuthenticationModule pasywnych wywołania do potoku SessionAuthenticationModule uwierzytelniania (SAM) w celu utworzenia tokenu sesji z ClaimsPrincipal elementu reprezentującego uwierzytelnionego użytkownika. Protokół SAM używa skonfigurowanego SessionSecurityTokenHandler do utworzenia tokenu i serializacji go do pliku cookie (i deserializowania tokenu z pliku cookie w kolejnych żądaniach). Sam używa wystąpienia swojej skonfigurowanej CookieHandler klasy do zapisania pliku cookie z powrotem do odpowiedzi HTTP. Ten plik cookie jest następnie zwracany do klienta, a następnie na kolejnych żądaniach klient może przedstawić plik cookie, a nie wrócić do dostawcy tożsamości w celu ponownego uzyskania tokenu zabezpieczającego. Aby uzyskać więcej informacji na temat sposobu działania sesji z programem WIF, zobacz Zarządzanie sesjami programu WIF.
Uwaga
Element <konfiguracji securityTokenHandlers> może służyć do określenia elementu SessionSecurityTokenHandler , który ma odpowiedzialność za zabezpieczanie sesji aplikacji. Deweloperzy powinni zachować ostrożność podczas zmieniania tego ustawienia konfiguracji, ponieważ nieprawidłowo skonfigurowany system może spowodować naruszenie zabezpieczeń aplikacji. Na przykład określenie pochodnej SessionSecurityTokenHandler i przekazanie pustej kolekcji Transforms (CookieTransform) do bazy spowoduje serializacji tożsamości użytkowników do pliku cookie, który nie był chroniony. Może to umożliwić osobie atakującej zmodyfikowanie tożsamości i zmianę uprawnień dostępu.
Jeśli token sesji jest w trybie odwołania, oznacza to, że jego SessionSecurityToken.IsReferenceMode właściwością jest true
, procedura obsługi tokenu sesji serializuje tylko właściwości tokenu sesji, które są potrzebne do ponownego wygenerowania klucza w SessionSecurityTokenCacheobiekcie . W domyślnym przypadku SessionSecurityTokenCacheKey klasa jest używana do reprezentowania kluczy pamięci podręcznej, a procedura obsługi tokenów zapisuje SessionSecurityToken.ContextId właściwości i SessionSecurityToken.KeyGeneration tokenu. Jeśli token sesji nie jest w trybie odwołania, oznacza to, SessionSecurityToken.IsReferenceMode że właściwość to false
, oprócz właściwości wymienionych wcześniej program obsługi wywołuje ApplyTransforms metodę na tablicy bajtów serializowanej z tokenu i przechowuje wynikową wartość w pliku cookie. Aby uzyskać więcej informacji o sposobie serializacji tokenu, zobacz metodę SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) .
Właściwość Transforms pobiera listę przekształceń, które są stosowane do tokenu sesji w metodzie ApplyTransforms . Wszystkie przekształcenia pochodzą z CookieTransform klasy . W domyślnym przypadku są stosowane wartości DeflateCookieTransform i ProtectedDataCookieTransform . Program ProtectedDataCookieTransform używa interfejsu API ochrony danych (DPAPI) do ochrony materiału cookie. Interfejs DPAPI używa klucza specyficznego dla komputera, na którym działa w algorytmach ochrony. Z tego powodu domyślna procedura obsługi tokenów sesji nie może być użyteczna w scenariuszach farmy sieci Web, ponieważ w takich scenariuszach tokeny zapisane na jednym komputerze mogą wymagać odczytu na innym komputerze. Aby obejść ten problem, można użyć wielu strategii. Możesz na przykład:
Zastąp wartość domyślną wartością SessionSecurityTokenHandlerMachineKeySessionSecurityTokenHandler. Element MachineKeySessionSecurityTokenHandler umożliwia określenie kluczy podpisywania i szyfrowania w ramach elementu ASP.NET
<machineKey>
w pliku konfiguracji.Podaj procedurę obsługi dla FederatedAuthentication.FederationConfigurationCreated zdarzenia w pliku global.asax.cs i zastąp domyślną procedurę obsługi tokenów sesji wystąpieniem SessionSecurityTokenHandler , które zawiera listę przekształceń, które obejmują RsaSignatureCookieTransform elementy i RsaEncryptionCookieTransform. Nowe wystąpienie można utworzyć, wywołując jeden z konstruktorów, który pobiera listę przekształceń.
Utwórz przekształcenie niestandardowe z klasy bazowej CookieTransform i użyj metody powyżej, aby uwzględnić ją na liście przekształceń do zastosowania.
Utwórz niestandardową procedurę obsługi tokenów na podstawie SessionSecurityTokenHandler własnego mechanizmu i zaimplementuj własny mechanizm.
Aby uzyskać więcej informacji na temat używania sesji w scenariuszach farmy sieci Web, zobacz WIF i Web Farms.
Element SessionSecurityTokenHandler jest uwzględniony w domyślnej kolekcji obsługi tokenów. Można jednak zastąpić ją niestandardową procedurą obsługi tokenów sesji, określając <najpierw element remove> w elemencie securityTokenHandlers, aby usunąć domyślną procedurę obsługi z kolekcji, a następnie dodać niestandardową procedurę obsługi tokenów przy użyciu< elementu add>.>< Domyślnie można określić domyślny okres istnienia tokenu, uwzględniając <element sessionTokenRequirement> w elemecie <add>
. Możesz zaprojektować niestandardową procedurę obsługi tokenów, aby pobrać niestandardowe elementy konfiguracji w <add>
ramach elementu, przesłaniając metodę LoadCustomConfiguration w celu zapewnienia logiki do ich przetwarzania.
Konstruktory
SessionSecurityTokenHandler() |
Inicjuje SessionSecurityTokenHandler nowe wystąpienie klasy, które używa domyślnych przekształceń plików cookie i okresu istnienia tokenu. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Inicjuje SessionSecurityTokenHandler nowe wystąpienie klasy, które używa określonych przekształceń plików cookie. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Inicjuje SessionSecurityTokenHandler nowe wystąpienie klasy, które używa określonych przekształceń plików cookie i okresu istnienia tokenu. |
Pola
DefaultCookieTransforms |
Kolekcja tylko do odczytu zawierająca listę domyślnych przekształceń, które mają być stosowane do plików cookie, i DeflateCookieTransformProtectedDataCookieTransform. |
DefaultLifetime |
Stała określająca domyślny okres istnienia plików cookie, dziesięć godzin. |
Właściwości
CanValidateToken |
Pobiera wartość wskazującą, czy ta procedura obsługi obsługuje walidację tokenów typu SessionSecurityToken. |
CanWriteToken |
Pobiera wartość wskazującą, czy ta procedura obsługi może zapisywać tokeny typu SessionSecurityToken. |
Configuration |
Pobiera lub ustawia SecurityTokenHandlerConfiguration obiekt, który zapewnia konfigurację dla bieżącego wystąpienia. (Odziedziczone po SecurityTokenHandler) |
ContainingCollection |
Pobiera kolekcję programu obsługi tokenów zawierającą bieżące wystąpienie. (Odziedziczone po SecurityTokenHandler) |
CookieElementName |
Pobiera nazwę elementu cookie. |
CookieNamespace |
Pobiera przestrzeń nazw elementu cookie. |
DefaultTokenLifetime |
Pobiera domyślny okres istnienia tokenu. |
TokenLifetime |
Pobiera lub ustawia okres istnienia tokenu. |
TokenType |
Pobiera typ tokenów, które przetwarza ten program obsługi. |
Transforms |
Pobiera przekształcenia, które zostaną zastosowane do pliku cookie. |
Metody
ApplyTransforms(Byte[], Boolean) |
Stosuje przekształcenia określone przez Transforms właściwość do kodowania lub dekodowania określonego pliku cookie. |
CanReadKeyIdentifierClause(XmlReader) |
Zwraca wartość wskazującą, czy element XML, do którego odwołuje się określony czytnik XML, jest klauzulą identyfikatora klucza, która może zostać zdeserializowana przez to wystąpienie. (Odziedziczone po SecurityTokenHandler) |
CanReadToken(String) |
Zwraca wartość wskazującą, czy określony ciąg może zostać zdeserializowany jako token typu przetworzonego przez to wystąpienie. (Odziedziczone po SecurityTokenHandler) |
CanReadToken(XmlReader) |
Zwraca wartość wskazującą, czy czytnik jest umieszczony w elemecie |
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Zwraca wartość wskazującą, czy określona klauzula identyfikatora klucza może być serializowana przez to wystąpienie. (Odziedziczone po SecurityTokenHandler) |
CreateSecurityTokenReference(SecurityToken, Boolean) |
Po zastąpieniu w klasie pochodnej tworzy odwołanie do tokenu zabezpieczającego dla tokenów przetworzonych przez klasę. Ta metoda jest zwykle wywoływana przez usługę tokenu zabezpieczającego (STS). (Odziedziczone po SecurityTokenHandler) |
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
SessionSecurityToken Tworzy obiekt na podstawie określonego zakresu oświadczeń podmiotu zabezpieczeń i czasu, w którym token jest prawidłowy. |
CreateToken(SecurityTokenDescriptor) |
Tworzy token zabezpieczający na podstawie określonego deskryptora tokenu. |
DetectReplayedToken(SecurityToken) |
Po zastąpieniu w klasie pochodnej zgłasza wyjątek, jeśli określony token zostanie wykryty jako odtwarzany. (Odziedziczone po SecurityTokenHandler) |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetTokenTypeIdentifiers() |
Pobiera identyfikatory URI typu tokenu dla typów tokenów, które mogą być przetwarzane przez tę procedurę obsługi. |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
LoadCustomConfiguration(XmlNodeList) |
Ładuje konfigurację niestandardową z pliku XML. |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ReadKeyIdentifierClause(XmlReader) |
Po przesłonięciu w klasie pochodnej deserializuje kod XML, do którego odwołuje się określony czytnik XML, do klauzuli identyfikatora klucza, która odwołuje się do tokenu przetworzonego przez klasę pochodną. (Odziedziczone po SecurityTokenHandler) |
ReadToken(Byte[], SecurityTokenResolver) |
Odczytuje element SessionSecurityToken ze strumienia bajtów przy użyciu określonego modułu rozpoznawania tokenów. |
ReadToken(String) |
Po zastąpieniu w klasie pochodnej deserializuje określony ciąg do tokenu typu przetworzonego przez klasę pochodną. (Odziedziczone po SecurityTokenHandler) |
ReadToken(XmlReader) |
Odczytuje element SessionSecurityToken przy użyciu określonego czytnika XML. |
ReadToken(XmlReader, SecurityTokenResolver) |
Odczytuje SessionSecurityToken element przy użyciu określonego czytnika XML i modułu rozpoznawania tokenów. |
SetTransforms(IEnumerable<CookieTransform>) |
Ustawia przekształcenia, które zostaną zastosowane do plików cookie. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
TraceTokenValidationFailure(SecurityToken, String) |
Śledzi zdarzenie niepowodzenia podczas walidacji tokenów zabezpieczających po włączeniu śledzenia. (Odziedziczone po SecurityTokenHandler) |
TraceTokenValidationSuccess(SecurityToken) |
Śledzi pomyślne sprawdzanie poprawności zdarzenia tokenów zabezpieczających po włączeniu śledzenia. (Odziedziczone po SecurityTokenHandler) |
ValidateSession(SessionSecurityToken) |
Określa, czy sesja skojarzona z określonym tokenem jest nadal prawidłowa. Ważność jest określana przez sprawdzenie ValidFrom właściwości i ValidTo określonego tokenu. Jeśli sesja nie jest już prawidłowa, zgłaszany jest wyjątek. |
ValidateToken(SecurityToken) |
Sprawdza poprawność określonego tokenu i zwraca jego oświadczenia. |
ValidateToken(SessionSecurityToken, String) |
Sprawdza poprawność określonego tokenu sesji i zwraca swoje oświadczenia. |
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
Po zastąpieniu w klasie pochodnej serializuje określoną klauzulę identyfikatora klucza do xml. Klauzula identyfikatora klucza musi być typu obsługiwanego przez klasę pochodną. (Odziedziczone po SecurityTokenHandler) |
WriteToken(SecurityToken) |
Po zastąpieniu w klasie pochodnej serializuje określony token zabezpieczający do ciągu. Token musi być typu przetwarzanego przez klasę pochodną. (Odziedziczone po SecurityTokenHandler) |
WriteToken(SessionSecurityToken) |
Serializuje określony token do tablicy bajtów. |
WriteToken(XmlWriter, SecurityToken) |
Serializuje określony token przy użyciu określonego modułu zapisywania XML. |