SessionAuthenticationModule Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Implementa um módulo ASP.NET que processa cookies de sessão em WS-Federation cenários.
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 seguinte mostra como configurar o SAM no pipeline ASP.NET. Muitos outros elementos presentes numa configuração típica são omitidos aqui por 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>
Observações
Quando presente no pipeline de ASP.NET, o SessionAuthenticationModule (SAM) processa cookies de sessão em WS-Federation cenários. Utiliza o manipulador de cookies especificado pela CookieHandler propriedade para ler o cookie bruto da sessão do pedido HTTP e escrevê-lo na resposta HTTP. Utiliza o SessionSecurityTokenHandler que está configurado para uma aplicação desserializar o cookie bruto da sessão em SessionSecurityToken objetos. O token de segurança da sessão contém as reivindicações (Claim) e o principal (ClaimsPrincipal) associados à entidade para a qual o pedido está a ser servido.
O SAM adiciona o seu gestor de eventos OnAuthenticateRequest ao evento HttpApplication.AuthenticateRequest no pipeline de ASP.NET. Este handler interceta pedidos de login e, se existir um cookie de sessão, desserializa-o num token de sessão e define Thread.CurrentPrincipal as propriedades and HttpContext.User para o principal de reivindicações contido no token de sessão. Invoca vários dos outros métodos expostos pelo SAM durante este processo.
O SignOut método pode ser invocado para desligar o utilizador de uma sessão (por exemplo, num ficheiro SignOut.aspx.cs code-behind).
O SAM expõe vários eventos que dão acesso ao seu pipeline de processamento. Os SessionSecurityTokenReceived eventos and SessionSecurityTokenCreated permitem-lhe modificar tokens de sessão que são lidos a partir de cookies ou criados durante o processamento. Normalmente, isto é feito para adicionar, remover ou transformar reivindicações no token ou para ajustar o seu tempo de expiração. Os SigningOuteventos , SignedOut, e SignOutError fornecem ganchos para o processamento de pedidos de desligamento. Para muitos cenários, basta adicionar handlers para estes eventos, muitas vezes ao ficheiro global.asax.cs.
Para cenários mais complicados, podes derivar de SessionAuthenticationModule implementar um SAM personalizado. Para tal, muitos dos métodos que são invocados durante OnAuthenticateRequest e SignOut são expostos para que possa fornecer comportamentos personalizados em fases específicas do ciclo de vida do processamento da sessão.
Pode adicionar o SAM ao pipeline ASP.NET num ficheiro de configuração adicionando-o aos módulos HTTP sob o elemento <system.webServer> para IIS versão 7 e posteriores ou sob o elemento <system.web> para versões anteriores ao IIS 7. O manipulador de cookies usado pelo SAM pode ser configurado com o <elemento cookieHandler> .
Construtores
| Name | Description |
|---|---|
| SessionAuthenticationModule() |
Inicializa uma nova instância da SessionAuthenticationModule classe. |
Propriedades
| Name | Description |
|---|---|
| ContextSessionSecurityToken |
Obtém o ativo SessionSecurityToken para a corrente HttpContext. |
| CookieHandler |
Obtém o handler de cookies que é usado para ler, escrever e eliminar cookies de sessão. |
| FederationConfiguration |
Recebe ou define o FederationConfiguration objeto que está em efeito para o módulo atual. (Herdado de HttpModuleBase) |
| IsReferenceMode |
Recebe ou define um valor que especifica se a informação da sessão (valores de reivindicação, etc.) deve ser armazenada no cookie da sessão ou se o conteúdo da sessão deve ser armazenado do lado do servidor, usando o cookie para armazenar apenas uma referência. |
Métodos
| Name | Description |
|---|---|
| AuthenticateSessionSecurityToken(SessionSecurityToken, Boolean) |
Autentica o pedido recebido validando o token de sessão recebido. Após validação bem-sucedida, atualiza o contexto HTTP atual e o principal da 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 a SessionSecurityToken partir dos parâmetros especificados usando o handler de token de sessão configurado. |
| DeleteSessionTokenCookie() |
Apaga o cookie da sessão e remove-o da cache. |
| Dispose() |
Liberta os recursos (exceto 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 função de hash predefinida. (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 prepara-o para lidar com eventos do objeto de aplicação ASP.NET do módulo. |
| InitializePropertiesFromConfiguration() |
Inicializa as propriedades do módulo com base nas definições no ficheiro de configuração. |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| OnAuthenticateRequest(Object, EventArgs) |
Gere o evento AuthenticateRequest do pipeline de ASP.NET. |
| OnPostAuthenticateRequest(Object, EventArgs) |
Gere o evento PostAuthenticateRequest do pipeline de ASP.NET. |
| OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Eleva o SessionSecurityTokenCreated evento. |
| OnSessionSecurityTokenReceived(SessionSecurityTokenReceivedEventArgs) |
Eleva o SessionSecurityTokenReceived evento. |
| OnSignedOut(EventArgs) |
Eleva o SignedOut evento. |
| OnSigningOut(SigningOutEventArgs) |
Eleva o SigningOut evento. |
| OnSignOutError(ErrorEventArgs) |
Eleva o SignOutError evento. |
| ReadSessionTokenFromCookie(Byte[]) |
Lê a SessionSecurityToken do cookie de sessão especificado. |
| SetPrincipalFromSessionToken(SessionSecurityToken) |
Define o principal em e HttpContextThread para o principal contido no token de sessão especificado. |
| SignOut() |
Desliga o utilizador atual e levanta os eventos associados. |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
| TryReadSessionTokenFromCookie(SessionSecurityToken) |
Tenta ler a SessionSecurityToken de um cookie de sessão e devolve um valor que indica se o cookie de sessão foi lido com sucesso. |
| ValidateSessionToken(SessionSecurityToken) |
Valida o especificado SessionSecurityToken e devolve as suas identidades. |
| WriteSessionTokenToCookie(SessionSecurityToken) |
Escreve o especificado SessionSecurityToken num cookie de sessão. |
evento
| Name | Description |
|---|---|
| SessionSecurityTokenCreated |
Ocorre quando um token de segurança de sessão é criado. |
| SessionSecurityTokenReceived |
Ocorre quando um token de segurança de sessão foi lido de um cookie. |
| SignedOut |
Acontece depois de o utilizador estar desconectado. |
| SigningOut |
Acontece antes de eliminar a sessão de login. |
| SignOutError |
Ocorre quando há um erro durante a saída de sessão. |