SessionSecurityTokenHandler Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- Derivato
Esempio
Il codice XML seguente illustra come sostituire il gestore 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 conversazione febbraio 2005 o WS-Secure elementi conversation 1.3 <wsc:SecurityContextToken>
. I token di sessione vengono usati da WSFederationAuthenticationModule (WSFAM) e ( SessionAuthenticationModule SAM) per archiviare informazioni su una sessione, che è principalmente l'oggetto ClaimsPrincipal associato all'utente autenticato e all'ora di inizio e scadenza della sessione.
Negli 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 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 successive richieste il client può presentare il cookie invece di 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 WiF Session Management.For more information about how sessions operate with WIF session management, see WIF Session Management.
Nota
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, specificando una raccolta derivata SessionSecurityTokenHandler e passando una raccolta Transforms (CookieTransform) vuota alla base, l'identità degli utenti verrà serializzata in un cookie che non era 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 di 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 vengono applicati e DeflateCookieTransformProtectedDataCookieTransform . 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 della 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, è possibile:
Sostituire l'impostazione predefinita SessionSecurityTokenHandler con .MachineKeySessionSecurityTokenHandler consente MachineKeySessionSecurityTokenHandler di specificare le chiavi di firma e crittografia nell'elemento ASP.NET
<machineKey>
nel file di configurazione.Fornire un gestore per l'evento FederatedAuthentication.FederationConfigurationCreated nel file global.asax.cs e sostituire il gestore del token di sessione predefinito con un'istanza di con un elenco di SessionSecurityTokenHandler trasformazioni che include RsaSignatureCookieTransform e RsaEncryptionCookieTransform. È possibile creare la nuova istanza richiamando uno dei costruttori che accetta un elenco di trasformazioni.
Derivare una trasformazione personalizzata dalla CookieTransform classe base e usare il metodo precedente per includerlo nell'elenco di trasformazioni da applicare.
Derivare un gestore di token personalizzato da SessionSecurityTokenHandler e implementare un meccanismo personalizzato.
Per altre informazioni sull'uso di sessioni in scenari di Web farm, vedere WIF e Web farm.
è SessionSecurityTokenHandler incluso nella raccolta del gestore di token predefinita. È tuttavia possibile sostituirlo con un gestore di token di sessione personalizzato specificando prima un <elemento remove> nell'elemento <securityTokenHandlers> per rimuovere il gestore predefinito dalla raccolta e quindi aggiungendo 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 nell'elemento eseguendo l'override <add>
del LoadCustomConfiguration metodo per fornire la logica per elaborarli.
Costruttori
SessionSecurityTokenHandler() |
Inizializza una nuova istanza della classe SessionSecurityTokenHandler che utilizza le trasformazioni cookie predefinite e la durata del token. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>) |
Inizializza una nuova istanza della classe SessionSecurityTokenHandler che utilizza le trasformazioni dei cookie specificate. |
SessionSecurityTokenHandler(ReadOnlyCollection<CookieTransform>, TimeSpan) |
Inizializza una nuova istanza della classe SessionSecurityTokenHandler che utilizza le trasformazioni cookie specificate e la durata del token. |
Campi
DefaultCookieTransforms |
Una raccolta di sola lettura che contiene l'elenco delle trasformazioni predefinite da applicare ai cookie, a DeflateCookieTransform e a ProtectedDataCookieTransform. |
DefaultLifetime |
Costante che specifica la durata predefinita per i cookie, dieci ore. |
Proprietà
CanValidateToken |
Ottiene un valore che indica se il gestore supporta la convalida di token di tipo SessionSecurityToken. |
CanWriteToken |
Ottiene un valore che indica se il gestore può scrivere i token di tipo SessionSecurityToken. |
Configuration |
Ottiene o imposta l'oggetto SecurityTokenHandlerConfiguration che fornisce la configurazione per l'istanza corrente. (Ereditato da SecurityTokenHandler) |
ContainingCollection |
Ottiene la raccolta di gestori di token che contiene l'istanza corrente. (Ereditato da SecurityTokenHandler) |
CookieElementName |
Ottiene il nome per l'elemento Cookie. |
CookieNamespace |
Ottiene lo spazio dei nomi dell'elemento Cookie. |
DefaultTokenLifetime |
Ottiene la durata del token predefinita. |
TokenLifetime |
Ottiene o imposta la durata del token. |
TokenType |
Ottiene il tipo dei token che questo gestore elabora. |
Transforms |
Ottiene le trasformazioni che saranno applicate al cookie. |
Metodi
ApplyTransforms(Byte[], Boolean) |
Applica le trasformazioni specificate dalla proprietà Transforms per codificare o decodificare il cookie specificato. |
CanReadKeyIdentifierClause(XmlReader) |
Restituisce un valore che indica se l'elemento XML a cui il lettore XML specificato fa riferimento è 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 un token del tipo elaborato da questa istanza. (Ereditato da SecurityTokenHandler) |
CanReadToken(XmlReader) |
Restituisce un valore che indica se il lettore viene posizionato in corrispondenza di un elemento |
CanWriteKeyIdentifierClause(SecurityKeyIdentifierClause) |
Restituisce un valore che indica se la clausola dell'identificatore chiave specificata può essere serializzata da questa istanza. (Ereditato da SecurityTokenHandler) |
CreateSecurityTokenReference(SecurityToken, Boolean) |
Una volta eseguito l'override in una classe derivata, crea il riferimento del token di sicurezza per i token elaborati da quella classe. Questo metodo in genere viene chiamato da un servizio token di sicurezza (STS). (Ereditato da SecurityTokenHandler) |
CreateSessionSecurityToken(ClaimsPrincipal, String, String, DateTime, DateTime) |
Crea SessionSecurityToken in base all'entità attestazioni specificata e all'intervallo di tempo durante il quale il token è valido. |
CreateToken(SecurityTokenDescriptor) |
Crea un token di sicurezza basato sul descrittore del token specificato. |
DetectReplayedToken(SecurityToken) |
Una volta eseguito l'override in una classe derivata, viene generata un'eccezione se il token specificato viene rilevato come ripetuto. (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 dei tipi di token per i tipi di token che possono essere elaborati da questo gestore. |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
LoadCustomConfiguration(XmlNodeList) |
Carica la configurazione personalizzata da XML. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ReadKeyIdentifierClause(XmlReader) |
Quando viene sottoposto a override in una classe derivata, deserializza l'XML a cui fa riferimento il lettore XML specificato a una clausola dell'identificatore di chiave che si riferisce a un token elaborato dalla classe derivata. (Ereditato da SecurityTokenHandler) |
ReadToken(Byte[], SecurityTokenResolver) |
Legge l'oggetto SessionSecurityToken da un flusso di byte utilizzando il resolver di token specificato. |
ReadToken(String) |
Una volta eseguito l'override in una classe derivata, deserializza la stringa specificata in un token del tipo elaborato dalla classe derivata. (Ereditato da SecurityTokenHandler) |
ReadToken(XmlReader) |
Legge SessionSecurityToken utilizzando il lettore XML specificato. |
ReadToken(XmlReader, SecurityTokenResolver) |
Legge l'oggetto SessionSecurityToken utilizzando il lettore XML e il resolver di token specificati. |
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) |
Traccia l'evento di errore durante la convalida dei token di sicurezza se è abilitata la tracciatura. (Ereditato da SecurityTokenHandler) |
TraceTokenValidationSuccess(SecurityToken) |
Traccia la convalida dell'evento dei token di sicurezza se è abilitata la tracciatura. (Ereditato da SecurityTokenHandler) |
ValidateSession(SessionSecurityToken) |
Determina se la sessione associata al token specificato è ancora valida. La validità è determinata controllando le proprietà di ValidFrom e di 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 della sessione specifica e ne restituisce le richieste. |
WriteKeyIdentifierClause(XmlWriter, SecurityKeyIdentifierClause) |
Una volta eseguito l'override in una classe derivata, serializza la clausola identificatore chiave specificata in XML. La clausola identificatore di chiave deve essere di tipo supportato dalla classe derivata. (Ereditato da SecurityTokenHandler) |
WriteToken(SecurityToken) |
Una volta eseguito l'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 di sicurezza specificato utilizzando il writer XML specificato. |