Partilhar via


WSFederationAuthenticationModule Classe

Definição

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
WSFederationAuthenticationModule

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 true, que os URIs especificados para Issuer e Realm estejam em conformidade com HTTPS.

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.

Aplica-se a