SessionAuthenticationModule Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Implementa um módulo do ASP.NET que processa os cookies de sessão em cenários de Web Services 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
- Herança
Exemplos
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;
}
O XML a seguir mostra como configurar o SAM no pipeline de ASP.NET. Muitos outros elementos presentes em uma configuração típica são omitidos aqui por motivos de brevidade.
<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>
Comentários
Quando presente no pipeline de ASP.NET, o SessionAuthenticationModule (SAM) processa cookies de sessão em cenários de WS-Federation. Ele usa o manipulador de cookie especificado pela CookieHandler propriedade para ler o cookie de sessão bruto da solicitação HTTP e gravá-lo na resposta HTTP. Ele usa o SessionSecurityTokenHandler configurado para um aplicativo para desserializar o cookie de sessão bruta em SessionSecurityToken objetos. O token de segurança de sessão contém as declarações (Claim) e a entidade (ClaimsPrincipal) associadas à entidade para a qual a solicitação está sendo atendida.
O SAM adiciona seu OnAuthenticateRequest manipulador de eventos ao HttpApplication.AuthenticateRequest evento no pipeline de ASP.NET. Esse manipulador intercepta as solicitações de entrada e, se houver um cookie de sessão, desserializa-o em um token de sessão e define as Thread.CurrentPrincipal propriedades e HttpContext.User para a entidade de segurança de declarações contida no token de sessão. Ele invoca vários dos outros métodos expostos pelo SAM durante esse processo.
O SignOut método pode ser invocado para tirar o usuário de uma sessão (por exemplo, em um arquivo code-behind SignOut.aspx.cs).
O SAM expõe vários eventos que fornecem acesso ao pipeline de processamento. Os SessionSecurityTokenReceived eventos e SessionSecurityTokenCreated permitem modificar tokens de sessão que são lidos de cookies ou criados durante o processamento. Normalmente, isso é feito para adicionar, remover ou transformar declarações no token ou ajustar seu tempo de expiração. Os SigningOuteventos , SignedOute SignOutError fornecem ganchos para o processamento de solicitações de saída. Para muitos cenários, simplesmente adicionar manipuladores para esses eventos, muitas vezes ao arquivo global.asax.cs, será suficiente.
Para cenários mais complicados, você pode derivar de SessionAuthenticationModule para implementar um SAM personalizado. Para isso, muitos dos métodos que são invocados durante OnAuthenticateRequest e SignOut são expostos para que você possa fornecer um comportamento personalizado em estágios específicos do ciclo de vida de processamento de sessão.
Você pode adicionar o SAM ao pipeline de ASP.NET em um arquivo de configuração adicionando-o aos módulos HTTP no <system.webServer>
elemento do IIS versão 7 e posterior ou no <system.web>
elemento para versões anteriores ao IIS 7. O manipulador de cookie usado pelo SAM pode ser configurado com o <elemento cookieHandler> .
Construtores
SessionAuthenticationModule() |
Inicializa uma nova instância da classe SessionAuthenticationModule. |
Propriedades
ContextSessionSecurityToken |
Obtém o SessionSecurityToken ativo para o HttpContext atual. |
CookieHandler |
Obtém o manipulador de cookie usado para ler, gravar e excluir cookies de sessão. |
FederationConfiguration |
Obtém ou define o objeto FederationConfiguration que está em vigor para o módulo atual. (Herdado de HttpModuleBase) |
IsReferenceMode |
Obtém ou define um valor que especifica se as informações da sessão (valores de declaração, etc.) devem ser armazenadas em um cookie de sessão ou se o conteúdo da sessão deve ser armazenado no lado do servidor, usando o cookie para armazenar apenas uma referência. |
Métodos
AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Autentica a solicitação de entrada validando o token da sessão. Após a validação bem-sucedida, ele atualiza o contexto HTTP atual e a entidade de thread com o especificado SessionSecurityToken. |
ContainsSessionTokenCookie(HttpCookieCollection) |
Determina se um cookie de sessão está na coleção de cookies especificada. |
CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean) |
Cria um SessionSecurityToken dos parâmetros especificados usando o manipulador do token de sessão configurado. |
DeleteSessionTokenCookie() |
Exclui o cookie da sessão e o remove do cache. |
Dispose() |
Libera os recursos (exceto memória) usados pela instância atual da classe HttpModuleBase. (Herdado de HttpModuleBase) |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
Init(HttpApplication) |
Inicializa o módulo HTTP. (Herdado de HttpModuleBase) |
InitializeModule(HttpApplication) |
Inicializa o módulo e o prepara para manipular eventos do objeto de aplicativo ASP.NET do módulo. |
InitializePropertiesFromConfiguration() |
Inicializa as propriedades do módulo com base nas definições no arquivo de configuração. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnAuthenticateRequest(Object, EventArgs) |
Manipula o AuthenticateRequest evento do pipeline de ASP.NET. |
OnPostAuthenticateRequest(Object, EventArgs) |
Manipula o PostAuthenticateRequest evento do pipeline de ASP.NET. |
OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Aciona o evento SessionSecurityTokenCreated. |
OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs) |
Aciona o evento SessionSecurityTokenReceived. |
OnSignedOut(EventArgs) |
Aciona o evento SignedOut. |
OnSigningOut(SigningOutEventArgs) |
Aciona o evento SigningOut. |
OnSignOutError(ErrorEventArgs) |
Aciona o evento SignOutError. |
ReadSessionTokenFromCookie(Byte[]) |
Lê um SessionSecurityToken do cookie de sessão especificado. |
SetPrincipalFromSessionToken(SessionSecurityToken) |
Define a entidade de segurança no HttpContext e Thread como a entidade de segurança contida no token de sessão especificado. |
SignOut() |
Desconecta o usuário atual e gera os eventos associados. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
TryReadSessionTokenFromCookie(SessionSecurityToken) |
Tenta ler um SessionSecurityToken de um cookie de sessão e retorna um valor que indica se o cookie de sessão foi lido com êxito. |
ValidateSessionToken(SessionSecurityToken) |
Valida o SessionSecurityToken especificado e retorna suas identidades. |
WriteSessionTokenToCookie(SessionSecurityToken) |
Grava o SessionSecurityToken especificado em um cookie de sessão. |
Eventos
SessionSecurityTokenCreated |
Ocorre quando um token de segurança de sessão foi criado. |
SessionSecurityTokenReceived |
Ocorre quando um token de segurança de sessão foi lido de um cookie. |
SignedOut |
Ocorre após o usuário ser desconectado. |
SigningOut |
Ocorre antes de excluir a sessão de entrada. |
SignOutError |
Ocorre quando há um erro durante a saída. |