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

DMA: EU stuft auch Apples iPadOS als Gatekeeper ein

Eine neue Analyse der EU-Kommission sieht vor allem eine hohe Verbreitung von iPadOS bei Business-Nutzern.…

5 Tagen ago

Chips bescheren Samsung deutlichen Gewinnzuwachs

Das operative Ergebnis wächst um fast 6 Billionen Won auf 6,64 Billionen Won. Die Gewinne…

5 Tagen ago

Chrome: Google verschiebt das Aus für Drittanbietercookies

Ab Werk blockiert Chrome Cookies von Dritten nun frühestens ab Anfang 2025. Unter anderem gibt…

6 Tagen ago

BAUMLINK: Wir sind Partner und Aussteller bei der Frankfurt Tech Show 2024

Die Vorfreude steigt, denn BAUMLINK wird als Partner und Aussteller bei der Tech Show 2024…

6 Tagen ago

Business GPT: Generative KI für den Unternehmenseinsatz

Nutzung einer unternehmenseigenen GPT-Umgebung für sicheren und datenschutzkonformen Zugriff.

6 Tagen ago

Alphabet übertrifft die Erwartungen im ersten Quartal

Der Umsatz steigt um 15 Prozent, der Nettogewinn um 57 Prozent. Im nachbörslichen Handel kassiert…

1 Woche ago