SessionAuthenticationModule 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.
Implementa un modulo ASP.NET che elabora i cookie di sessione in scenari di WS-Federation.
public ref class SessionAuthenticationModule : System::IdentityModel::Services::HttpModuleBase
public class SessionAuthenticationModule : System.IdentityModel.Services.HttpModuleBase
type SessionAuthenticationModule = class
inherit HttpModuleBase
Public Class SessionAuthenticationModule
Inherits HttpModuleBase
- Ereditarietà
Esempio
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
//SUBSCRIBE TO SAM EVENTS
FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenCreated += new EventHandler<SessionSecurityTokenCreatedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenCreated);
FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenReceived += new EventHandler<SessionSecurityTokenReceivedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenReceived);
FederatedAuthentication.SessionAuthenticationModule.SigningOut += new EventHandler<SigningOutEventArgs>(SessionAuthenticationModule_SigningOut);
FederatedAuthentication.SessionAuthenticationModule.SignedOut += new EventHandler(SessionAuthenticationModule_SignedOut);
FederatedAuthentication.SessionAuthenticationModule.SignOutError += new EventHandler<ErrorEventArgs>(SessionAuthenticationModule_SignOutError);
}
void SessionAuthenticationModule_SignOutError(object sender, ErrorEventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SignOutError event");
}
void SessionAuthenticationModule_SignedOut(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SignedOut event");
}
void SessionAuthenticationModule_SigningOut(object sender, SigningOutEventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SigningOut event");
}
void SessionAuthenticationModule_SessionSecurityTokenReceived(object sender, SessionSecurityTokenReceivedEventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenReceived event");
}
void SessionAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenCreated event");
//Store session on the server-side token cache instead writing the whole token to the cookie.
//It may improve throughput but introduces server affinity that may affect scalability
FederatedAuthentication.SessionAuthenticationModule.IsReferenceMode = true;
}
Il codice XML seguente illustra come configurare sam nella pipeline di ASP.NET. Molti altri elementi presenti in una configurazione tipica vengono omessi qui per brevità.
<configuration>
<system.webServer>
<modules>
<!--WIF 4.5 modules -->
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<add name="WsFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</modules>
</system.webServer>
</configuration>
Commenti
Quando presente nella pipeline di ASP.NET, i SessionAuthenticationModule cookie di sessione (SAM) vengono elaborati negli scenari di WS-Federation. Usa il gestore cookie specificato dalla CookieHandler proprietà per leggere il cookie di sessione non elaborato dalla richiesta HTTP e scriverlo nella risposta HTTP. Usa l'oggetto configurato per un'applicazione per deserializzare il SessionSecurityTokenHandler cookie di sessione non elaborato in SessionSecurityToken oggetti. Il token di sicurezza della sessione contiene le attestazioni () e l'entità (ClaimClaimsPrincipal) associate all'entità per cui viene eseguita la richiesta.
SAM aggiunge il relativo OnAuthenticateRequest gestore eventi all'evento HttpApplication.AuthenticateRequest nella pipeline di ASP.NET. Questo gestore intercetta le richieste di accesso e, se è presente un cookie di sessione, lo deserializza in un token di sessione e imposta le Thread.CurrentPrincipal proprietà e HttpContext.User sull'entità attestazioni contenuta nel token di sessione. Richiama diversi altri metodi esposti dalla SAM durante questo processo.
Il SignOut metodo può essere richiamato per disconnettere l'utente da una sessione, ad esempio in un file SignOut.aspx.cs code-behind.
SAM espone diversi eventi che forniscono l'accesso alla pipeline di elaborazione. Gli SessionSecurityTokenReceived eventi e SessionSecurityTokenCreated consentono di modificare i token di sessione letti dai cookie o creati durante l'elaborazione. In genere, questa operazione viene eseguita per aggiungere, rimuovere o trasformare le attestazioni nel token o per regolarne l'ora di scadenza. Gli SigningOuteventi , SignedOute SignOutError forniscono hook nell'elaborazione delle richieste di disconnessione. Per molti scenari, è sufficiente aggiungere gestori per questi eventi, spesso al file global.asax.cs.
Per scenari più complessi, è possibile derivare da SessionAuthenticationModule per implementare un SAM personalizzato. A questo scopo, molti dei metodi richiamati durante OnAuthenticateRequest e SignOut vengono esposti in modo che sia possibile fornire un comportamento personalizzato in fasi specifiche del ciclo di vita dell'elaborazione della sessione.
È possibile aggiungere sam alla pipeline di ASP.NET in un file di configurazione aggiungendolo ai moduli HTTP nell'elemento <system.webServer>
per IIS versione 7 e successiva o nell'elemento <system.web>
per le versioni precedenti a IIS 7. Il gestore dei cookie usato da SAM può essere configurato con l'elemento <cookieHandler> .
Costruttori
SessionAuthenticationModule() |
Inizializza una nuova istanza della classe SessionAuthenticationModule. |
Proprietà
ContextSessionSecurityToken |
Ottiene l'oggetto SessionSecurityToken attivo per l'oggetto HttpContext corrente. |
CookieHandler |
Ottiene il gestore di cookie utilizzato per leggere, scrivere ed eliminare i cookie di sessione. |
FederationConfiguration |
Ottiene o imposta l'oggetto FederationConfiguration attivo per il modulo corrente. (Ereditato da HttpModuleBase) |
IsReferenceMode |
Ottiene o imposta un valore che specifica se le informazioni sulla sessione (i valori di attestazione e così via) devono essere archiviate in un cookie di sessione o se il contenuto della sessione deve essere memorizzato sul lato server, utilizzando il cookie per archiviare solo un riferimento. |
Metodi
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Autentica la richiesta in entrata convalidando il token di sessione in ingresso. Al termine della convalida, aggiorna il contesto HTTP corrente e l'entità thread con l'oggetto specificato SessionSecurityToken. |
ContainsSessionTokenCookie(HttpCookieCollection) |
Determina se un cookie di sessione è presente nella raccolta di cookie specificata. |
CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean) |
Crea SessionSecurityToken dai parametri specificati tramite il gestore token di sessione configurato. |
DeleteSessionTokenCookie() |
Elimina il cookie di sessione e lo rimuove dalla cache. |
Dispose() |
Rilascia le risorse (tranne la memoria) utilizzate dall'istanza corrente della classe HttpModuleBase. (Ereditato da HttpModuleBase) |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
Init(HttpApplication) |
Inizializza il modulo HTTP. (Ereditato da HttpModuleBase) |
InitializeModule(HttpApplication) |
Inizializza il modulo e lo prepara per gestire gli eventi dall'oggetto applicazione di ASP.NET del modulo. |
InitializePropertiesFromConfiguration() |
Inizializza le proprietà del modulo in base alle definizioni presenti nel file di configurazione. |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
OnAuthenticateRequest(Object, EventArgs) |
Gestisce l'evento AuthenticateRequest dalla pipeline di ASP.NET. |
OnPostAuthenticateRequest(Object, EventArgs) |
Gestisce l'evento PostAuthenticateRequest dalla pipeline di ASP.NET. |
OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Genera l'evento SessionSecurityTokenCreated. |
OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs) |
Genera l'evento SessionSecurityTokenReceived. |
OnSignedOut(EventArgs) |
Genera l'evento SignedOut. |
OnSigningOut(SigningOutEventArgs) |
Genera l'evento SigningOut. |
OnSignOutError(ErrorEventArgs) |
Genera l'evento SignOutError. |
ReadSessionTokenFromCookie(Byte[]) |
Legge un oggetto SessionSecurityToken dal cookie di sessione specificato. |
SetPrincipalFromSessionToken(SessionSecurityToken) |
Imposta l'entità su HttpContext e su Thread sull'entità contenuta nel token di sessione specificato. |
SignOut() |
Esegue l'uscita dell'utente corrente e genera gli eventi associati. |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
TryReadSessionTokenFromCookie(SessionSecurityToken) |
Tenta di leggere un SessionSecurityToken da un cookie di sessione e restituisce un valore che indica se il cookie di sessione è stato letto correttamente. |
ValidateSessionToken(SessionSecurityToken) |
Convalida SessionSecurityToken specificato e ne restituisce le identità. |
WriteSessionTokenToCookie(SessionSecurityToken) |
Scrive il SessionSecurityToken specificato in un cookie di sessione. |
Eventi
SessionSecurityTokenCreated |
Si verifica quando viene creato un token di sicurezza della sessione. |
SessionSecurityTokenReceived |
Si verifica quando un token di sicurezza della sessione è stato letto da un cookie. |
SignedOut |
Si verifica dopo la disconnessione dell'utente. |
SigningOut |
Si verifica prima dell'eliminazione della sessione di accesso. |
SignOutError |
Si verifica quando è presente un errore durante la disconnessione. |