Condividi tramite


SessionSecurityTokenHandler Classe

Definizione

Oggetto SecurityTokenHandler che elabora i token di sicurezza di tipo 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
Ereditarietà
SessionSecurityTokenHandler
Derivato

Esempio

Il codice XML seguente illustra come sostituire il gestore del token di sicurezza della sessione predefinito in una raccolta di gestori di token con un'istanza della MachineKeySessionSecurityTokenHandler classe nella configurazione.

<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>

Commenti

La SessionSecurityTokenHandler classe serializza, deserializza e convalida i token di sessione. I token di sessione sono token di tipo SessionSecurityToken. La SessionSecurityTokenHandler classe serializza i token da e verso il formato di cookie. Per impostazione predefinita, la classe serializza i token in WS-Secure conversation feb2005 o WS-Secure elementi conversation 1.3 <wsc:SecurityContextToken> . I token di sessione vengono usati da WSFederationAuthenticationModule (WSFAM) e SessionAuthenticationModule da (SAM) per archiviare informazioni su una sessione, si tratta principalmente dell'oggetto ClaimsPrincipal associato all'utente autenticato e all'ora di inizio e scadenza della sessione.

In scenari passivi, le WSFederationAuthenticationModule chiamate nella SessionAuthenticationModule pipeline di autenticazione (SAM) per creare un token di sessione da ClaimsPrincipal che rappresenta l'utente autenticato. SAM usa il token configurato SessionSecurityTokenHandler per creare il token e serializzarlo in un cookie (e per deserializzare il token da un cookie nelle richieste successive). SAM usa un'istanza della classe configurata CookieHandler per scrivere nuovamente il cookie nella risposta HTTP. Questo cookie viene quindi restituito al client e nelle richieste successive il client può presentare il cookie anziché effettuare un round trip al provider di identità per ottenere nuovamente un token di sicurezza. Per altre informazioni sul funzionamento delle sessioni con WIF, vedere Gestione delle sessioni WIF.

Annotazioni

L'elemento <di configurazione securityTokenHandlers> può essere usato per specificare un SessionSecurityTokenHandler oggetto che ha la responsabilità di proteggere le sessioni dell'applicazione. Gli sviluppatori devono prestare attenzione quando si modifica questa impostazione di configurazione, perché un sistema non configurato correttamente potrebbe causare una compromissione dell'applicazione. Ad esempio, se si specifica un oggetto derivato SessionSecurityTokenHandler e si passa una raccolta Transforms (CookieTransform) vuota alla base, l'identità degli utenti viene serializzata in un cookie non protetto. Ciò potrebbe consentire a un utente malintenzionato di modificare l'identità e quindi modificare i privilegi di accesso.

Se il token di sessione è in modalità di riferimento, ovvero la relativa SessionSecurityToken.IsReferenceMode proprietà è true, il gestore del token di sessione serializza solo le proprietà del token di sessione necessarie per rigenerare la chiave in SessionSecurityTokenCache. Nel caso predefinito, la SessionSecurityTokenCacheKey classe viene usata per rappresentare le chiavi della cache e il gestore del token scrive le SessionSecurityToken.ContextId proprietà e SessionSecurityToken.KeyGeneration del token. Se il token di sessione non è in modalità riferimento, ovvero la SessionSecurityToken.IsReferenceMode proprietà è false, quindi, oltre alle proprietà indicate in precedenza, il gestore richiama il ApplyTransforms metodo su una matrice di byte serializzata dal token e archivia anche il valore risultante nel cookie. Per altre informazioni sul modo in cui il token viene serializzato, vedere il SessionSecurityTokenHandler.WriteToken(XmlWriter, SecurityToken) metodo .

