SessionAuthenticationModule Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Implementa un módulo de ASP.NET que procesa las cookies de sesión en escenarios de 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
- Herencia
Ejemplos
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;
}
El siguiente CÓDIGO XML muestra cómo configurar sam en la canalización de ASP.NET. Muchos otros elementos que están presentes en una configuración típica se omiten aquí para mayor brevedad.
<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>
Comentarios
Cuando se encuentra en la canalización de ASP.NET, el SessionAuthenticationModule (SAM) procesa las cookies de sesión en escenarios WS-Federation. Usa el controlador de cookies especificado por la CookieHandler propiedad para leer la cookie de sesión sin procesar de la solicitud HTTP y escribirla en la respuesta HTTP. Usa el SessionSecurityTokenHandler que está configurado para que una aplicación deserialice la cookie de sesión sin procesar en SessionSecurityToken objetos . El token de seguridad de sesión contiene las notificaciones (Claim) y la entidad de seguridad (ClaimsPrincipal) asociadas a la entidad para la que se atiende la solicitud.
Sam agrega su OnAuthenticateRequest controlador de eventos al HttpApplication.AuthenticateRequest evento en la canalización de ASP.NET. Este controlador intercepta las solicitudes de inicio de sesión y, si hay una cookie de sesión, la deserializa en un token de sesión y establece las Thread.CurrentPrincipal propiedades y HttpContext.User en la entidad de seguridad de notificaciones contenida en el token de sesión. Invoca varios de los otros métodos expuestos por sam durante este proceso.
El SignOut método se puede invocar para cerrar la sesión del usuario (por ejemplo, en un archivo de código subyacente de SignOut.aspx.cs).
Sam expone varios eventos que proporcionan acceso a su canalización de procesamiento. Los SessionSecurityTokenReceived eventos y SessionSecurityTokenCreated le permiten modificar los tokens de sesión que se leen de las cookies o que se crean durante el procesamiento. Normalmente, esto se hace para agregar, quitar o transformar notificaciones en el token o para ajustar su tiempo de expiración. Los SigningOuteventos , SignedOuty SignOutError proporcionan enlaces al procesamiento de solicitudes de cierre de sesión. Para muchos escenarios, basta con agregar controladores para estos eventos, a menudo al archivo global.asax.cs, será suficiente.
Para escenarios más complicados, puede derivar de SessionAuthenticationModule para implementar un SAM personalizado. Para ello, muchos de los métodos que se invocan durante OnAuthenticateRequest y SignOut se exponen para que pueda proporcionar un comportamiento personalizado en fases específicas del ciclo de vida de procesamiento de la sesión.
Puede agregar el SAM a la canalización de ASP.NET en un archivo de configuración agregándolo a los módulos HTTP en el <system.webServer>
elemento para IIS versión 7 y posteriores o en el <system.web>
elemento para las versiones anteriores a IIS 7. El controlador de cookies utilizado por sam se puede configurar con el <elemento cookieHandler> .
Constructores
SessionAuthenticationModule() |
Inicializa una nueva instancia de la clase SessionAuthenticationModule. |
Propiedades
ContextSessionSecurityToken |
Obtiene el SessionSecurityToken activo para el HttpContext actual. |
CookieHandler |
Obtiene el controlador de cookies que se usa para leer, escribir y eliminar las cookies de sesión. |
FederationConfiguration |
Obtiene o establece el objeto FederationConfiguration que esté en efecto para el módulo actual. (Heredado de HttpModuleBase) |
IsReferenceMode |
Obtiene o establece un valor que especifica si la información de sesión (valores de notificación, etc.) debe almacenarse en la cookie de sesión o si el contenido de sesión debe almacenarse en el servidor, mediante la cookie para almacenar solo una referencia. |
Métodos
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Autentica la solicitud entrante validando el token de entrada de la sesión. Tras la validación correcta, actualiza el contexto HTTP actual y la entidad de seguridad del subproceso con el especificado SessionSecurityToken. |
ContainsSessionTokenCookie(HttpCookieCollection) |
Determina si una cookie de sesión está en la colección de cookies especificada. |
CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean) |
Crea un objeto SessionSecurityToken a partir de los parámetros especificados mediante el controlador de tokens de sesión configurado. |
DeleteSessionTokenCookie() |
Elimina la cookie de sesión y la quita de la memoria caché. |
Dispose() |
Libera los recursos (salvo memoria) usados por la instancia actual de la clase HttpModuleBase. (Heredado de HttpModuleBase) |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
Init(HttpApplication) |
Inicializa el módulo HTTP. (Heredado de HttpModuleBase) |
InitializeModule(HttpApplication) |
Inicializa el módulo y lo prepara para controlar los eventos del objeto de aplicación ASP.NET del módulo. |
InitializePropertiesFromConfiguration() |
Inicializa las propiedades del módulo basadas en definiciones en el archivo de configuración. |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
OnAuthenticateRequest(Object, EventArgs) |
Controla el AuthenticateRequest evento de la canalización de ASP.NET. |
OnPostAuthenticateRequest(Object, EventArgs) |
Controla el PostAuthenticateRequest evento de la canalización de ASP.NET. |
OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Genera el evento SessionSecurityTokenCreated. |
OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs) |
Genera el evento SessionSecurityTokenReceived. |
OnSignedOut(EventArgs) |
Genera el evento SignedOut. |
OnSigningOut(SigningOutEventArgs) |
Genera el evento SigningOut. |
OnSignOutError(ErrorEventArgs) |
Genera el evento SignOutError. |
ReadSessionTokenFromCookie(Byte[]) |
Lee un SessionSecurityToken de la cookie de sesión especificada. |
SetPrincipalFromSessionToken(SessionSecurityToken) |
Establece la entidad de seguridad de HttpContext y Thread en la entidad de seguridad contenida en el token de sesión especificado. |
SignOut() |
Cierra la sesión del usuario actual y genera los eventos asociados. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
TryReadSessionTokenFromCookie(SessionSecurityToken) |
Se intenta leer un SessionSecurityToken de una cookie de sesión y devuelve un valor que indica si la cookie de sesión se leyó correctamente. |
ValidateSessionToken(SessionSecurityToken) |
Valida el SessionSecurityToken especificado y devuelve sus identidades. |
WriteSessionTokenToCookie(SessionSecurityToken) |
Escribe el SessionSecurityToken especificado en una cookie de sesión. |
Eventos
SessionSecurityTokenCreated |
Se produce cuando se ha creado un token de seguridad de la sesión. |
SessionSecurityTokenReceived |
Se produce una vez leído un token de seguridad de la sesión de una cookie. |
SignedOut |
Se produce una vez ha cerrado sesión el usuario. |
SigningOut |
Se produce antes de eliminar la sesión de inicio. |
SignOutError |
Se produce cuando hay un error durante el cierre de sesión. |