Compartilhar via


O protocolo de acesso digest

O protocolo Digest Access especificado por RFC 2617 é implementado pelo SSP (provedor de suporte de segurança) do Microsoft Digest. A implementação consiste em um conjunto de funções de contexto de segurança SSPI (Microsoft Security Support Provider Interface) que os aplicativos cliente/servidor chamam para:

  • Estabeleça um contexto de segurança para troca de mensagens.
  • Obtenha objetos de dados exigidos pelo SSP do Digest, como credenciais e identificadores de contexto.
  • A mensagem de acesso de integridade e mecanismos de confidencialidade.

A autenticação do Digest Access ocorre em transações de solicitação/resposta emparelhadas, com solicitações originadas no cliente e respostas originadas no servidor. Uma autenticação bem-sucedida do Digest Access requer dois pares de solicitação/resposta.

Quando o SSP do Digest é usado para autenticação HTTP, não há nenhuma conexão mantida entre o primeiro e o segundo par de solicitação/resposta. Em outras palavras, o servidor não aguarda a segunda solicitação depois de enviar a primeira resposta.

A ilustração a seguir mostra as etapas executadas no caminho HTTP por um cliente e servidor para concluir uma autenticação usando o SSP do Digest. O mecanismo SASL faz uso da autenticação mútua, portanto, os dados de autenticação são enviados de volta na chamada final do servidor ASC para o cliente que verifica se o cliente está se comunicando com o servidor correto.

digest access protocol

O processo começa com o cliente solicitando um recurso protegido pelo acesso do servidor enviando a Solicitação HTTP 1.

O servidor recebe a Solicitação HTTP 1 e determina que o recurso requer informações de autenticação que não foram incluídas na solicitação. O servidor gera um desafio para o cliente da seguinte maneira:

  1. O servidor obtém suas credenciais chamando a funçãoAcquireCredentialsHandle.
  2. O servidor gera o desafio Digest chamando a funçãoAcceptSecurityContext (Geral).
  3. O servidor envia um cabeçalho WWW-Authenticate como resposta à solicitação do cliente (mostrada como Resposta HTTP 1). O cabeçalho contém o desafio Digest e uma diretiva opaca que contém uma referência a um contexto de segurança parcial estabelecido para o cliente. O cabeçalho é enviado com um código de status 401 que indica que a solicitação do cliente gerou um erro de acesso não autorizado. Para obter mais informações sobre o desafio Digest, consulte Contents of a Digest Challenge and Generating the Digest Challenge.
  4. O cliente recebe a Resposta HTTP 1, extrai o desafio Digest enviado pelo servidor e gera uma resposta de desafio digest da seguinte maneira:
    1. As credenciais do usuário são obtidas chamando a função AcquireCredentialsHandle ou solicitando interativamente ao usuário credenciais.
    2. As informações de desafio e credenciais são passadas para a funçãoInitializeSecurityContext (Geral), que gera a resposta do desafio Digest.
  5. O cliente envia um cabeçalho de autorização que contém a resposta de desafio para o servidor (mostrado como Solicitação HTTP 2). Para obter mais informações sobre a resposta do desafio Digest, consulte Conteúdo de um de Resposta do Desafio Digest e Gerando ode Resposta do Desafio Digest.
  6. O servidor recebe a Solicitação HTTP 2, extrai a resposta de desafio enviada pelo cliente e autentica as informações chamando a função AcceptSecurityContext (Geral). Para obter detalhes sobre o processo de autenticação, consulte Autenticação Inicial usando o Microsoft Digest.
  7. O servidor envia a Resposta HTTP 2 de volta ao cliente como a segunda e última resposta exigida pelo protocolo Digest Access. Se a autenticação for bem-sucedida, essa resposta conterá o recurso solicitado.

conteúdo de uma de resposta do desafio Digest