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 ASP.NET que processa cookies de sessão em cenários 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
- 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 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 estiver presente no pipeline ASP.NET, o SessionAuthenticationModule SAM (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 que está configurado para um aplicativo para desserializar o cookie de sessão bruto 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 ASP.NET. Esse manipulador intercepta solicitações de entrada e, se houver um cookie de sessão, desserializa-o em um token de sessão e define as propriedades e HttpContext.User propriedades Thread.CurrentPrincipal 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 desconectar o usuário de uma sessão (por exemplo, em um SignOut.aspx.cs arquivo code-behind).
O SAM expõe vários eventos que fornecem acesso ao pipeline de processamento. Os SessionSecurityTokenReceived eventos e os eventos 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 e SignOutError os SignedOuteventos fornecem ganchos no 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 para SessionAuthenticationModule implementar um SAM personalizado. Para esse fim, muitos dos métodos que são invocados durante OnAuthenticateRequest e SignOut são expostos para que você possa fornecer comportamento personalizado em estágios específicos do ciclo de vida de processamento de sessão.
Você pode adicionar o SAM ao pipeline ASP.NET em um arquivo de configuração adicionando-o aos módulos HTTP no elemento para iIS <system.webServer> versão 7 e posterior ou 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
| Nome | Description |
|---|---|
| SessionAuthenticationModule() |
Inicializa uma nova instância da classe SessionAuthenticationModule. |
Propriedades
| Nome | Description |
|---|---|
| ContextSessionSecurityToken |
Obtém o ativo SessionSecurityToken para o atual HttpContext. |
| CookieHandler |
Obtém o manipulador de cookie usado para ler, gravar e excluir cookies de sessão. |
| FederationConfiguration |
Obtém ou define o FederationConfiguration objeto 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 no 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
| Nome | Description |
|---|---|
| AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Autentica a solicitação de entrada validando o token de sessão de entrada. 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 cookie especificada. |
| CreateSessionSecurityToken(ClaimsPrincipal, String, DateTime, DateTime, Boolean) |
Cria um SessionSecurityToken dos parâmetros especificados usando o manipulador de token de sessão configurado. |
| DeleteSessionTokenCookie() |
Exclui o cookie de sessão e o remove do cache. |
| Dispose() |
Libera os recursos (exceto a memória) usados pela instância atual da HttpModuleBase classe. (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 em definições no arquivo de configuração. |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (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 na HttpContext entidade de Thread segurança que está contida no token de sessão especificado. |
| SignOut() |
Desconscreve 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 cookie SessionSecurityToken de sessão e retorna um valor que indica se o cookie de sessão foi lido com êxito. |
| ValidateSessionToken(SessionSecurityToken) |
Valida o especificado SessionSecurityToken e retorna suas identidades. |
| WriteSessionTokenToCookie(SessionSecurityToken) |
Grava o especificado SessionSecurityToken em um cookie de sessão. |
Eventos
| Nome | Description |
|---|---|
| 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 a saída do usuário. |
| SigningOut |
Ocorre antes de excluir a sessão de entrada. |
| SignOutError |
Ocorre quando há um erro durante a saída. |