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:
- Estabeleça um contexto de segurança para troca de mensagens.
- Obtenha objetos de dados exigidos pelo Digest SSP, como credenciais e identificadores de contexto.
- Acessar mecanismos de confidencialidade e integridade da mensagem.
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.
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:
- O servidor obtém suas credenciais chamando a função AcquireCredentialsHandle .
- O servidor gera o desafio Digest chamando a função AcceptSecurityContext (Geral).
- 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.
- O cliente recebe a Resposta HTTP 1, extrai o desafio Digest enviado pelo servidor e gera uma resposta de desafio digest da seguinte maneira:
- As credenciais do usuário são obtidas chamando a função AcquireCredentialsHandle ou solicitando interativamente credenciais ao usuário.
- As informações de desafio e credenciais são passadas para a função InitializeSecurityContext (Geral), que gera a resposta do desafio Digest.
- 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.
- 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.
- 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.
Tópicos relacionados