Das Digestzugriffsprotokoll

Das durch RFC 2617 angegebene Digest Access-Protokoll wird vom Microsoft Digest Security Support Provider (SSP) implementiert. Die Implementierung besteht aus einer Reihe von Sicherheitskontextfunktionen von Microsoft Security Support Provider Interface (SSPI), die Client-/Serveranwendungen aufrufen:

Die Authentifizierung des Digestzugriffs erfolgt innerhalb gekoppelter Anforderungs-/Antworttransaktionen, wobei Anforderungen vom Client und Antworten vom Server stammen. Für eine erfolgreiche Digestzugriffsauthentifizierung sind zwei Anforderungs-Antwort-Paare erforderlich.

Wenn der Digest-SSP für die HTTP-Authentifizierung verwendet wird, besteht keine Verbindung zwischen dem ersten und zweiten Anforderungs-Antwort-Paar. Anders ausgedrückt: Der Server wartet nicht auf die zweite Anforderung, nachdem er die erste Antwort gesendet hat.

Die folgende Abbildung zeigt die Schritte, die ein Client und Server für den HTTP-Pfad ausführen, um eine Authentifizierung mithilfe des Digest-SSP abzuschließen. Der SASL-Mechanismus verwendet die gegenseitige Authentifizierung, sodass Authentifizierungsdaten auf dem letzten ASC-Serveraufruf an den Client zurückgesendet werden, der überprüft, ob der Client mit dem richtigen Server kommuniziert.

Digestzugriffsprotokoll

Der Prozess beginnt damit, dass der Client eine zugriffsgeschützte Ressource vom Server anfordert, indem er HTTP-Anforderung 1 sendet.

Der Server empfängt HTTP-Anforderung 1 und bestimmt, dass die Ressource Authentifizierungsinformationen benötigt, die nicht in der Anforderung enthalten waren. Der Server generiert eine Herausforderung für den Client wie folgt:

  1. Der Server ruft seine Anmeldeinformationen ab, indem er die AcquireCredentialsHandle-Funktion aufruft .
  2. Der Server generiert die Digest-Challenge durch Aufrufen der AcceptSecurityContext (General) -Funktion.
  3. Der Server sendet einen WWW-Authenticate-Header als Antwort auf die Anforderung des Clients (als HTTP-Antwort 1 dargestellt). Der Header enthält die Digest-Challenge und eine undurchsichtige Anweisung, die einen Verweis auf einen teilweisen Sicherheitskontext enthält, der für den Client eingerichtet wurde. Der Header wird mit einem 401-status-Code gesendet, der angibt, dass die Clientanforderung einen Nicht autorisierten Zugriffsfehler generiert hat. Weitere Informationen zur Digest-Challenge finden Sie unter Inhalt einer Digest-Herausforderung und Generieren der Digest-Challenge.
  4. Der Client empfängt HTTP-Antwort 1, extrahiert die vom Server gesendete Digest-Challenge und generiert eine Digest-Challenge-Antwort wie folgt:
    1. Die Anmeldeinformationen des Benutzers werden entweder durch Aufrufen der AcquireCredentialsHandle-Funktion oder durch interaktive Aufforderung zur Eingabe von Anmeldeinformationen abgerufen.
    2. Die Informationen zu Herausforderungen und Anmeldeinformationen werden an die Funktion InitializeSecurityContext (Allgemein) übergeben, die die Digest-Challenge-Antwort generiert.
  5. Der Client sendet einen Autorisierungsheader, der die Antwort auf die Herausforderung enthält, an den Server (als HTTP-Anforderung 2 dargestellt). Weitere Informationen zur Digest-Challenge-Antwort finden Sie unter Inhalt einer Digest-Challenge-Antwort und Generieren der Digest-Challenge-Antwort.
  6. Der Server empfängt HTTP-Anforderung 2, extrahiert die vom Client gesendete Anforderungsantwort und authentifiziert die Informationen durch Aufrufen der Funktion AcceptSecurityContext (General). Ausführliche Informationen zum Authentifizierungsprozess finden Sie unter Anfängliche Authentifizierung mithilfe von Microsoft Digest.
  7. Der Server sendet HTTP-Antwort 2 als zweite und letzte Antwort zurück an den Client, die für das Digest Access-Protokoll erforderlich ist. Wenn die Authentifizierung erfolgreich ist, enthält diese Antwort die angeforderte Ressource.

Inhalt einer Digest-Challenge-Antwort