Découvrons la différence entre les deux authentifications HTTP en utilisant Wireshark
(outil d'analyse des paquets envoyés ou reçus).
1. Authentification HTTP de base
Dès que le client saisit le nom d'utilisateur: mot de passe correct, demandé par le serveur Web, le serveur Web vérifie dans la base de données si les identifiants sont corrects et donne accès à la ressource.
Voici comment les paquets sont envoyés et reçus :
Dans le premier paquet, le client remplit les informations d'identification en utilisant la méthode POST à la ressource - lab/webapp/basicauth
. En retour, le serveur répond avec le code de réponse http 200 ok, c'est-à-dire que le nom d'utilisateur et le mot de passe étaient corrects.
Maintenant, dans l'en-tête Authorization
, il montre qu'il s'agit d'une autorisation Base suivie d'une chaîne aléatoire. Cette chaîne est la version encodée (Base64) des informations d'identification admin:aadd
(en incluant le deux-points).
2. Authentification HTTP Digest (rfc 2069)
Jusqu'à présent, nous avons vu que l'Authentification de Base envoie nom d'utilisateur: mot de passe en texte clair sur le réseau. Mais le Digest Auth envoie un HASH du mot de passe en utilisant un algorithme de hachage.
Voici les paquets montrant les requêtes faites par le client et les réponses du serveur.
Dès que le client entre les informations d'identification demandées par le serveur, le mot de passe est converti en une réponse
en utilisant un algorithme puis est envoyé au serveur. Si la base de données du serveur a la même réponse que celle donnée par le client, le serveur donne accès à la ressource, sinon une erreur 401.
Dans l'en-tête Authorization
ci-dessus, la chaîne de réponse
est calculée en utilisant les valeurs de Nom d'utilisateur
, Realm
, Mot de passe
, méthode http
, URI
et Nonce
comme montré dans l'image :
(les deux-points sont inclus)
Ainsi, nous pouvons voir que l'Authentification Digest est plus sécurisée car elle implique du hachage (chiffrage MD5), de sorte que les outils de capture de paquets ne peuvent pas intercepter le mot de passe alors que dans l'Authentification de Base, le mot de passe exact était visible sur Wireshark.