SessionAuthenticationModule Class

Definition

Implémente un module ASP.NET qui transforme des cookies de session dans les scénarios WS-Federation.Implements an ASP.NET module that processes session cookies in WS-Federation scenarios.

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

Examples

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

Le code XML suivant montre comment configurer le SAM dans le pipeline ASP.NET.The following XML shows how to configure the SAM in the ASP.NET pipeline. De nombreux autres éléments présents dans une configuration standard sont omis ici par souci de concision.Many other elements that are present in a typical configuration are omitted here for brevity.

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

Remarks

Lorsqu’il est présent dans le pipeline ASP.NET, le SessionAuthenticationModule (SAM) traite les cookies de session dans les scénarios WS-Federation.When present in the ASP.NET pipeline, the SessionAuthenticationModule (SAM) processes session cookies in WS-Federation scenarios. Elle utilise le gestionnaire de cookies spécifié par la propriété CookieHandler pour lire le cookie de session brute à partir de la requête HTTP et l’écrire dans la réponse HTTP.It uses the cookie handler specified by the CookieHandler property to read the raw session cookie from the HTTP request and write it to the HTTP response. Elle utilise la SessionSecurityTokenHandler configurée pour une application afin de désérialiser le cookie de session brute en objets SessionSecurityToken.It uses the SessionSecurityTokenHandler that is configured for an application to deserialize the raw session cookie into SessionSecurityToken objects. Le jeton de sécurité de session contient les revendications (Claim) et le principal (ClaimsPrincipal) associés à l’entité pour laquelle la demande est traitée.The session security token contains the claims (Claim) and principal (ClaimsPrincipal) associated with the entity for which the request is being served.

Le SAM ajoute son gestionnaire d’événements OnAuthenticateRequest à l’événement HttpApplication.AuthenticateRequest dans le pipeline ASP.NET.The SAM adds its OnAuthenticateRequest event handler to the HttpApplication.AuthenticateRequest event in the ASP.NET pipeline. Ce gestionnaire intercepte les demandes de connexion et, s’il existe un cookie de session, le désérialise dans un jeton de session et définit les propriétés Thread.CurrentPrincipal et HttpContext.User sur le principal des revendications contenu dans le jeton de session.This handler intercepts sign-in requests, and, if there is a session cookie, deserializes it into a session token, and sets the Thread.CurrentPrincipal and HttpContext.User properties to the claims principal contained in the session token. Il appelle plusieurs des autres méthodes exposées par le SAM au cours de ce processus.It invokes several of the other methods exposed by the SAM during this process.

La méthode SignOut peut être appelée pour déconnecter l’utilisateur d’une session (par exemple, dans un fichier code-behind SignOut.aspx.cs).The SignOut method can be invoked to sign the user out of a session (for example, in a SignOut.aspx.cs code-behind file).

Le SAM expose plusieurs événements qui fournissent l’accès à son pipeline de traitement.The SAM exposes several events that provide access to its processing pipeline. Les événements SessionSecurityTokenReceived et SessionSecurityTokenCreated vous permettent de modifier des jetons de session qui sont lus à partir de cookies ou créés au cours du traitement.The SessionSecurityTokenReceived and SessionSecurityTokenCreated events enable you to modify session tokens that are read from cookies or created during processing. En général, cette opération est effectuée pour ajouter, supprimer ou transformer des revendications dans le jeton ou pour ajuster son heure d’expiration.Typically, this is done to add, remove, or transform claims in the token or to adjust its expiration time. Les événements SigningOut, SignedOutet SignOutError fournissent des hooks dans le traitement des demandes de déconnexion.The SigningOut, SignedOut, and SignOutError events provide hooks into the processing of sign-out requests. Pour de nombreux scénarios, il suffit d’ajouter des gestionnaires pour ces événements, souvent au fichier global.asax.cs, pour qu’ils soient suffisants.For many scenarios, simply adding handlers for these events, often to the global.asax.cs file, will be sufficient.

Pour les scénarios plus complexes, vous pouvez dériver de SessionAuthenticationModule pour implémenter un SAM personnalisé.For more complicated scenarios, you can derive from SessionAuthenticationModule to implement a custom SAM. À cette fin, un grand nombre des méthodes qui sont appelées pendant OnAuthenticateRequest et SignOut sont exposées afin que vous puissiez fournir un comportement personnalisé à des étapes spécifiques du cycle de vie de traitement de la session.To this end, many of the methods that are invoked during OnAuthenticateRequest and SignOut are exposed so that you can provide custom behavior at specific stages of the session processing lifecycle.

Vous pouvez ajouter le SAM au pipeline ASP.NET dans un fichier de configuration en l’ajoutant aux modules HTTP sous l’élément <system.webServer> pour IIS version 7 et versions ultérieures ou sous l’élément <system.web> pour les versions antérieures à IIS 7.You can add the SAM to the ASP.NET pipeline in a configuration file by adding it to the HTTP modules under either the <system.webServer> element for IIS version 7 and later or under the <system.web> element for versions prior to IIS 7. Le gestionnaire de cookies utilisé par le SAM peut être configuré avec l’élément <cookieHandler> .The cookie handler used by the SAM can be configured with the <cookieHandler> element.

Constructors

SessionAuthenticationModule()

Initialise une nouvelle instance de la classe SessionAuthenticationModule.Initializes a new instance of the SessionAuthenticationModule class.

Properties

ContextSessionSecurityToken

Obtient le SessionSecurityToken active pour le HttpContext en cours.Gets the active SessionSecurityToken for the current HttpContext.

