Diese Link Details zu den verschiedenen http-Client-Java-Implementierungen. Ich bin auf der Suche nach Links, die Informationen über ihre NTLM-Protokoll-Implementierung Unterschiede bieten könnte.
Auf einem der Windows-Rechner habe ich festgestellt, dass die commons-http client 3.1-Implementierung mit einem Autorisierungsfehler (http-Statuscode 401) fehlschlägt, während die Java 1.5-Implementierung erfolgreich ist. Da die Java 1.5-Implementierung des NTLM-Authentifizierungsprotokolls nicht quelloffen ist, kann ich die beiden Implementierungen nicht vergleichen, um herauszufinden, was falsch laufen könnte.
Aktualisierung 1
Ich bin mir der Tatsache bewusst, dass der commons http-Client kein NTLM v2 unterstützt. Link bietet einen Vergleich zwischen verschiedenen Java-Http-Client-Implementierungen und erwähnt, dass der Apache-Http-Client eine teilweise Implementierung des NTLM-Protokolls. Sie enthält keine weiteren Einzelheiten.
Bei der weiteren Problembehandlung stellte ich außerdem fest, dass die NTLM-Implementierung von dieser Link in Verbindung mit HTTPClient funktioniert auf dem Windows-Rechner (die commons http-Client-Implementierung funktioniert nicht, wie ich oben erwähnt habe).
Aktualisierung 2
Durch das Schnüffeln von Paketen (mit Wireshack) habe ich festgestellt, dass die commons http client 3.1 ntlm-Protokoll-Implementierung nicht die NTLM-Antwort in der Typ-3-Nachricht erzeugt. Diese wird von der JDK-Implementierung erzeugt. Kennen Sie eine Server-/Client-Einstellung, die darauf hinweist, dass die Authentifizierung fehlschlägt, wenn die NTLM-Antwortdaten leer sind? (da der Authentifizierungsfehler, mit dem wir konfrontiert sind, nur auf einem Rechner reproduzierbar ist. Die Authentifizierung gelingt sonst überall).