我一直在寻找一个Web套接字客户端实现几天来通过代理,它是使用NTLM Negotiate协议设置的。
我在下面的实施中验证了没有成功:
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'.
注意:以上大多数实现都支持认证方案'BASIC',在某些情况下支持'DIGEST'。
代理设置:
我们使用NTLM(Negotiate)进行Squid代理设置,将Active Directory作为域控制器。 我们的客户有一个蓝色外套代理,运行类似的设置。
客户端:
我们在Windows系统上运行Java客户端(桌面应用程序),并通过代理连接到各种其他服务器(在HTTP 1.1和WS / WSS上)。
NTLM谈判:
客户端需要接受来自代理服务器的身份验证质询,并使用域和密码哈希(从Windows获取)登录用户名到代理服务器,代理服务器依次验证域控制器(活动目录)
Java的HttplURLConnection和Apache Http客户端实现在连接到所有Http请求的代理时已经支持此机制。我需要找到一个Web套接字客户端实现来执行类似的机制来支持我的Java客户端对出站流量做出的所有请求(Http和WS / WSS)。
我的要求摘要:
请告诉我,如果有人已经遇到这种需求并且知道一个Web套接字实现,它已经支持在Windows系统上连接到基于NTLM(Negotiate)的代理。
如果类似的问题已经存在并得到解答,请指出。