Condividi tramite


SessionAuthenticationModule Classe

Definizione

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

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 in scenari di WS-Federation. Usa il gestore di cookie specificato dalla CookieHandler proprietà per leggere il cookie di sessione non elaborato dalla richiesta HTTP e scriverlo nella risposta HTTP. Usa l'oggetto SessionSecurityTokenHandler configurato per un'applicazione per deserializzare il 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 servita la richiesta.

SAM aggiunge il 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 dal sam durante questo processo.

Il SignOut metodo può essere richiamato per disconnettere l'utente da una sessione, ad esempio in un file code-behind SignOut.aspx.cs.

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 modificarne la scadenza. Gli SigningOuteventi , SignedOute SignOutError forniscono hook nell'elaborazione delle richieste di disconnessione. Per molti scenari, l'aggiunta di gestori per questi eventi, spesso al file di global.asax.cs, sarà sufficiente.

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 da poter 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 di cookie usato da SAM può essere configurato con l'elemento <cookieHandler> .

Costruttori

Nome Descrizione
SessionAuthenticationModule()

Inizializza una nuova istanza della classe SessionAuthenticationModule.

Proprietà

Nome Descrizione
ContextSessionSecurityToken

Ottiene l'oggetto attivo SessionSecurityToken per l'oggetto corrente HttpContext.

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 (valori attestazioni e così via) devono essere archiviate nel cookie di sessione o se il contenuto della sessione deve essere archiviato sul lato server, utilizzando il cookie per archiviare solo un riferimento.

Metodi

Nome Descrizione
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean)

Autentica la richiesta in ingresso 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 si trova nella raccolta di cookie specificata.

CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean)

Crea un oggetto SessionSecurityToken dai parametri specificati usando il gestore del token di sessione configurato.

DeleteSessionTokenCookie()

Elimina il cookie di sessione e lo rimuove dalla cache.

Dispose()

Rilascia le risorse (ad eccezione della memoria) usate dall'istanza corrente della HttpModuleBase classe .

(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 il 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 ASP.NET del modulo.

InitializePropertiesFromConfiguration()

Inizializza le proprietà del modulo in base alle definizioni nel file di configurazione.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(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 Thread sull'entità contenuta nel token di sessione specificato.

SignOut()

Disconnette l'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 oggetto SessionSecurityToken da un cookie di sessione e restituisce un valore che indica se il cookie di sessione è stato letto correttamente.

ValidateSessionToken(SessionSecurityToken)

Convalida l'oggetto specificato SessionSecurityToken e restituisce le relative identità.

WriteSessionTokenToCookie(SessionSecurityToken)

Scrive l'oggetto specificato SessionSecurityToken in un cookie di sessione.

Eventi

Nome Descrizione
SessionSecurityTokenCreated

Si verifica quando è stato 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 che l'utente è disconnesso.

SigningOut

Si verifica prima di eliminare la sessione di accesso.

SignOutError

Si verifica quando si verifica un errore durante la disconnessità.

Si applica a