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 unter Windows selbst ab. Allerdings hat 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. Des Weiteren funktioniert das transparente NTLM nur unter Windows, wenn der entsprechende Account auf der Maschine verfügbar ist. Soll ein anderer Account verwendet werden oder man benutzt ein anderes Betriebssystem, schläft das transparente NTLM fehl. 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 [Intersult HTTP] enthält mehrere Handler, der NtlmHandler dürfte der interessanteste davon sein. Jedoch können auch die HTTP- und HTTPS-Handler verwendet werden, um eine direktere HTTP-Verbindung herzustellen, ohne die üblichen Authentifizierungsversuche. !!NTLM Das NTLM wird durch einen eigenen Handler verwendet: {{{ NtlmHandler handler = new NtlmHandler(); handler.setUsername("domain\\username"); handler.setPassword("password"); URL url = new URL(null, urlString, handler); URLConnection connection = url.openConnection(); ... }}} Der NtlmHandler kapselt einen anderen Handler, hier wird per Default der Intersult HTTP/HTTPS-Handler verwendet, weil der normale Java-Handler die Authentifizierung abfangen und seinerseits verarbeiten würde. Falls kein transparantes NTLM zur Verfügung steht, würde dies sonst fehlschlagen. Die Authentication kann auch durch den Default-Authenticator gesetzt werden: {{{ Authenticator.setDefault(new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("domain\\username", "password".toCharArray()); } }); }}} !!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(); ... }}} !!!Hintergründe Der NtlmHandler kapselt einen anderen URLStreamHandler, hier wird per Default der Intersult HTTP/HTTPS-Handler verwendet, im Konstruktor kann jedoch ein anderer Handler übergeben werden. Der normale Java-Handler kann nicht verwendet werden, da er die Authentifizierung abfängt und seinerseits verarbeiten. Falls kein transparantes NTLM zur Verfügung steht, würde dies sonst fehlschlagen.