Zum Hauptinhalt springen

RFC 2617 - HTTP-Authentifizierung: Basis- und Digest-Zugriffs-Authentifizierung

Veröffentlichungsdatum: Juni 1999
Status: Internet-Standard
Autoren: J. Franks, P. Hallam-Baker, J. Hostetler, S. Lawrence, P. Leach, A. Luotonen, L. Stewart
Ersetzt: RFC 2069
Ersetzt durch: RFC 7235, RFC 7615, RFC 7616, RFC 7617


Zusammenfassung (Abstract)

"HTTP/1.0" enthält die Spezifikation für ein Basis-Zugriffs-Authentifizierungsschema (Basic Access Authentication Scheme). Dieses Schema wird nicht als sichere Methode zur Benutzerauthentifizierung angesehen (es sei denn, es wird in Verbindung mit einem externen sicheren System wie SSL verwendet), da Benutzername und Passwort als Klartext über das Netzwerk übertragen werden.

Dieses Dokument bietet auch die Spezifikation für das HTTP-Authentifizierungsframework (Authentication Framework), das ursprüngliche Basis-Authentifizierungsschema und ein auf kryptographischen Hashes basierendes Schema, das als "Digest-Zugriffs-Authentifizierung" (Digest Access Authentication) bezeichnet wird. Es soll daher auch als Ersatz für RFC 2069 dienen. Einige in RFC 2069 spezifizierte optionale Elemente wurden aufgrund von Problemen, die seit seiner Veröffentlichung entdeckt wurden, aus dieser Spezifikation entfernt; andere neue Elemente wurden aus Kompatibilitätsgründen hinzugefügt, diese neuen Elemente wurden optional gemacht, werden aber dringend empfohlen.

Wie die Basis-Authentifizierung (Basic) überprüft die Digest-Zugriffs-Authentifizierung (Digest Access Authentication), dass beide Parteien einer Kommunikation ein gemeinsames Geheimnis (ein Passwort) kennen; im Gegensatz zur Basis-Authentifizierung kann diese Überprüfung durchgeführt werden, ohne das Passwort im Klartext zu senden, was die größte Schwäche der Basis-Authentifizierung ist. Wie bei den meisten anderen Authentifizierungsprotokollen liegen die größten Risikoquellen normalerweise nicht im Kernprotokoll selbst, sondern in den Richtlinien und Verfahren rund um seine Verwendung.


Status dieses Dokuments (Status of this Memo)

Dieses Dokument spezifiziert ein Internet-Standards-Track-Protokoll für die Internet-Community und bittet um Diskussion und Verbesserungsvorschläge. Bitte beziehen Sie sich auf die aktuelle Ausgabe der "Internet Official Protocol Standards" (STD 1) für den Standardisierungsstatus und Status dieses Protokolls. Die Verbreitung dieses Dokuments ist unbegrenzt.


Inhaltsverzeichnis (Table of Contents)


Kernkonzepte

Zwei Authentifizierungsschemata

1. Basis-Authentifizierung (Basic Authentication)

  • Prinzip: Benutzername und Passwort Base64-codiert gesendet
  • Format: Authorization: Basic base64(username:password)
  • Sicherheit: ⚠️ Klartextübertragung, unsicher (außer bei Verwendung von HTTPS)
  • Anwendungsfälle: Einfache Anwendungen, interne Systeme, kombiniert mit HTTPS

2. Digest-Authentifizierung (Digest Authentication)

  • Prinzip: Verwendet MD5-Hash, Passwort wird nicht im Klartext übertragen
  • Format: Enthält nonce, realm, qop und andere Parameter
  • Sicherheit: ✅ Sicherer als Basis-Authentifizierung, aber HTTPS weiterhin empfohlen
  • Anwendungsfälle: HTTP-Authentifizierung mit höheren Sicherheitsanforderungen

Authentifizierungsablauf

Client                                  Server
| |
|------- 1. Anfrage geschützte ------->|
| Ressource |
| |
|<------ 2. 401 + WWW-Authenticate ----|
| (Challenge) |
| |
|------- 3. Authorization-Header ----->|
| (Anmeldedaten) |
| |
|<------ 4. 200 OK + Ressource --------|
| |

HTTP-Statuscodes

  • 401 Unauthorized: Authentifizierung erforderlich
  • 407 Proxy Authentication Required: Proxy-Authentifizierung erforderlich

Wichtige HTTP-Header

  • WWW-Authenticate: Vom Server gesendete Challenge
  • Authorization: Vom Client gesendete Anmeldedaten
  • Authentication-Info: Optionale Authentifizierungsinformationen
  • Proxy-Authenticate: Challenge vom Proxy-Server
  • Proxy-Authorization: An Proxy gesendete Anmeldedaten

Beispiele

Basis-Authentifizierung Beispiel

Server-Antwort:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"

Client-Anfrage:

GET /private/index.html HTTP/1.1
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Digest-Authentifizierung Beispiel

Server-Antwort:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="[email protected]",
qop="auth,auth-int",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
opaque="5ccc069c403ebaf9f0171e9517f40e41"

Client-Anfrage:

GET /dir/index.html HTTP/1.1
Authorization: Digest username="Mufasa",
realm="[email protected]",
nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
uri="/dir/index.html",
qop=auth,
nc=00000001,
cnonce="0a4f113b",
response="6629fae49393a05397450978507c4ef1",
opaque="5ccc069c403ebaf9f0171e9517f40e41"

Zugehörige Ressourcen

  • Offizieller Text: RFC 2617 (TXT)
  • Offizielle Seite: RFC 2617 DataTracker
  • Ersetzt: RFC 2069
  • Ersetzt durch:
    • RFC 7235 (HTTP/1.1 Authentication)
    • RFC 7615 (HTTP Authentication-Info)
    • RFC 7616 (HTTP Digest Access Authentication)
    • RFC 7617 (HTTP Basic Authentication)

Sicherheitswarnung ⚠️

  1. Basis-Authentifizierung ist unsicher: muss mit HTTPS verwendet werden
  2. Digest-Authentifizierung hat Einschränkungen: obwohl besser als Basis-Authentifizierung, wird HTTPS weiterhin empfohlen
  3. Moderne Alternativen: Erwägen Sie die Verwendung von OAuth 2.0, JWT oder anderen modernen Authentifizierungsmechanismen
  4. Passwortspeicherung: Server sollten Passwörter mit gesalzenen Hashes speichern

Wichtiger Hinweis: RFC 2617 wurde durch RFC 7235, 7616, 7617 und andere ersetzt. Moderne Anwendungen sollten sich auf diese aktualisierten Standards beziehen oder moderne Authentifizierungs-Frameworks wie OAuth 2.0 verwenden.