WSFederationAuthenticationModule 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.
O WSFederationAuthenticationModule é um módulo HTTP usado para proteger um aplicativo ASP.NET impondo configurações de autenticação federada em solicitações de entrada. O WSFederationAuthenticationModule é o módulo principal que o WIF oferece pronto para uso para lidar com acesso de identidade baseada em declarações em aplicativos do ASP.NET.
O WSFederationAuthenticationModule gera vários eventos, permitindo aos desenvolvedores do ASP.NET alterar o comportamento padrão e controlar os detalhes de como a autenticação e processamento de solicitações ocorrerá. A funcionalidade WSFederationAuthenticationModule é dividida em métodos específicos de tarefa.
public ref class WSFederationAuthenticationModule : System::IdentityModel::Services::HttpModuleBase
public class WSFederationAuthenticationModule : System.IdentityModel.Services.HttpModuleBase
type WSFederationAuthenticationModule = class
inherit HttpModuleBase
Public Class WSFederationAuthenticationModule
Inherits HttpModuleBase
- Herança
Exemplos
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
//SUBSCRIBE TO WSFAM EVENTS
FederatedAuthentication.WSFederationAuthenticationModule.AuthorizationFailed += new EventHandler<AuthorizationFailedEventArgs>(WSFederationAuthenticationModule_AuthorizationFailed);
FederatedAuthentication.WSFederationAuthenticationModule.RedirectingToIdentityProvider += new EventHandler<RedirectingToIdentityProviderEventArgs>(WSFederationAuthenticationModule_RedirectingToIdentityProvider);
FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenReceived += new EventHandler<SecurityTokenReceivedEventArgs>(WSFederationAuthenticationModule_SecurityTokenReceived);
FederatedAuthentication.WSFederationAuthenticationModule.SecurityTokenValidated += new EventHandler<SecurityTokenValidatedEventArgs>(WSFederationAuthenticationModule_SecurityTokenValidated);
FederatedAuthentication.WSFederationAuthenticationModule.SessionSecurityTokenCreated += new EventHandler<SessionSecurityTokenCreatedEventArgs>(WSFederationAuthenticationModule_SessionSecurityTokenCreated);
FederatedAuthentication.WSFederationAuthenticationModule.SignedIn += new EventHandler(WSFederationAuthenticationModule_SignedIn);
}
void WSFederationAuthenticationModule_SignedIn(object sender, EventArgs e)
{
//Anything that's needed right after succesful session and before hitting the application code goes here
System.Diagnostics.Trace.WriteLine("Handling SignIn event");
}
void WSFederationAuthenticationModule_SessionSecurityTokenCreated(object sender, SessionSecurityTokenCreatedEventArgs e)
{
//Manipulate session token here, for example, changing its expiration value
System.Diagnostics.Trace.WriteLine("Handling SessionSecurityTokenCreated event");
System.Diagnostics.Trace.WriteLine("Key valid from: " + e.SessionToken.KeyEffectiveTime);
System.Diagnostics.Trace.WriteLine("Key expires on: " + e.SessionToken.KeyExpirationTime);
}
void WSFederationAuthenticationModule_SecurityTokenValidated(object sender, SecurityTokenValidatedEventArgs e)
{
//All vlidation SecurityTokenHandler checks are successful
System.Diagnostics.Trace.WriteLine("Handling SecurityTokenValidated event");
}
void WSFederationAuthenticationModule_SecurityTokenReceived(object sender, SecurityTokenReceivedEventArgs e)
{
//Augment token validation with your cusotm validation checks without invalidating the token.
System.Diagnostics.Trace.WriteLine("Handling SecurityTokenReceived event");
}
void WSFederationAuthenticationModule_AuthorizationFailed(object sender, AuthorizationFailedEventArgs e)
{
//Use this event to report more details regarding the ahorization failure
System.Diagnostics.Trace.WriteLine("Handling AuthorizationFailed event");
}
void WSFederationAuthenticationModule_RedirectingToIdentityProvider(object sender, RedirectingToIdentityProviderEventArgs e)
{
//Use this event to programmatically modify the sign-in message to the STS.
System.Diagnostics.Trace.WriteLine("Handling RedirectingToIdentityProvider event");
}
Comentários
A WSFederationAuthenticationModule classe implementa um módulo HTTP conhecido como WSFAM (Módulo de Autenticação do WS-Federation). O WSFAM é implementado pronto para uso pelo WINDOWS Identity Foundation (WIF). O WSFAM é adicionado ao pipeline de ASP.NET fazendo uma entrada no arquivo web.config. Ele deriva de HttpModuleBase, que implementa IHttpModule. Ele se registra com o runtime do ASP.NET para escutar os EndRequest eventos e AuthenticateRequest . Ouvindo o EndRequest evento, permite que o WSFAM redirecione clientes para um STS (serviço de token de segurança) para obter um token de segurança quando a autorização falhar em um recurso solicitado. Ouvir o AuthenticateRequest evento permite que o WSFAM monitore solicitações HTTP para uma resposta do STS que contém o token solicitado. Quando esse token está presente e válido, ele cria uma instância do ClaimsPrincipal para o usuário autenticado usando as declarações presentes no token.
Ao usar o WSFAM, o gerenciamento de sessão é fornecido por um SAM (módulo de autenticação de sessão), que é uma instância da SessionAuthenticationModule classe ou uma classe derivada dela. O SAM também é adicionado ao pipeline ASP.NET no arquivo de configuração. O SAM monitora solicitações de cookies de autenticação (sessão). Quando esses cookies estão presentes e são válidos, o módulo extrai o ClaimsPrincipal para o usuário autenticado do SessionSecurityToken e define a HttpContext.User propriedade e as propriedades da entidade de segurança Thread.CurrentPrincipal do thread.
O WSFAM fornece:
A capacidade de um aplicativo ASP.NET de terceirizar a autenticação para um STS (serviço de token de segurança) usando o protocolo WS-Federation. A identidade pode ser federada em um ou mais realms de identidade e envolver vários STSs.
Identidade baseada em declarações para aplicativos ASP.NET. Durante a autenticação, o WSFAM cria uma entidade de segurança com base nas declarações no token de segurança enviado pelo STS e define essa entidade de segurança de declarações como a entidade de segurança do thread. Em seguida, você pode usar essa entidade de segurança para tomar mais decisões de autorização, apresentação e lógica sobre o usuário que ela representa em seu código.
O WSFAM expõe várias propriedades que fornecem parâmetros de mensagem padrão a serem usados em WS-Federation solicitações de entrada e saída. Essas propriedades normalmente são inicializadas do <elemento wsFederation> em um arquivo de configuração. As propriedades mais importantes são:
A Issuer propriedade , que especifica o endereço do STS (serviço de token de segurança) para o qual enviar WS-Federation solicitações de entrada e saída.
A Realm propriedade , que especifica o parâmetro wtrealm a ser usado em WS-Federation solicitações de entrada. O parâmetro wtrealm identifica o realm de segurança do aplicativo RP (terceira parte confiável) para o STS.
Os parâmetros de mensagem de entrada também podem ser alterados por solicitação fornecendo um delegado manipulador de eventos para o RedirectingToIdentityProvider evento.
Duas propriedades controlam o comportamento do módulo. Essas duas propriedades também normalmente são inicializadas do <wsFederation>
elemento na configuração.
A PassiveRedirectEnabled propriedade especifica se o módulo deve executar redirecionamentos passivos para o STS para autenticação.
A PersistentCookiesOnPassiveRedirects propriedade especifica se as sessões devem ser persistentes. Se essa propriedade for definida como true, o SAM será usado para gravar um cookie de sessão no cliente. Em solicitações subsequentes do cliente, o SAM fornece autenticação usando o token persistido no cookie de sessão.
O WSFAM gera vários eventos durante a entrada e saída, que permitem que ASP.NET desenvolvedores alterem o comportamento padrão do módulo e controlem os detalhes de como o processamento de autenticação e declarações ocorre.
Os seguintes eventos são gerados antes que a solicitação de entrada WS-Federation seja enviada ao STS:
AuthorizationFailed: gerado quando o redirecionamento passivo está habilitado e a autorização falha em um recurso solicitado.
RedirectingToIdentityProvider: gerado pouco antes de o WSFAM enviar a solicitação de entrada WS-Federation para o STS. Você pode usar esse evento para alterar os parâmetros na solicitação de entrada.
Os seguintes eventos são gerados quando uma resposta de entrada (token de segurança emitido) é recebida do STS:
SecurityTokenReceived: gerado logo após o token de segurança enviado pelo STS ser lido da resposta.
SecurityTokenValidated: gerado logo após a validação do token. Você pode usar esse evento para filtrar, transformar ou adicionar declarações à entidade de segurança de declarações (ClaimsPrincipal) criada a partir do token de segurança.
SessionSecurityTokenCreated: gerado pouco antes do token de sessão (SessionSecurityToken) criado a partir da entidade de segurança de declarações ser usado para definir a entidade de thread e o usuário atual e é gravado no cookie de sessão. Oferece a oportunidade de modificar o token de sessão ou habilitar ou desabilitar a gravação do cookie de sessão.
SignedIn: gerado no final da autenticação logo após a entidade de thread e o usuário atual terem sido definidos.
SignInError: gerado se ocorrer uma exceção durante a entrada. Você pode cancelar a solicitação e impedir que a exceção seja retornada ao chamador.
Ao sair de uma sessão ou ao processar um WS-Federation solicitação de limpo de saída (wsignoutcleanup1.0), os seguintes eventos são gerados:
SigningOut: gerado pouco antes da sessão ser excluída para permitir que você execute qualquer limpeza que possa depender da sessão ou cancelar a saída.
SignedOut: gerado logo após a sessão ter sido excluída.
SignOutError: gerado se ocorrer uma exceção durante a saída. Você pode cancelar a saída e impedir que a exceção seja retornada ao chamador.
Observação
Os eventos de saída não são gerados ao sair no STS chamando o FederatedSignOut método .
Há duas maneiras de entrar em um STS usando o WSFAM. A primeira é habilitando redirecionamentos passivos por meio da PassiveRedirectEnabled propriedade . Nesse caso, quando a autorização falha em um recurso solicitado, em vez de retornar uma 401:Access Denied
resposta ao cliente, o WSFAM cria um WS-Federation mensagem de solicitação de entrada de suas propriedades e redireciona o cliente para o STS para recuperar um token de segurança. A segunda maneira é redirecionar explicitamente o cliente para o STS chamando o SignIn método de uma página da Web ou controle personalizado em seu aplicativo. O SignIn método também usa as propriedades do WSFAM para construir a solicitação de entrada.
Qualquer um dos métodos sobrecarregados SignOut pode ser usado para sair da sessão. Isso exclui o cookie de sessão no cliente. Ele não envia uma mensagem de saída WS-Federation ("wsignout1.0") para o STS. Para sair no STS, você deve usar o FederatedSignOut método .
O WSFAM manipula WS-Federation solicitações de limpo de saída ("wsignoutcleanup1.0"), excluindo sua sessão com o cliente. Se o parâmetro wreply na mensagem de limpo de saída não estiver definido, o WSFAM retornará uma imagem de uma marca de marcar verde para o STS que enviou a mensagem. Esse recurso pode ser usado por um STS como uma confirmação de que o RP concluiu sua saída.
O WSFAM expõe sua funcionalidade , por exemplo, seu pipeline de processamento de solicitação - por meio de vários métodos específicos da tarefa. Você pode substituir esses métodos em classes derivadas para alterar o comportamento do WSFAM.
Para ser usado, o módulo deve ser adicionado ao pipeline como no seguinte XML:
<configuration>
<system.webServer>
<modules>
<add name="WsFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</modules>
</system.webServer>
</configuration>
Depois de configurado, o WSFederationAuthenticationModule gera eventos em vários estágios do processamento de uma solicitação HTTP. ASP.NET desenvolvedores podem lidar com esses eventos no arquivo global.asax.
Construtores
WSFederationAuthenticationModule() |
Chamado realizado por construtores em classes derivadas para inicializar a classe WSFederationAuthenticationModule. |
Propriedades
AuthenticationType |
Obtém ou define o valor do parâmetro wauth a ser usado em solicitações de conexão da Web Services Federation ("wsignin1.0"). |
FederationConfiguration |
Obtém ou define o objeto FederationConfiguration que está em vigor para o módulo atual. (Herdado de HttpModuleBase) |
Freshness |
Obtém ou define o valor do parâmetro wfresh a ser usado em solicitações de conexão da Web Services Federation ("wsignin1.0"). |
HomeRealm |
Obtém ou define o valor do parâmetro whr a ser usado em solicitações de conexão da Web Services Federation ("wsignin1.0"). |
Issuer |
Obtém ou define um URI que identifica o emissor pretendido do token de segurança. |
PassiveRedirectEnabled |
Obtém ou define um valor que especifica se o módulo está habilitado para iniciar os redirecionamentos do protocolo Web Services Federation. |
PersistentCookiesOnPassiveRedirects |
Obtém ou define um valor que especifica se um cookie de sessão persistente é emitido em uma autenticação bem-sucedida. |
Policy |
Obtém ou define o valor do parâmetro wp a ser usado em solicitações de conexão da Web Services Federation ("wsignin1.0"). |
Realm |
Obtém ou define o valor do parâmetro wtrealm a ser usado para solicitações de conexão da Web Services Federation ("wsignin1.0"). |
Reply |
Obtém ou define o valor do parâmetro wreply a ser usado em solicitações de conexão da Web Services Federation ("wsignin1.0"). |
Request |
Obtém ou define o valor do parâmetro wreq a ser usado em solicitações de conexão da Web Services Federation ("wsignin1.0"). |
RequestPtr |
Obtém ou define o valor do parâmetro wreqptr a ser usado em solicitações de conexão da Web Services Federation ("wsignin1.0"). |
RequireHttps |
Obtém ou define um valor que especifica se a comunicação com o STS (serviço de token de segurança) deve usar o protocolo HTTPS. |
Resource |
Obtém ou define o valor do parâmetro wres a ser usado nas solicitações de credenciais da Web Services Federation ("wsignin1.0"). |
SignInContext |
Obtém ou define um valor de contexto específico de aplicativo a ser incluído no parâmetro wctx em solicitações de conexão da Web Services Federation. |
SignInQueryString |
Obtém ou define uma cadeia de caracteres de consulta que contém quaisquer parâmetros adicionais a serem enviados nas solicitações de conexão da Web Services Federation ("wsignin1.0"). |
SignOutQueryString |
Obtém ou define uma cadeia de caracteres de consulta que contém todos parâmetros adicionais a serem enviados nas solicitações de saída da Web Services Federation ("wsignout1.0"). |
SignOutReply |
Obtém ou define o valor do parâmetro wreply a ser usado durante solicitações de saída da Web Services Federation ("wsignout1.0"). |
XmlDictionaryReaderQuotas |
Obtém ou define o objeto XmlDictionaryReaderQuotas a ser usado durante a desserialização de mensagens de resposta de conexão da Web Services Federation a fim de obter o token emitido pelo STS (serviço de token de segurança). |
Métodos
CanReadSignInResponse(HttpRequestBase) |
Retorna um valor que indica se a solicitação HTTP especificada é uma mensagem de resposta de conexão da Web Services Federation. Se a mensagem for uma mensagem de limpeza de saída da Web Services Federation ("wsignoutcleanup1.0"), este método processará a solicitação. |
CanReadSignInResponse(HttpRequestBase, Boolean) |
Retorna um valor que indica se a solicitação HTTP especificada é uma mensagem de resposta de conexão da Web Services Federation. Se a mensagem for uma mensagem de limpeza de saída da Web Services Federation ("wsignoutcleanup1.0"), este método processará a solicitação. |
CreateSignInRequest(String, String, Boolean) |
Cria uma entrada do Web Services Federation na mensagem de solicitação usando os parâmetros do Web Services Federation configurados no módulo. |
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) |
FederatedSignOut(Uri, Uri) |
Sinaliza no STS (serviço de token de segurança) especificado usando o protocolo Web Services Federation. |
GetFederationPassiveSignOutUrl(String, String, String) |
Retorna uma URL que representa uma solicitação de saída da Web Services Federation endereçada para o emissor especificado e que contém o parâmetro wreply especificado e os parâmetros adicionais especificados. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetReferencedResult(String) |
Obtém o resultado da emissão (normalmente o token emitido) na URL especificada. Resolve a URL especificada no parâmetro wresultptr em uma mensagem de resposta de conexão. |
GetReturnUrlFromResponse(HttpRequestBase) |
Extrai a URL da página que foi originalmente solicitada pela resposta de conexão. |
GetSecurityToken(HttpRequestBase) |
Lê um token de segurança da solicitação HTTP especificada. |
GetSecurityToken(SignInResponseMessage) |
Lê um token de segurança da mensagem de resposta de conexão da Web Services Federation especificada. |
GetSessionTokenContext() |
Obtém uma cadeia de caracteres que deve ser persistida com o cookie de sessão na propriedade Context. |
GetSignInResponseMessage(HttpRequestBase) |
Lê um objeto SignInResponseMessage do POST de formulário representado pela solicitação HTTP especificada. |
GetSignOutRedirectUrl(SignOutCleanupRequestMessage) |
Determina a URL à qual redirecionar ao processar uma solicitação de limpeza de saída da Web Services Federation (wsignoutcleanup1.0) que contém um parâmetro wreply. |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
GetXmlTokenFromMessage(SignInResponseMessage) |
Extrai o token emitido da mensagem de resposta de conexão da Web Services Federation especificada. |
GetXmlTokenFromMessage(SignInResponseMessage, WSFederationSerializer) |
Extrai o token emitido da mensagem de resposta de conexão da Web Services Federation especificada usando o serializador da Web Services Federation especificado. |
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 de módulo com base na configuração especificada pela propriedade FederationConfiguration do módulo. |
IsSignInResponse(HttpRequestBase) |
Obtém um valor que indica se a solicitação especificada é uma mensagem de resposta de conexão da Web Services Federation. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnAuthenticateRequest(Object, EventArgs) |
Manipula o AuthenticateRequest evento do pipeline de ASP.NET. |
OnAuthorizationFailed(AuthorizationFailedEventArgs) |
Aciona o evento AuthorizationFailed. |
OnEndRequest(Object, EventArgs) |
Manipula o EndRequest evento do pipeline de ASP.NET. |
OnPostAuthenticateRequest(Object, EventArgs) |
Manipula o PostAuthenticateRequest evento do pipeline de ASP.NET. |
OnRedirectingToIdentityProvider(RedirectingToIdentityProviderEventArgs) |
Aciona o evento RedirectingToIdentityProvider. |
OnSessionSecurityTokenCreated(SessionSecurityTokenCreatedEventArgs) |
Aciona o evento SessionSecurityTokenCreated. |
OnSignedIn(EventArgs) |
Aciona o evento SignedIn. |
OnSignedOut(EventArgs) |
Aciona o evento SignedOut. |
OnSignInError(ErrorEventArgs) |
Aciona o evento SignInError. |
OnSigningOut(SigningOutEventArgs) |
Aciona o evento SigningOut. |
OnSignOutError(ErrorEventArgs) |
Aciona o evento SignOutError. |
RedirectToIdentityProvider(String, String, Boolean) |
Redireciona o usuário para o STS (serviço de token de segurança) especificado pela propriedade Issuer para obter o token de segurança usando o protocolo Web Services Federation. |
SetPrincipalAndWriteSessionToken(SessionSecurityToken, Boolean) |
Define a entidade de segurança do thread e, opcionalmente, grava o cookie de sessão. |
SignIn(String) |
Executa o logon em um STS (Serviço de Token de Segurança) por meio do protocolo do Web Services Federation. |
SignOut() |
Sai da sessão atual e solicita um redirecionamento de volta para a URL especificada na solicitação HTTP atual. |
SignOut(Boolean) |
Sai da sessão atual e gera os eventos apropriados. |
SignOut(String) |
Sai da sessão atual e solicita um redirecionamento de volta para a URL especificada. |
SignOut(String, Boolean) |
Sai da sessão atual e solicita um redirecionamento de volta para a URL especificada. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
VerifyProperties() |
Verifica se as propriedades Issuer e Realm são não vazias e, que, se a propriedade RequireHttps for |
Eventos
AuthorizationFailed |
Ocorre quando o módulo está determinando se ele deve redirecionar o usuário ao emissor configurado a ser autenticado. |
RedirectingToIdentityProvider |
Ocorrerá quando o módulo for redirecionar o usuário ao provedor de identidade. |
SecurityTokenReceived |
Ocorre quando um token de segurança foi recebido de um STS (serviço de token de segurança). |
SecurityTokenValidated |
Ocorre depois que um token de segurança recebido do STS (serviço de token de segurança) tiver sido validado, mas antes que o token de segurança de sessão seja criado. |
SessionSecurityTokenCreated |
Ocorre quando um token de segurança de sessão foi criado com base no token de segurança recebido de um STS (serviço de token de segurança). |
SignedIn |
Ocorre depois que o usuário está conectado. |
SignedOut |
Ocorre logo após a exclusão da sessão durante a saída. |
SignInError |
Acionado quando ocorre um erro durante a conexão. |
SigningOut |
Ocorre antes da exclusão da sessão durante a saída. |
SignOutError |
Acionado quando ocorre um erro durante a saída. |