La Transforms proprietà ottiene l'elenco di trasformazioni applicate al token di sessione nel ApplyTransforms metodo . Tutte le trasformazioni derivano dalla CookieTransform classe . Nel caso predefinito, DeflateCookieTransform vengono applicati e ProtectedDataCookieTransform . ProtectedDataCookieTransform usa l'API Protezione dati (DPAPI) per proteggere il materiale dei cookie. DPAPI usa una chiave specifica per il computer in cui è in esecuzione negli algoritmi di protezione. Per questo motivo, il gestore di token di sessione predefinito non è utilizzabile negli scenari di Web farm perché, in questi scenari, i token scritti in un computer potrebbero dover essere letti in un altro computer. È possibile usare molte strategie per aggirare questo problema. Ad esempio, puoi:

Per altre informazioni sull'uso di sessioni negli scenari di Web farm, vedere WIF e Web farm.

SessionSecurityTokenHandler è incluso nella raccolta di gestori di token predefinita. Tuttavia, è possibile sostituirlo con un gestore di token di sessione personalizzato specificando innanzitutto un <elemento remove> nell'elemento <securityTokenHandlers> per rimuovere il gestore predefinito dalla raccolta e quindi aggiungere il gestore di token personalizzato usando l'elemento <add>. Per impostazione predefinita, è possibile specificare la durata predefinita del token includendo l'elemento <sessionTokenRequirement> nell'elemento <add> . È possibile progettare un gestore di token personalizzato per accettare elementi di configurazione personalizzati sotto l'elemento eseguendo l'override <add> del LoadCustomConfiguration metodo per fornire la logica per elaborarli.

Costruttori

Nome Descrizione
SessionSecurityTokenHandler()

Inizializza una nuova istanza della SessionSecurityTokenHandler classe che usa le trasformazioni predefinite dei cookie e la durata del token.

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan)

Inizializza una nuova istanza della SessionSecurityTokenHandler classe che usa le trasformazioni di cookie e la durata del token specificati.

SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>)

Inizializza una nuova istanza della SessionSecurityTokenHandler classe che utilizza le trasformazioni di cookie specificate.

Campi

Nome Descrizione
DefaultCookieTransforms

Raccolta di sola lettura contenente l'elenco delle trasformazioni predefinite da applicare ai cookie, e DeflateCookieTransform .ProtectedDataCookieTransform

DefaultLifetime

Costante che specifica la durata predefinita per i cookie, dieci ore.

Proprietà

Nome Descrizione
CanValidateToken

Ottiene un valore che indica se questo gestore supporta la convalida dei token di tipo SessionSecurityToken.

CanWriteToken

Ottiene un valore che indica se questo gestore può scrivere token di tipo SessionSecurityToken.

Configuration

Ottiene o imposta l'oggetto che fornisce la SecurityTokenHandlerConfiguration configurazione per l'istanza corrente.

(Ereditato da SecurityTokenHandler)
ContainingCollection

Ottiene la raccolta del gestore di token che contiene l'istanza corrente.

(Ereditato da SecurityTokenHandler)
CookieElementName

Ottiene il nome dell'elemento cookie.

CookieNamespace

Ottiene lo spazio dei nomi per l'elemento cookie.

DefaultTokenLifetime

Ottiene la durata del token predefinita.

TokenLifetime

Ottiene o imposta la durata del token.

TokenType

Ottiene il tipo dei token elaborati da questo gestore.

Transforms

Ottiene le trasformazioni che verranno applicate al cookie.

Metodi

Nome Descrizione
ApplyTransforms(Byte[], Boolean)

Applica le trasformazioni specificate dalla Transforms proprietà per codificare o decodificare il cookie specificato.

CanReadKeyIdentifierClause(XmlReader)

Restituisce un valore che indica se l'elemento XML a cui fa riferimento il lettore XML specificato è una clausola dell'identificatore di chiave che può essere deserializzata da questa istanza.

(Ereditato da SecurityTokenHandler)
CanReadToken(String)

Restituisce un valore che indica se la stringa specificata può essere deserializzata come token del tipo elaborato da questa istanza.

(Ereditato da SecurityTokenHandler)
CanReadToken(XmlReader)

