HTTP-Digest-Authentifizierung

Ich möchte die HTTP-Digest-Authentifizierung mit einer zentralen Datenbank verwenden, in der Benutzernamen und verschlüsselte Kennwörter gespeichert sind. Diese Daten sollten von verschiedenen Servern wie beispielsweise Apache httpd oder Tomcat verwendet werden. Die Clients sind Menschen mit Browsern und anderen Anwendungen, die auf eine REST-gerechte Weise kommunizieren.

Soweit ich weiß, konnte ich keine Tabelle mit Hash-Passwörtern verwenden. Es ist nur möglich zu speichernHA1 = MD5 (Benutzername: Realm: Passwort) Wo ist ein Klartext-Passwort erforderlich - richtig?

Andererseits scheint es möglich zu sein, gehashte Passwörter mit Apache httpd zu verwenden:

Apache httpd doc sagt:

Der erste Spaltenwert der ersten von der Abfrageanweisung zurückgegebenen Zeile sollte eine Zeichenfolge sein, die das verschlüsselte Kennwort enthält.

Funktioniert es mit Digest-Authentifizierung? Es gibt keinen Parameter, um den Hash-Algorithmus anzugeben. Wie entscheidet Apache httpd, welcher Algorithmus verwendet wird?

RFC 2617 sagt:

4.13 Passwörter speichern

Digest-Authentifizierung erfordert, dass der Authentifizierungsagent (normalerweise der Server) einige Daten, die vom Benutzernamen und dem Kennwort abgeleitet sind, in einer "Kennwortdatei" speichert, die einem bestimmten Bereich zugeordnet ist. Normalerweise kann dies Paare aus Benutzername und H (A1) enthalten, wobei H (A1) der verdaute Wert von Benutzername, Bereich und Kennwort ist, wie oben beschrieben.

Es hört sich so an, als ob das Passwort ein Klartext sein muss.

In der Servlet 3.0-Spezifikation heißt es:

Obwohl Passwörter nicht über die Leitung gesendet werden, erfordert die HTTP-Digest-Authentifizierung, dass dem Authentifizierungscontainer Klartext-Passwort-Äquivalente zur Verfügung stehen, damit empfangene Authentifikatoren durch Berechnung des erwarteten Digests validiert werden können.

Was ist hier das "Klartext-Passwort-Äquivalent"? Der Passwort-Hash?

Tomcat-Dokumentation sagt:

Bei Verwendung von Digest-Passwörtern mit DIGEST-Authentifizierung unterscheidet sich der zur Erstellung des Digests verwendete Klartext. In den obigen Beispielen muss {Klartext-Passwort} durch {Benutzername} ersetzt werden: {Bereich}: {Klartext-Passwort}. In einer Entwicklungsumgebung kann dies beispielsweise die Form testUser: localhost: 8080: testPassword annehmen.

Hier ist ein Klartext-Passwort erforderlich.

Kann die HTTP Digest-Authentifizierung mit bereits verschlüsselten Passwörtern verwendet werden oder müssen die Passwörter Klartext sein?

Muss der Benutzer seine Anmeldeinformationen erneut eingeben, wenn er eine Seite aus einer anderen Unterdomäne anfordert?

Löscht der Browser das zwischengespeicherte Kennwort, wenn der Tab geschlossen wird oder nur, wenn das Ganze geschlossen ist? Vielleicht ist das von Browser zu Browser unterschiedlich - ich würde mich interessieren, welcher Browser es löscht und welcher es behält.

Die allgemeine Frage ist, ob die Digest-Authentifizierung für mein Szenario mit einer zentralen Benutzer-Datenbank mit bereits verschlüsselten Passwörtern geeignet ist. Oder sollte ich den sitzungsbasierten Dienst für einmaliges Anmelden besser verwenden?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage