Was ist der Unterschied zwischen Digest und Grund Authentifizierung?
Was ist der Unterschied zwischen Digest und Grund Authentifizierung?
Antworten:
Die Digest-Authentifizierung kommuniziert Anmeldeinformationen in verschlüsselter Form, indem eine Hash-Funktion angewendet wird auf: den Benutzernamen, das Kennwort, einen vom Server bereitgestellten Nonce-Wert, die HTTP-Methode und den angeforderten URI.
Während die Standardauthentifizierung eine nicht verschlüsselte Base64-Codierung verwendet.
Daher sollte die Standardauthentifizierung im Allgemeinen nur verwendet werden, wenn die Sicherheit der Transportschicht bereitgestellt wird, z. B. https.
Siehe RFC-2617 für alle wichtigen Details.
HTTP Basic Access Authentication
Bei der Standardauthentifizierung wird die Base64- Codierung (keine Verschlüsselung) zum Generieren unserer kryptografischen Zeichenfolge verwendet, die die Informationen zu Benutzername und Kennwort enthält. HTTP Basic muss nicht über SSL implementiert werden, aber wenn Sie dies nicht tun, ist es überhaupt nicht sicher. Ich werde also nicht einmal die Idee haben, es ohne zu benutzen.
Vorteile:
Nachteile:
Zusammenfassend : Wenn Sie die Kontrolle über die Clients haben oder sicherstellen können, dass sie SSL verwenden, ist HTTP Basic eine gute Wahl. Die Langsamkeit des SSL kann durch die Geschwindigkeit, mit der nur eine Anfrage gestellt wird, aufgehoben werden
Syntax der Basisauthentifizierung
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>
HTTP-Digest-Zugriffsauthentifizierung Die
Digest-Zugriffsauthentifizierung verwendet die Hashing-Methoden (dh Digest-Mittel, die in kleine Stücke geschnitten werden), um das kryptografische Ergebnis zu generieren. Die HTTP Digest-Zugriffsauthentifizierung ist eine komplexere Form der Authentifizierung, die wie folgt funktioniert:
Vorteile:
Nachteile:
Zusammenfassend ist HTTP Digest von Natur aus anfällig für mindestens zwei Angriffe, während ein Server, der eine starke Verschlüsselung für Kennwörter mit HTTP Basic über SSL verwendet, diese Sicherheitsanfälligkeiten weniger wahrscheinlich gemeinsam nutzt.
Wenn Sie jedoch keine Kontrolle über Ihre Clients haben, können diese versuchen, eine Standardauthentifizierung ohne SSL durchzuführen, was viel weniger sicher ist als Digest.
RFC 2069 Digest Access-Authentifizierungssyntax
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:Hash2)
RFC 2617 Digest Access-Authentifizierungssyntax
Hash1=MD5(username:realm:password)
Hash2=MD5(method:digestURI)
response=MD5(Hash1:nonce:nonceCount:cnonce:qop:Hash2)
//some additional parameters added
In Postman sieht wie folgt aus:
Hinweis:
Lassen Sie uns den Unterschied zwischen den beiden HTTP- Authentifizierungen mit Wireshark
(Tool zum Analysieren von gesendeten oder empfangenen Paketen) sehen.
1. HTTP-Basisauthentifizierung
Sobald der Client den richtigen Benutzernamen eingibt: Kennwort , wie vom Webserver angefordert, überprüft der Webserver in der Datenbank, ob die Anmeldeinformationen korrekt sind, und gewährt Zugriff auf die Ressource.
So werden die Pakete gesendet und empfangen:
Im ersten Paket füllt der Client die Anmeldeinformationen mit der POST- Methode in der Ressource aus. lab/webapp/basicauth
Im Gegenzug antwortet der Server mit dem http-Antwortcode 200 ok , dh der Benutzername: Passwort war korrekt.
Jetzt, in der Authorization
Kopfzeile zeigt es , dass es Grund Autorisierung durch eine zufällige Zeichenfolge gefolgt .Dieses String ist die codierte (Base64) Version der Anmeldeinformationen admin:aadd
(einschließlich Doppelpunkt).
2. HTTP- Digest-Authentifizierung (RFC 2069)
Bisher haben wir gesehen, dass die Basisauthentifizierung Benutzername: Passwort im Klartext über das Netzwerk sendet. Die Digest- Authentifizierung sendet jedoch einen HASH des Passworts unter Verwendung des Hash-Algorithmus.
Hier sind Pakete, die die vom Client gestellten Anforderungen und die Antwort vom Server zeigen.
Sobald der Client die vom Server angeforderten Anmeldeinformationen eingibt, wird das Kennwort response
mithilfe eines Algorithmus in ein Kennwort konvertiert und dann an den Server gesendet. Wenn die Serverdatenbank dieselbe Antwort wie vom Client gegeben hat, gewährt der Server den Zugriff auf die Ressource , sonst ein 401 Fehler.
In dem obigen Authorization
, der response
wird Zeichenkette berechnet die Werte der Verwendung von Username
, Realm
, Password
, http-method
, URI
und Nonce
wie in der Abbildung dargestellt:
Daher können wir sehen, dass die Digest-Authentifizierung sicherer ist, da sie Hashing (MD5-Verschlüsselung) beinhaltet. Daher können die Paket-Sniffer-Tools das Kennwort nicht abhören, obwohl in Basic Auth das genaue Kennwort auf Wireshark angezeigt wurde.
Bei der Standardauthentifizierung wird die Base 64-Codierung zum Generieren einer kryptografischen Zeichenfolge verwendet, die die Informationen zu Benutzername und Kennwort enthält.
Die Digest Access-Authentifizierung verwendet die Hashing-Methoden, um das kryptografische Ergebnis zu generieren