Java-Unterstützung für Proxies und HTTP-Authentifizierung

In der Klasse URLConnection stellt Java alle zur Durchführung der HTTP-Authentifizierung erforderlichen Teile zur Verfügung. Nachdem die Verbindung für den Server geöffnet wurde (nach Aufruf der Methode connect), hat man mit der Methode getHeaderField(String) Zugriff auf einen Header, der den Wert des Headers als Zeichenfolge unter Angabe des Namens zurückgibt.

So kann man nach dem Senden eines Requests mit der Methode getHeaderField den WWW-Authenticate-Header erhalten. Wenn die Methode Null zurückgibt, gibt es keinen Header und der Request bedarf keiner Autorisierung. Andernfalls erhält man durch Parsen des zurückgegebenen Werts den Realm und erhält mit diesem Benutzernamen und Passwort. Nun wird der Request wieder gesendet, dieses Mal mit der Methode setRequestProperty zum Setzen des Authorization-Header.

Dieser Vorgang kann so lange wiederholt werden, bis entweder die Autorisierung erteilt oder der Vorgang durch den Anwender abgebrochen wird. Benutzername und Passwort können für die Autorisierung künftiger Requests innerhalb des gleichen Realm gespeichert werden. Nach den HTTP-Authentifizierungsspezifikationen sind sämtliche Requests an den gleichen Pfad auf der gleichen oder tieferen Ebene als Teil des gleichen Realm anzusehen.

Wenn auch die normalen Java-Klassen keine Unterstützung von Base64 bieten, so ist die Implementierung von Base63 nicht schwierig. Wie in Listing A ersichtlich, gibt es einige allgemein zugängliche Implementierungsteile.

Die Autorisierung für einen Proxy kann auf die gleiche Weise gesetzt werden. Hierzu benutzt man einfach die Methode setRequestProperty, um den Proxy-Authorization-Header für jeden Request festzulegen.

Um HTTP-Authentifizierung leichter zu Java-Anwendungen hinzufügen zu können, habe ich die Klasse HttpGet (Listing B) geschrieben, die auch Proxies unterstützt. Siehe Tabelle A für das gesamte API.

Tabelle A

Methode Beschreibung
removeAuthorization Entfernt die zuvor für einen bestimmten Host und Realm gesetzte Autorisierung
setAuthorization Setzt Benutzernamen und Passwort für die Autorisierung zukünftiger Requests an einen bestimmten Host und Realm
setProxy Setzt den für Requests zu verwendenden Proxy
setProxyAuthorization Setzt Benutzernamen und Passwort zur Verwendung beim Proxy
doGet Führt ein HTTP GET Request an eine bestimmte URL aus und gibt Verbindungsobjekt URLConnection zurück; fordert ggf. den Anwender zur Eingabe von Benutzernamen und Passwort auf für den Zugriff auf geschützte Ressourcen

Die wichtigste Methode ist doGet – diese führt einen HTTP GET Request auf einer URL aus und gibt ein verbundenes URLConnection-Objekt zurück. Mit der Methode authorize erhält es Benutzernamen und Passwort für einen bestimmten Realm. In der Standardimplementierung wird ein Dialogfeld angezeigt, in dem diese Informationen einzugeben sind. Mit der Unterklasse HttpGet kann man die Methode authorize außer Kraft setzen, wenn man eine anwenderspezifische Implementierung benötigt. Autorisierungen werden zur Wiederverwendung gecached, wenn auf den gleichen Realm erneut zugegriffen wird.

Listing C zeigt ein einfaches Beispiel, das mit der Klasse HttpGet auf den Inhalt einer bestimmten URL (in der Befehlszeile) zugreift und diesen an das Standard-Ausgabegerät sendet.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Digitale Produkte „cyberfit“ machen

Vernetzte Produkte müssen laut Cyber Resilience Act über Möglichkeiten zur Datenverschlüsselung und Zugangsverwaltung verfügen.

2 Tagen ago

Google schließt schwerwiegende Sicherheitslücken in Chrome 131

Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…

3 Tagen ago

Apple schließt Zero-Day-Lücken in iOS, iPadOS und macOS

Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…

3 Tagen ago

Gefährliche Anzeigen für Passwortmanager Bitwarden verbreiten Malware

Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…

3 Tagen ago

Public Cloud: Gartner erwartet 2025 weltweite Ausgaben von 723 Milliarden Dollar

Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.

4 Tagen ago

iPhone 15 ist bestverkauftes Smartphone im dritten Quartal

Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…

4 Tagen ago