CookieHandler

Obtient le gestionnaire de cookies utilisé pour lire, écrire et supprimer des cookies de session.Gets the cookie handler that is used to read, write, and delete session cookies.

FederationConfiguration

Obtient ou définit l'objet FederationConfiguration appliqué pour le module actuel.Gets or sets the FederationConfiguration object that is in effect for the current module.

(Inherited from HttpModuleBase)
IsReferenceMode

Obtient ou définit une valeur qui spécifie si les informations de session (valeurs de revendication, etc.) doivent être stockées dans le cookie de session ou si le contenu de session doit être stocké côté serveur, en utilisant le cookie pour stocker simplement une référence.Gets or sets a value that specifies whether the session information (claim values, etc.) should be stored in the session cookie or whether the session content should be stored on the server side, using the cookie to store just a reference.

Methods

AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean)

Authentifie la demande entrante en validant le jeton de session entrant.Authenticates the incoming request by validating the incoming session token. Quand la validation réussit, il met à jour le contexte HTTP et le principal de thread actuels avec le SessionSecurityToken spécifié.Upon successful validation, it updates the current HTTP context and thread principal with the specified SessionSecurityToken.

ContainsSessionTokenCookie(HttpCookieCollection)

Détermine si un cookie de session est dans la collection de cookie spécifiée.Determines whether a session cookie is in the specified cookie collection.

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

Crée un SessionSecurityToken des paramètres spécifiés à l'aide du gestionnaire de jetons de session configuré.Creates a SessionSecurityToken from the specified parameters by using the configured session token handler.

DeleteSessionTokenCookie()

Supprime le cookie de session et le supprime du cache.Deletes the session cookie and removes it from the cache.

Dispose()

Libère les ressources (sauf la mémoire) utilisées par l'instance actuelle de la classe HttpModuleBase.Releases the resources (except memory) used by the current instance of the HttpModuleBase class.

(Inherited from HttpModuleBase)
Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Inherited from Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Inherited from Object)
Init(HttpApplication)

Initialise le module HTTP.Initializes the HTTP module.

(Inherited from HttpModuleBase)
InitializeModule(HttpApplication)

Initialise le module et le prépare pour gérer les événements à partir de l'objet d'application ASP.NETASP.NET du module.Initializes the module and prepares it to handle events from the module's ASP.NETASP.NET application object.

InitializePropertiesFromConfiguration()

Initialise les propriétés de module selon les définitions du fichier de configuration.Initializes the module properties based on definitions in the configuration file.

MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Inherited from Object)
OnAuthenticateRequest(Object, EventArgs)

Gère l'événement AuthenticateRequest du pipeline ASP.NETASP.NET.Handles the AuthenticateRequest event from the ASP.NETASP.NET pipeline.

OnPostAuthenticateRequest(Object, EventArgs)

Gère l'événement PostAuthenticateRequest du pipeline ASP.NETASP.NET.Handles the PostAuthenticateRequest event from the ASP.NETASP.NET pipeline.

OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs)

Déclenche l'événement SessionSecurityTokenCreated.Raises the SessionSecurityTokenCreated event.

OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs)

Déclenche l'événement SessionSecurityTokenReceived.Raises the SessionSecurityTokenReceived event.

OnSignedOut(EventArgs)

Déclenche l'événement SignedOut.Raises the SignedOut event.

OnSigningOut(SigningOutEventArgs)

Déclenche l'événement SigningOut.Raises the SigningOut event.

OnSignOutError(ErrorEventArgs)

Déclenche l'événement SignOutError.Raises the SignOutError event.

ReadSessionTokenFromCookie(Byte[])

Lit un SessionSecurityToken à partir du cookie de session spécifié.Reads a SessionSecurityToken from the specified session cookie.

SetPrincipalFromSessionToken(SessionSecurityToken)

Définit l'entité sur le HttpContext et Thread sur l'entité contenue dans le jeton de session spécifié.Sets the principal on the HttpContext and Thread to the principal that is contained in the specified session token.

SignOut()

Déconnecte l'utilisateur actuel et déclenche les événements associés.Signs the current user out and raises the associated events.

ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Inherited from Object)
TryReadSessionTokenFromCookie(SessionSecurityToken)

Tente de lire un SessionSecurityToken à partir d'un cookie de session et retourne une valeur indiquant si le cookie de session a été correctement lu.Attempts to read a SessionSecurityToken from a session cookie and returns a value that indicates whether the session cookie was successfully read.

ValidateSessionToken(SessionSecurityToken)

Valide le SessionSecurityToken spécifié et retourne ses identités.Validates the specified SessionSecurityToken and returns its identities.

WriteSessionTokenToCookie(SessionSecurityToken)

Écrit le SessionSecurityToken spécifié dans un cookie de session.Writes the specified SessionSecurityToken to a session cookie.

Events

SessionSecurityTokenCreated

Se produit lorsqu'un jeton de sécurité de session a été créé.Occurs when a session security token has been created.

SessionSecurityTokenReceived

Se produit lorsqu'un jeton de sécurité de session a été lu à partir d'un cookie.Occurs when a session security token has been read from a cookie.

SignedOut

Se produit après que l'utilisateur ferme une session.Occurs after the user is signed out.

SigningOut

Se produit avant de supprimer la session de connexion.Occurs before deleting the sign-in session.

SignOutError

Se produit lors d'une erreur pendant la fermeture de session.Occurs when there is an error during sign-out.

Applies to