Praktikumsversuch HTTP-Authentifizierung
Übersicht
Dieses Praktikum dient der praktischen Erprobung der HTTP-Authentifizierung. Sie werden in die Lage versetzt, dieses Verfahren in eigenen Webanwendungen einzusetzen.
HTTP-Basic-Authentification
Browser
- Dieser Versuch dient der praktischen Demonstration der HTTP-Authentifizierungsmethode BASIC. Informieren Sie sich vor dem Versuch über diese Methode in den Vorlesungsunterlagen oder anderweitig.
- Schneiden Sie den Authentifizierungsvorgang beim HTTP-Zugriff eines Browsers auf eine PDF-Datei (z.B. test.pdf) in http://www.informatik.htw-dresden.de/~jvogt/it1/ z.B. mittels Wireshark mit und ermitteln Sie das Passwort.
- Wichtig ist die Nutzung des Webservers
www.informatik.htw-dresden.de
(iweb3), da die anderen Webserver der HTW einen unverschlüsselten Zugriff nicht mehr zulassen. - Sie finden Informationen zum Mitschneiden in Wireshark unter [2].
- Versuchen Sie außerdem den Mitschnitt bei einem HTTPS-Zugriff.
CURL
Nutzen Sie CURL für den Zugriff auf die Datei test.pdf. Lassen Sie sich alle Request- und Response-Header anzeigen. Dies funktioniert mittels der verbose-Option.
Java-Client
- Erweitern Sie Ihr im vorherigen Praktikumsversuch erstelltes Java-Programm zur Anzeige einer HTTP-Resource um den Zugriff auf geschlossene Bereiche mittels HTTP-Basic-Authentication. Dazu sollten Sie sich bereits mit der Funktionsweise vertraut gemacht haben.
- Sie können die Funktionsfähigkeit anhand des Downloads der Datei: /~jvogt/it1/test.pdf prüfen (Dies ist keine wirkliche PDF-Datei sondern lediglich eine Textdatei mit Endung PDF).
- Für die Base64-Codierung/-Decodierung steht Ihnen unter Linux das Konsolenprogramm base64 zur Verfügung. Alternativ befindet sich eine BASE64-Bibliothek in Java ab Version 8.
HTTP-Digest-Authentification
Der Zugriff auf die Ressource http://www.informatik.htw-dresden.de/~jvogt/it1/digestdemo/test.txt ist per HTTP-Digest-Authentification geschützt. Die Anmeldeinformationen entsprechen denen des Moduls IT1/Webprogrammierung. Greifen Sie mittels CURL auf die Ressource zu. Lassen Sie sich die entsprechenden Antwort-Header anzeigen. Um die gesendeten Daten zu sehen, eignet sich die CURL-Option -v.
Prüfen Sie, ob Nonce des Server-Response mit dem Client-Request übereinstimmt.
Anwendung der Basic-Authentification
Legen Sie in Ihrem Webverzeichnis eine Datei .htaccess
mit folgenden Inhalt an:
AuthType Basic
AuthName "Demo"
AuthUserFile /Pfad/zu/.htpasswd
#
<Files test.html>
Require valid-user
</Files>
Hinweis: Anstatt Files kann auch die Direktive FilesMatch verwendet werden. Außerdem kann der Zugriff mittels Regex angepasst werden.
- Legen Sie weiterhin eine Datei .htpasswd mit Nutzern/Passwörtern (üblich ist auch .htusers) in einem Verzeichnis außerhalb des Webzugriffs an. Dies kann mittels des Programms htpasswd erfolgen.
- Legen Sie die zwei Nutzer anton und berta an mit jeweils dem Passwort hallo.
- Das Passwort wird automatisch gehashed abgelegt. Die Abkürzung apr1 bezieht sich auf den Algorithmus MD5 (1000 Iterationen + Salz).
- Eine sichere Alternative zu MD5 ist bcrypt. Das Password kann alternativ auch mittels OpenSSL generiert werden:
openssl passwd -apr1 myPassword
. - Das Salz kann auch vorgegeben werden zu Verifikation:
openssl passwd -apr1 -salt .... myPassword
.
# Passwort-Datei
anton:$apr1$UkQE/zdn$Y3azXc/6sC.5.s2ax9Mw21
berta:$apr1$wXkN1bs2$EwILr7AbGiQ0430sW0gTm.
Prüfen Sie den korrekt authetifizierten Zugriff auf eine angelegte Datei test.html.
Für die Digest-Authentification wird folgender Aufbau benötigt: MD5-Hash des Strings user:realm:password als ein 32-Zeichen String von Hexadezimalen Zeichen.
Literatur
- Kurose, Ross ”Computernetzwerke”, Pearson
- https://www.whitelist1.com/2018/04/capturing-http-basic-authentication.html
Ergebnisse
Fakultativ
HTTP-Proxy (im Labor S311 ist die Nutzung des HTTP-Proxies nicht notwendig)
Die HTW nutzt einen HTTP-Proxy mit den Einstellungen:
- Adresse: www-cache.htw-dresden.de
- Port: 3128 Beachten Sie, dass bei Nutzung eines HTTP-Proxy die URL im Request absolut inklusive Zugriffsmethode angegeben werden muss. Der Host-Header ist unkritisch, da ein Proxy den absoluten Pfad höher priorisiert und den Host-Header ggf. umschreibt.
- Ein HTTP-Proxy entfernt üblicherweise alle Hop-by-Hop Header (z. B. Transfer-Encoding, Keep-Alive, etc.).
- Nutzen Sie Telnet um unter Nutzung des HTW-Proxy z. B. die Website: http://checkip.dyndns.org aufzurufen.
- Für diesen Versuch müssen Sie sich im Netz der HTW befinden. Von außerhalb sendet der Proxy die Fehlermeldung: HTTP/1.1 403 Forbidden.
Proxy + TLS
- Die Nutzung des HTTP-Proxies aus dem erstem Aufgabenteil ist nicht direkt zusammen mit TLS möglich, da die Verbindung Ende-zu-Ende verschlüsselt ist und der Proxy somit die Requests nicht auswerten kann. Für die Nutzung eines HTTP-Proxies mit TLS gibt es prinzipiell mehrere Möglichkeiten, siehe Folien zu HTTP und Proxy.
- An der HTW wird der Proxy nach Erhalt eines CONNECT-Request gezwungen, auf einen TCP-Tunnel umzuschalten. Im Client wird dann nach Erhalt der Meldung ”HTTP/1.0 200 Connection established”vom TCP-Socket auf ein TLS-Socket umgeschaltet. Nachfolgend ist die Umwandlung des Sockets für eine bestehende Verbindung gezeigt:
// TCP-Socket
Socket sock = new Socket( proxyhost, proxyport );
// Upgrade auf TLS
sock = (SSLSocket) sslFact.createSocket(sock, sock.getInetAddress().getHostAddress(), sock.getPort() ,true);
Letzte Änderung: 09. May 2023 18:10