Compartilhar via


SessionAuthenticationModule Classe

Definição

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
SessionAuthenticationModule

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.

Aplica-se a