- HTTP-Authentifizierung
-
HTTP-Authentifizierung ist ein Verfahren, mit dem sich der Nutzer eines Webbrowsers gegenüber dem Webserver bzw. einer Webanwendung als Benutzer authentisieren kann, um danach für weitere Zugriffe autorisiert zu sein.
Es ist Teil des Hypertext Transfer Protocol (http), das die Grundlage des World Wide Web bildet.
Inhaltsverzeichnis
Funktion
Stellt der Webserver fest, dass für eine angeforderte Datei Benutzername oder Passwort nötig sind, meldet er das dem Browser mit dem Statuscode 401 Unauthorized und dem Header WWW-Authenticate. Der Browser ermittelt nun die zur Anmeldung notwendigen Daten (indem er den Nutzer fragt oder schon früher eingegebene Werte verwendet) und sendet das Ergebnis dem Server, der daraufhin die gewünschte Seite übermittelt.
Serverseitig ist die Authentifizierung entsprechend zu konfigurieren, beim Apache HTTP Server etwa durch Notation entsprechender durch Authentifizierungsmodule bereitgestellter Direktiven in einer .htaccess-Datei. Der bevorzugte Weg ist jedoch die Notation der Direktiven in der zentralen Serverkonfigurationsdatei httpd.conf.
Der Nutzer ist nach Ablauf des Protokolls gegenüber dem Webserver authentifiziert, allerdings gilt die Umkehrung nicht: Der Nutzer kann nicht sicher sein, dass der Webserver wirklich der ist, der er vorgibt zu sein. Ein Spoofing-Angriff kann einen legitimen Webserver vortäuschen, um beispielsweise an weitere Nutzerdaten zu gelangen. Üblicherweise wird für die Authentifizierung des Webservers gegenüber dem Nutzer ein Sicherheitsprotokoll wie HTTPS benutzt, welches mit Hilfe von digitalen Zertifikaten die Identität des Webservers bestätigen kann.
Verwendung
Größere Webauftritte verwenden dieses standardisierte Verfahren nur noch selten, da sich die Eingabefelder für Benutzername und Passwort nur auf Umwegen gestalten und nicht so einfach in die eigene Webseite einbinden lassen wie bei einem HTML-Formular. Teils wird die HTTP-Auth-Abfrage auch durch eigene JavaScript-Funktionen ergänzt.
Auf einfachen Homepages ist HTTP-Authentifizierung öfter zu finden, da keine Programmierung in einer Skriptsprache notwendig ist. Viele Webspace-Provider bieten dabei eine einfache Möglichkeit zur Konfiguration per Web-Interface.
Verfahren
Es gibt mehrere Möglichkeiten, Benutzer (Clients) zu authentifizieren. Verbreitet sind:
Basic Authentication
Die Basic Authentication nach RFC 2617 ist die häufigste Art der HTTP-Authentifizierung. Der Webserver fordert mit
WWW-Authenticate: Basic realm="RealmName"
eine Authentifizierung an, wobei RealmName eine Beschreibung des geschützten Bereiches darstellt. Der Browser sucht daraufhin nach Benutzername/Passwort für diese Datei und fragt gegebenenfalls den Benutzer. Anschließend sendet er die Authentifizierung mit dem Authorization-Header in der Form Benutzername:Passwort Base64-codiert an den Server. Beispiel:
Authorization: Basic d2lraTpwZWRpYQ==
d2lraTpwZWRpYQ== ist die Base64-Codierung von wiki:pedia und steht damit für Benutzername wiki, Passwort pedia. Ein Nachteil dieses Verfahrens ist, dass Benutzername und Passwort nur aus technischen Gründen codiert, jedoch nicht verschlüsselt werden. Bei einer Verschlüsselung mit SSL/TLS bei HTTPS wird bereits vor der Übermittlung des Passwortes eine verschlüsselte Verbindung aufgebaut, so dass auch bei Basic Authentication das Passwort nicht abhörbar ist.
Digest Access Authentication
Bei der Digest Access Authentication (ebenfalls RFC 2617) sendet der Server zusammen mit dem WWW-Authenticate-Header eine eigens erzeugte zufällige Zeichenfolge. Der Browser berechnet den Hashcode (in der Regel MD5) einer Kombination aus Benutzername, Passwort, erhaltener Zeichenfolge, HTTP-Methode und angeforderter URI. Diese sendet er im Authorization-Header zusammen mit dem Benutzernamen und der zufälligen Zeichenfolge zurück an den Server. Dieser berechnet seinerseits die Prüfsumme und vergleicht. Das Verfahren ist damit dem des Message Authentication Code ähnlich.
Ein Abhören der Kommunikation nützt einem Angreifer nichts, da sich durch die Nutzung einer Hashfunktion die Zugangsdaten nicht rekonstruieren lassen und für jede Anforderung anders lauten. Die restliche Datenübertragung ist jedoch nicht geschützt. Um dies zu erreichen, kann etwa HTTPS verwendet werden.
NTLM HTTP Authentication
In Intranets mit Windows-Servern wird häufig das proprietäre NTLM-Authentifizierungsschema angewandt.
Siehe auch
Weblinks
- RFC 2617 (HTTP Authentication)
- RFC 2616 (Hypertext Transfer Protocol – HTTP/1.1)
- Using HTTP Authentication with PHP
- Einrichtung einer verschlüsselten HTTP-Authentifizierung mit htdigest
Kategorien:- HTTP
- Netzwerkprotokoll auf Anwendungsschicht
Wikimedia Foundation.