O protocolo de acesso digest

O protocolo Digest Access especificado pelo 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 ( Interface do Provedor de Suporte de Segurança ) da Microsoft para as quais os aplicativos cliente/servidor chamam:

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

Quando o Digest SSP é 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 Digest SSP. O mecanismo SASL usa a 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.

protocolo de acesso digest

O processo começa com o cliente solicitando um recurso protegido por 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ção AcquireCredentialsHandle .
  2. O servidor gera o desafio Digest chamando a função AcceptSecurityContext (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 401 status 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 e 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 credenciais ao usuário.
    2. As informações de desafio e credenciais são passadas para a função InitializeSecurityContext (Geral), que gera a resposta do desafio Digest.
  5. O cliente envia um cabeçalho authorization 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 Contents of a Digest Challenge Response e Generating the Digest Challenge Response.
  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 resposta de desafio digest