Partage via


SessionAuthenticationModule Classe

Définition

Implémente un module ASP.NET qui traite les cookies de session dans WS-Federation scénarios.

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
Héritage
SessionAuthenticationModule

Exemples

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. De nombreux autres éléments présents dans une configuration classique sont omis ici à des fins de concision.

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

Remarques

Lorsqu’il est présent dans le pipeline ASP.NET, le SessionAuthenticationModule (SAM) traite les cookies de session dans WS-Federation scénarios. Il utilise le gestionnaire de cookies spécifié par la CookieHandler propriété pour lire le cookie de session brute à partir de la requête HTTP et l’écrire dans la réponse HTTP. Il utilise celui SessionSecurityTokenHandler qui est configuré pour qu’une application désérialise le cookie de session brute en SessionSecurityToken objets. Le jeton de sécurité de session contient les revendications (Claim) et le principal (ClaimsPrincipal) associés à l’entité pour laquelle la requête est traitée.

Le sam ajoute son OnAuthenticateRequest gestionnaire d’événements à l’événement HttpApplication.AuthenticateRequest dans le pipeline ASP.NET. 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 et HttpContext.User les Thread.CurrentPrincipal propriétés sur le principal de revendications contenu dans le jeton de session. Il appelle plusieurs autres méthodes exposées par le SAM pendant ce processus.

La SignOut méthode peut être appelée pour déconnecter l’utilisateur d’une session (par exemple, dans un fichier code-behind SignOut.aspx.cs).

Le sam expose plusieurs événements qui fournissent l’accès à son pipeline de traitement. Les SessionSecurityTokenReceived événements et SessionSecurityTokenCreated les événements vous permettent de modifier les jetons de session lus à partir de cookies ou créés pendant le traitement. En règle générale, cela permet d’ajouter, de supprimer ou de transformer des revendications dans le jeton ou d’ajuster son délai d’expiration. Les SigningOutévénements et SignOutError les événements SignedOutfournissent des hooks dans le traitement des demandes de déconnexion. Pour de nombreux scénarios, il suffit d’ajouter des gestionnaires pour ces événements, souvent dans le fichier global.asax.cs.

Pour les scénarios plus complexes, vous pouvez dériver d’un SessionAuthenticationModule SAM personnalisé. À cette fin, de nombreuses méthodes appelées pendant OnAuthenticateRequest et SignOut exposées vous permettent de fournir un comportement personnalisé à des étapes spécifiques du cycle de vie du traitement de session.

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> iis version 7 et ultérieure ou sous l’élément <system.web> pour les versions antérieures à IIS 7. Le gestionnaire de cookies utilisé par le SAM peut être configuré avec l’élément <cookieHandler> .

Constructeurs

Nom Description
SessionAuthenticationModule()

Initialise une nouvelle instance de la classe SessionAuthenticationModule.

Propriétés

Nom Description
ContextSessionSecurityToken

Obtient l’actif SessionSecurityToken pour le fichier actif HttpContext.

CookieHandler

Obtient le gestionnaire de cookies utilisé pour lire, écrire et supprimer des cookies de session.

FederationConfiguration

Obtient ou définit l’objet FederationConfiguration qui est en vigueur pour le module actuel.

(Hérité de 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, à l’aide du cookie pour stocker uniquement une référence.

Méthodes

Nom Description
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean)

Authentifie la requête entrante en validant le jeton de session entrant. Une fois la validation réussie, elle met à jour le contexte HTTP actuel et le principal de thread avec le paramètre spécifié SessionSecurityToken.

ContainsSessionTokenCookie(HttpCookieCollection)

Détermine si un cookie de session se trouve dans la collection de cookies spécifiée.

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

Crée un SessionSecurityToken à partir des paramètres spécifiés à l’aide du gestionnaire de jetons de session configuré.

DeleteSessionTokenCookie()

Supprime le cookie de session et le supprime du cache.

Dispose()

Libère les ressources (à l’exception de la mémoire) utilisées par l’instance actuelle de la HttpModuleBase classe.

(Hérité de HttpModuleBase)
Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
Init(HttpApplication)

Initialise le module HTTP.

(Hérité de HttpModuleBase)
InitializeModule(HttpApplication)

Initialise le module et le prépare pour gérer les événements à partir de l’objet application ASP.NET du module.

InitializePropertiesFromConfiguration()

Initialise les propriétés du module en fonction des définitions du fichier de configuration.

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
OnAuthenticateRequest(Object, EventArgs)

Gère l’événement AuthenticateRequest à partir du pipeline ASP.NET.

OnPostAuthenticateRequest(Object, EventArgs)

Gère l’événement PostAuthenticateRequest à partir du pipeline ASP.NET.

OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs)

Déclenche l’événement SessionSecurityTokenCreated.

OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs)

Déclenche l’événement SessionSecurityTokenReceived.

OnSignedOut(EventArgs)

Déclenche l’événement SignedOut.

OnSigningOut(SigningOutEventArgs)

Déclenche l’événement SigningOut.

OnSignOutError(ErrorEventArgs)

Déclenche l’événement SignOutError.

ReadSessionTokenFromCookie(Byte[])

Lit un SessionSecurityToken cookie de session spécifié.

SetPrincipalFromSessionToken(SessionSecurityToken)

Définit le principal sur le HttpContext principal et Thread le principal contenu dans le jeton de session spécifié.

SignOut()

Déconnecte l’utilisateur actuel et déclenche les événements associés.

ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)
TryReadSessionTokenFromCookie(SessionSecurityToken)

Tente de lire un SessionSecurityToken cookie de session et retourne une valeur qui indique si le cookie de session a été lu avec succès.

ValidateSessionToken(SessionSecurityToken)

Valide l’identité spécifiée SessionSecurityToken et retourne ses identités.

WriteSessionTokenToCookie(SessionSecurityToken)

Écrit le cookie de session spécifié SessionSecurityToken .

Événements

Nom Description
SessionSecurityTokenCreated

Se produit lorsqu’un jeton de sécurité de session a été créé.

SessionSecurityTokenReceived

Se produit lorsqu’un jeton de sécurité de session a été lu à partir d’un cookie.

SignedOut

Se produit une fois que l’utilisateur est déconnecté.

SigningOut

Se produit avant de supprimer la session de connexion.

SignOutError

Se produit en cas d’erreur lors de la déconnexion.

S’applique à