I have been looking for a web socket client implementation for few days to pass through Proxy, which is setup with NTLM Negotiate protocol.
I verified below implementations with NO success:
1. Glassfish's Tyrus client:
Tried both client managers below,
a. org.glassfish.tyrus.client.ClientManager ("org.glassfish.tyrus.bundles:tyrus-standalone-client:1.13")
b. org.glassfish.tyrus.container.jdk.client.JdkClientContainer ("org.glassfish.tyrus:tyrus-container-jdk-client:1.13.1")
2. Eclipse Tyrus client:
According to below issue, they does not support it yet.
https://github.com/eclipse-ee4j/tyrus/issues/381
3. Apache Tomcat client:
Verified Spring web socket client with underlying tomcat implementation.
org.apache.tomcat.websocket.WsWebSocketContainer ("org.apache.tomcat.embed:tomcat-embed-websocket:8.5.11")
4. Jetty:
Verified with 'org.eclipse.jetty.websocket:websocket-client:9.4.8.v20171121'.
Found (correct me if I am wrong here) that they only support 'BASIC' and 'DIGEST'.
NOTE: Most of above implementations support authentication scheme 'BASIC' and in some cases 'DIGEST'.
Proxy setup:
We have Squid proxy setup with NTLM (Negotiate) with Active Directory as a domain controller. Our customer has a Blue coat proxy running with similar setup.
Client:
We have Java client (desktop application) runs on windows system and connects to various other servers (On HTTP 1.1 and WS/WSS) via a proxy.
NTLM Negotiate:
Client needs to accept the authentication challenge from proxy server and respond with logged-in user name with domain and a password hash (which it gets it from windows) to proxy server, which in turn validates against domain controller (active directory).
Java's HttplURLConnection and Apache Http Client implementations already support this mechanism while connecting to proxy for all Http requests. My need is to find a web socket client implementation to do the similar mechanism to support all requests (Http and WS/WSS) that my Java client makes on outbound traffic.
Summary of my request:
Please let me know, if anyone already came across this need and know an web socket implementation, which already supports connecting to NTLM (Negotiate) based proxy on windows systems.
If a similar question already exists and answered, please point me to that.