Compartir vía


SessionAuthenticationModule Clase

Definición

Implementa un módulo 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
SessionAuthenticationModule

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 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, ( SessionAuthenticationModule SAM) procesa las cookies de sesión en escenarios de 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 () y la entidad de seguridad (ClaimClaimsPrincipal) 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 la 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 desde cookies o 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. En 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 una SAM personalizada. 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 sesión.

Puede agregar la SAM a la canalización de ASP.NET en un archivo de configuración agregándolo a los módulos HTTP en el elemento de IIS <system.webServer> versión 7 y posteriores o en el <system.web> elemento para versiones anteriores a IIS 7. El controlador de cookies usado por sam se puede configurar con el <elemento cookieHandler> .

Constructores

Nombre Description
SessionAuthenticationModule()

Inicializa una nueva instancia de la clase SessionAuthenticationModule.

Propiedades

Nombre Description
ContextSessionSecurityToken

Obtiene el activo SessionSecurityToken para el objeto actual HttpContext.

CookieHandler

Obtiene el controlador de cookies que se usa para leer, escribir y eliminar cookies de sesión.

FederationConfiguration

Obtiene o establece el FederationConfiguration objeto que está en vigor 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 la sesión debe almacenarse en el servidor, utilizando la cookie para almacenar solo una referencia.

Métodos

Nombre Description
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean)

Autentica la solicitud entrante validando el token de sesión entrante. Tras la validación correcta, actualiza el contexto HTTP actual y la entidad de seguridad de subproceso con el especificado SessionSecurityToken.

ContainsSessionTokenCookie(HttpCookieCollection)

Determina si una cookie de sesión está en la recopilación de cookies especificada.

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

Crea un SessionSecurityToken a partir de los parámetros especificados mediante el controlador de token de sesión configurado.

DeleteSessionTokenCookie()

Elimina la cookie de sesión y la quita de la memoria caché.

Dispose()

Libera los recursos (excepto la memoria) usados por la instancia actual de la HttpModuleBase clase .

(Heredado de HttpModuleBase)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como 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 eventos desde el objeto de aplicación ASP.NET del módulo.

InitializePropertiesFromConfiguration()

Inicializa las propiedades del módulo en función de las definiciones del archivo de configuración.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
OnAuthenticateRequest(Object, EventArgs)

Controla el AuthenticateRequest evento desde la canalización de ASP.NET.

OnPostAuthenticateRequest(Object, EventArgs)

Controla el PostAuthenticateRequest evento desde 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 elemento de la cookie de sesión especificada.

SetPrincipalFromSessionToken(SessionSecurityToken)

Establece la entidad de seguridad en y HttpContextThread en la entidad de seguridad contenida en el token de sesión especificado.

SignOut()

Firma el usuario actual y genera los eventos asociados.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
TryReadSessionTokenFromCookie(SessionSecurityToken)

Intenta leer una 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 especificado SessionSecurityToken y devuelve sus identidades.

WriteSessionTokenToCookie(SessionSecurityToken)

Escribe el especificado SessionSecurityToken en una cookie de sesión.

Eventos

Nombre Description
SessionSecurityTokenCreated

Se produce cuando se ha creado un token de seguridad de sesión.

SessionSecurityTokenReceived

Se produce cuando se ha leído un token de seguridad de sesión de una cookie.

SignedOut

Se produce después de cerrar la sesión del usuario.

SigningOut

Se produce antes de eliminar la sesión de inicio de sesión.

SignOutError

Se produce cuando se produce un error durante el cierre de sesión.

Se aplica a