SessionAuthenticationModule Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Implémente un module ASP.NET qui transforme des cookies de session dans les scénarios 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
- Héritage
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 par souci 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, (SAM) traite les SessionAuthenticationModule 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 brut à partir de la requête HTTP et l’écrire dans la réponse HTTP. Il utilise le SessionSecurityTokenHandler qui est configuré pour qu’une application désérialise le cookie de session brut 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 demande est traitée.
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 en jeton de session et définit les propriétés et HttpContext.User sur le Thread.CurrentPrincipal principal de revendications contenu dans le jeton de session. Il appelle plusieurs des autres méthodes exposées par le sam au cours de ce processus.
La SignOut méthode peut être appelée pour déconnecter l’utilisateur d’une session (par exemple, dans un SignOut.aspx.cs fichier code-behind).
Le sam expose plusieurs événements qui fournissent l’accès à son pipeline de traitement. Les SessionSecurityTokenReceived événements et SessionSecurityTokenCreated vous permettent de modifier les jetons de session lus à partir de cookies ou créés pendant le traitement. En règle générale, cette opération est effectuée pour ajouter, supprimer ou transformer des revendications dans le jeton ou pour ajuster son délai d’expiration. Les SigningOutévénements , SignedOutet SignOutError fournissent 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 au fichier global.asax.cs.
Pour les scénarios plus complexes, vous pouvez dériver de SessionAuthenticationModule pour implémenter un SAM personnalisé. À cette fin, la plupart des méthodes 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 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>
pour IIS version 7 et ultérieures ou sous l’élément pour les <system.web>
versions antérieures à IIS 7. Le gestionnaire de cookies utilisé par sam peut être configuré avec l’élément <cookieHandler> .
Constructeurs
SessionAuthenticationModule() |
Initialise une nouvelle instance de la classe SessionAuthenticationModule. |
Propriétés
ContextSessionSecurityToken |
Obtient le SessionSecurityToken active pour le HttpContext en cours. |
CookieHandler |
Obtient le gestionnaire de cookies utilisé pour lire, écrire et supprimer des cookies de session. |
FederationConfiguration |
Obtient ou définit l'objet FederationConfiguration appliqué 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, en utilisant le cookie pour stocker simplement une référence. |
Méthodes
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Authentifie la demande entrante en validant le jeton de session entrant. Une fois la validation réussie, il met à jour le contexte HTTP actuel et le principal de thread avec le spécifié SessionSecurityToken. |
ContainsSessionTokenCookie(HttpCookieCollection) |
Détermine si un cookie de session est dans la collection de cookie spécifiée. |
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é. |
DeleteSessionTokenCookie() |
Supprime le cookie de session et le supprime du cache. |
Dispose() |
Libère les ressources (sauf la mémoire) utilisées par l'instance actuelle de la classe HttpModuleBase. (Hérité de HttpModuleBase) |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le 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 de module selon les définitions du fichier de configuration. |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (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 à partir du cookie de session spécifié. |
SetPrincipalFromSessionToken(SessionSecurityToken) |
Définit l'entité sur le HttpContext et Thread sur l'entité contenue 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 à partir d'un cookie de session et retourne une valeur indiquant si le cookie de session a été correctement lu. |
ValidateSessionToken(SessionSecurityToken) |
Valide le SessionSecurityToken spécifié et retourne ses identités. |
WriteSessionTokenToCookie(SessionSecurityToken) |
Écrit le SessionSecurityToken spécifié dans un cookie de session. |
Événements
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 après que l'utilisateur ferme une session. |
SigningOut |
Se produit avant de supprimer la session de connexion. |
SignOutError |
Se produit lors d'une erreur pendant la fermeture de session. |