Compartilhar via


WSFederationAuthenticationModule.OnAuthenticateRequest Método

Definição

Manipula o AuthenticateRequest evento do pipeline de ASP.NET.

protected:
 virtual void OnAuthenticateRequest(System::Object ^ sender, EventArgs ^ args);
protected virtual void OnAuthenticateRequest (object sender, EventArgs args);
abstract member OnAuthenticateRequest : obj * EventArgs -> unit
override this.OnAuthenticateRequest : obj * EventArgs -> unit
Protected Overridable Sub OnAuthenticateRequest (sender As Object, args As EventArgs)

Parâmetros

sender
Object

A fonte para o evento. Isso será um objeto HttpApplication.

args
EventArgs

Os dados do evento.

Comentários

O OnAuthenticateRequest método implementa o pipeline de processamento de solicitação WS-Federation. Ele é adicionado ao HttpApplication.AuthenticateRequest evento no pipeline de ASP.NET pelo InitializeModule método .

O método executa o seguinte:

  1. Chama o CanReadSignInResponse(HttpRequestBase) método para determinar se uma mensagem de resposta de entrada WS-Federation ("wsignin1.0") foi recebida. Se a resposta for uma solicitação de limpo de saída WS-Federation ("wsignoutcleanup1.0"), CanReadSignInResponse(HttpRequestBase) processará a mensagem, encerrará a solicitação e redirecionará o cliente de acordo com os parâmetros de WS-Federation na solicitação. Se a mensagem não for uma resposta de entrada ou uma solicitação de limpo de saída, o módulo retornará apenas; caso contrário, ele executará as etapas a seguir para processar a resposta de entrada.

  2. Chama o GetSecurityToken(HttpRequestBase) método para desserializar um SecurityToken objeto da solicitação.

  3. Aciona o evento SecurityTokenReceived. Você pode cancelar o processamento adicional ou modificar o token de segurança recebido em um manipulador para esse evento. Um manipulador normalmente é usado para modificar as SecurityToken.ValidFrom propriedades ou SecurityToken.ValidTo .

  4. Valida o token de segurança e cria um ClaimsPrincipal objeto com base nas declarações no token de segurança.

  5. Aciona o evento SecurityTokenValidated. Você pode cancelar o processamento adicional ou modificar a entidade de segurança de declarações em um manipulador para esse evento.

  6. Usa o SAM (módulo de autenticação de sessão) configurado para criar um SessionSecurityToken objeto . (O SAM configurado é o SessionAuthenticationModule objeto retornado pela FederatedAuthentication.SessionAuthenticationModule propriedade .) O token de sessão é criado usando a entidade de segurança de declarações retornada na etapa 5. As SessionSecurityToken.ValidFrom propriedades e SessionSecurityToken.ValidTo são definidas usando as ValidFrom propriedades e ValidTo do SecurityToken retornadas na etapa 3 e são validadas em relação à hora atual e ao tempo de vida do token especificado pela DefaultTokenLifetime propriedade ou TokenLifetime do SessionSecurityTokenHandler objeto na coleção de manipuladores de token que está sendo usada pelo WSFAM. O tempo de vida do token no manipulador de token de sessão pode ser especificado na configuração por meio do <elemento sessionTokenRequirement> . Observação: a PersistentSessionLifetime propriedade no manipulador de cookie configurado para o SAM não é usada.

  7. Chama o SetPrincipalAndWriteSessionToken método com o token de sessão para gravar o cookie de sessão. Primeiro SetPrincipalAndWriteSessionToken , o método aciona o SessionSecurityTokenCreated evento. Você pode alterar as propriedades no token de sessão ou alterar se o cookie deve ser persistido em um manipulador para esse evento. Depois que o evento é gerado, o método grava o cookie usando o SAM.

    Observação

    O SessionSecurityTokenHandler conjunto na configuração não é usado para gravar o cookie.

  8. Chama o OnSignedIn método para acionar o SignedIn evento.

  9. Chama o GetReturnUrlFromResponse método para obter a página RP para a qual redirecionar o cliente. Por padrão, esse método lê a URL de retorno do parâmetro wctx na resposta de entrada. Para obter mais informações sobre como o WSFAM armazena a URL de retorno, consulte o CreateSignInRequest método .

Aplica-se a