Qual é a diferença entre autenticação Digest e autenticação básica ?
Qual é a diferença entre autenticação Digest e autenticação básica ?
Respostas:
A Autenticação Digest comunica credenciais de forma criptografada aplicando uma função de hash para: o nome de usuário, a senha, um valor fornecido pelo servidor, o método HTTP e o URI solicitado.
Enquanto a autenticação básica usa codificação base64 não criptografada .
Portanto, a autenticação básica geralmente só deve ser usada onde a segurança da camada de transporte é fornecida, como https.
Veja RFC-2617 para todos os detalhes sangrentos.
Autenticação de acesso básico HTTP
A autenticação básica usa a codificação base64 (não criptografia) para gerar nossa cadeia criptográfica que contém as informações de nome de usuário e senha. O HTTP Basic não precisa ser implementado sobre SSL, mas se você não o fizer, não será seguro. Então, eu nem vou aceitar a ideia de usá-lo sem.
Prós:
Contras:
Em resumo - se você tem controle dos clientes ou pode garantir que eles usem SSL, o HTTP Basic é uma boa opção. A lentidão do SSL pode ser cancelada pela velocidade de fazer apenas uma solicitação
Sintaxe da autenticação básica
Value = username:password
Encoded Value = base64(Value)
Authorization Value = Basic <Encoded Value>
//at last Authorization key/value map added to http header as follows
Authorization: <Authorization Value>
Autenticação HTTP Digest Access A Autenticação
Digest Access usa as metodologias de hash (isto é, digerir significa cortado em pedaços pequenos) para gerar o resultado criptográfico. A autenticação de acesso HTTP Digest é uma forma mais complexa de autenticação que funciona da seguinte maneira:
Prós:
Contras:
Em suma , o HTTP Digest é inerentemente vulnerável a pelo menos dois ataques, enquanto um servidor que usa criptografia forte para senhas com HTTP Basic sobre SSL tem menos probabilidade de compartilhar essas vulnerabilidades.
Se você não tiver controle sobre seus clientes, eles poderão tentar executar a autenticação básica sem SSL, o que é muito menos seguro que o Digest.
Sintaxe de autenticação de acesso de resumo RFC 2069
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
Sintaxe de autenticação de acesso de resumo RFC 2617
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
No Postman, é o seguinte:
Nota:
Vamos ver a diferença entre as duas autenticação HTTP usando Wireshark
(Ferramenta para analisar pacotes enviados ou recebidos).
1. Autenticação Básica HTTP
Assim que o cliente digitar o nome de usuário correto : password , conforme solicitado pelo servidor da Web, o servidor da Web verifica no banco de dados se as credenciais estão corretas e fornece acesso ao recurso.
Aqui está como os pacotes são enviados e recebidos:
No primeiro pacote, o Cliente preenche as credenciais usando o método POST no recurso - lab/webapp/basicauth
.Em retorno, o servidor responde com o código de resposta http 200 ok , ou seja, o nome de usuário: senha estava correto.
Agora, no Authorization
cabeçalho, mostra que é a Autorização Básica, seguida por uma sequência aleatória. Essa sequência é a versão codificada (Base64) das credenciais admin:aadd
(incluindo dois pontos).
2) Autenticação Digest HTTP (rfc 2069)
Até agora, vimos que a autenticação básica envia nome de usuário: senha em texto sem formatação pela rede. Mas o Digest Auth envia um HASH da senha usando o algoritmo Hash.
Aqui estão os pacotes mostrando as solicitações feitas pelo cliente e a resposta do servidor.
Assim que o cliente digita as credenciais solicitadas pelo servidor, a Senha é convertida em um response
usando um algoritmo e, em seguida, é enviada ao servidor. Se o banco de dados do servidor tiver a mesma resposta que o cliente, o servidor concederá o acesso ao recurso. , caso contrário, um erro 401 .
No exemplo acima Authorization
, a response
cadeia é calculada utilizando os valores de Username
, Realm
, Password
, http-method
, URI
e Nonce
como mostrado na imagem:
Portanto, podemos ver que a Autenticação Digest é mais segura, pois envolve Hashing (criptografia MD5). Portanto, as ferramentas de detecção de pacotes não conseguem detectar a Senha, embora em Autenticação Básica a Senha exata seja mostrada no Wireshark.
A autenticação básica usa a codificação base 64 para gerar uma seqüência criptográfica que contém as informações de nome de usuário e senha.
A Autenticação de Acesso Digest usa as metodologias de hash para gerar o resultado criptográfico