Restituisce un valore che indica se il lettore è posizionato in corrispondenza di un <wsc:SecurityContextToken> elemento.

CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause)

Restituisce un valore che indica se la clausola dell'identificatore di chiave specificata può essere serializzata da questa istanza.

(Ereditato da SecurityTokenHandler)
CreateSecurityTokenReference(SecurityToken, Boolean)

Quando sottoposto a override in una classe derivata, crea il riferimento al token di sicurezza per i token elaborati da tale classe. Questo metodo viene in genere chiamato da un servizio token di sicurezza ( STS).

(Ereditato da SecurityTokenHandler)
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime)

Crea un SessionSecurityToken oggetto basato sull'entità di attestazione e sull'intervallo di tempo specificato durante il quale il token è valido.

CreateToken(SecurityTokenDescriptor)

Crea un token di sicurezza basato sul descrittore di token specificato.

DetectReplayedToken(SecurityToken)

Quando sottoposto a override in una classe derivata, genera un'eccezione se il token specificato viene rilevato come riprodotto.

(Ereditato da SecurityTokenHandler)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetTokenTypeIdentifiers()

Ottiene gli URI del tipo di token per i tipi di token che possono essere elaborati da questo gestore.

GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
LoadCustomConfiguration(XmlNodeList)

Carica la configurazione personalizzata da XML.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ReadKeyIdentifierClause(XmlReader)

In caso di override in una classe derivata, deserializza il codice XML a cui fa riferimento il lettore XML specificato a una clausola dell'identificatore di chiave che fa riferimento a un token elaborato dalla classe derivata.

(Ereditato da SecurityTokenHandler)
ReadToken(Byte[], SecurityTokenResolver)

Legge l'oggetto SessionSecurityToken da un flusso di byte usando il resolver di token specificato.

ReadToken(String)

In caso di override in una classe derivata, deserializza la stringa specificata in un token del tipo elaborato dalla classe derivata.

(Ereditato da SecurityTokenHandler)
ReadToken(XmlReader, SecurityTokenResolver)

Legge l'oggetto SessionSecurityToken utilizzando il lettore XML e il resolver di token specificati.

ReadToken(XmlReader)

Legge l'oggetto SessionSecurityToken utilizzando il lettore XML specificato.

SetTransforms(IEnumerable<CookieTransform>)

Imposta le trasformazioni che verranno applicate ai cookie.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TraceTokenValidationFailure(SecurityToken, String)

Analizza l'evento di errore durante la convalida dei token di sicurezza quando la traccia è abilitata.

(Ereditato da SecurityTokenHandler)
TraceTokenValidationSuccess(SecurityToken)

Consente di tracciare la convalida corretta degli eventi dei token di sicurezza quando la traccia è abilitata.

(Ereditato da SecurityTokenHandler)
ValidateSession(SessionSecurityToken)

Determina se la sessione associata al token specificato è ancora valida. La validità è determinata controllando le ValidFrom proprietà e ValidTo del token specificato. Se la sessione non è più valida, viene generata un'eccezione.

ValidateToken(SecurityToken)

Convalida il token specificato e restituisce le relative attestazioni.

ValidateToken(SessionSecurityToken, String)

Convalida il token di sessione specificato e restituisce le relative attestazioni.

WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause)

In caso di override in una classe derivata, serializza la clausola dell'identificatore di chiave specificata in XML. La clausola dell'identificatore di chiave deve essere del tipo supportato dalla classe derivata.

(Ereditato da SecurityTokenHandler)
WriteToken(SecurityToken)

Quando sottoposto a override in una classe derivata, serializza il token di sicurezza specificato in una stringa. Il token deve essere del tipo elaborato dalla classe derivata.

(Ereditato da SecurityTokenHandler)
WriteToken(SessionSecurityToken)

Serializza il token specificato in una matrice di byte.

WriteToken(XmlWriter, SecurityToken)

Serializza il token specificato utilizzando il writer XML specificato.

Si applica a

Vedi anche