Das Intersult HTTP sind Streaming-Handler für das Java URL-Handling mit NTLM-Unterstützung. Es kann aus dem Intersult Maven Repository bezogen werden, ist daher mit Maven kompatibel.

Hintergrund#

Die normalen Java Streaming-Handler für HTTP- und HTTPS-URLs handeln die Authentifizierung bei Proxy oder Server selbst ab. Der Benutzer hat keine Möglichkeit zum Eingreifen. Entweder die eingebauten Methoden zur Authentifizierung sind ausreichend für den benötigten Zweck, oder der Handler schlägt fehl mit der maximalen Anzahl von Redirects.

Das Intersult HTTP stellt Streaming-Handler zur Verfügung, die ohne diese Automatisierungen arbeiten. Protokolle zur Authentifizierung können dadurch darauf aufbauen, wie das bereits verfügbare NTLM.

Anwendung#

URL mit Intersult HTTP#

Es kann eine URL konstruiert werden, die das Intersult HTTP verwendet (andere URLs sind davon nicht betroffen):
	URLStreamHandler handler = new com.intersult.net.http.Handler();
	URL url = new URL(null, urlString, handler);
	URLConnection connection = url.openConnection();
	...

HTTPS#

Der Handler befindet sich in einem anderen Package (.https. statt .http.):
	URLStreamHandler handler = new com.intersult.net.https.Handler();
	URL url = new URL(null, urlString, handler);
	URLConnection connection = url.openConnection();
	...

Genereller Austausch der Handler#

Es ist möglich, die Protokolle im System zu registrieren:
	Protocols.register();

Dabei ist zu beachten, dass jede URL-Verbindung mit den Intersult HTTP Protokollen betrieben werden. Möglicher Weise möchte man noch die Standard Protokolle verwenden. Dies ist weiterhin möglich, indem ein URL mit dem Standard-Handler konstruiert wird:

	URLStreamHandler handler = new com.sun.net.ssl.internal.www.protocol.https.Handler();
	URL url = new URL(null, urlString, handler);
	URLConnection connection = url.openConnection();
	...

NTLM#

Das NTLM kann momentan nur durch einen eigenen Handler verwendet werden:
	URLStreamHandler handler = new com.intersult.net.http.Handler();
	handler = new NtlmHandler(handler);
	URL url = new URL(null, urlString, handler);
	URLConnection connection = url.openConnection();
	...

Wie zu sehen ist, kapselt der NtlmHandler einen anderen Handler. Hier muss der Intersult HTTP-Handler verwendet werden, weil der normale Java-Handler die Authentifizierung abfangen würde. Falls kein transparantes NTLM zur Verfügung steht, würde dies sonst fehlschlagen.