java - Jersey 客户端是否支持 NTLM 代理

标签 java http ntlm jersey-client proxy-authentication

我正在尝试使用 NTLM 代理进行 Jersey 客户端调用?这可能吗,因为我无法获得任何明确的信息。有人试过吗?

最佳答案

是的,可以配置 Jersey Client通过需要 NTLM 身份验证的代理服务器进行连接。

这是一个简化的代码片段,它准备了一个适合 Jersey v2.5+ 的 ClientConfig:

final ClientConfig config = new ClientConfig();

config.property(ClientProperties.PROXY_URI, "http://myproxy.com:8000");

CredentialsProvider credentialsProvider = new BasicCredentialsProvider();

final AuthScope ntlmAuthScope =
        new AuthScope("myproxy.com", 8000, AuthScope.ANY_REALM, "NTLM");

credentialsProvider.setCredentials(
        ntlmAuthScope,
        new NTCredentials("user", "password", "hostname", "domain") );

config.property(
        ApacheClientProperties.CREDENTIALS_PROVIDER, credentialsProvider);

config.connectorProvider(new ApacheConnectorProvider());

Client client = ClientBuilder.newClient(config);

请注意:我将 Apache HttpClient 连接器与 Jersey 客户端一起使用 - 如果您使用 another client transport connector,您可能需要稍微不同的代码.

如果您希望您的 POST/PUT 请求被缓冲(因此可重复)以响应从您的代理服务器返回的任何 407 身份验证挑战,您可能还需要将以下行添加到您的代码中:

config.property(ClientProperties.REQUEST_ENTITY_PROCESSING,
                RequestEntityProcessing.BUFFERED);

关于java - Jersey 客户端是否支持 NTLM 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21330767/

相关文章:

http - http授权 header 中的有效字符是什么

java - 我无法理解 http 请求的响应

iOS:NSURLAuthenticationChallenge 是否通过网络发送加密凭据?

java - thymeleaf 中的嵌套对象

Java BitSets 写入文件

java - 如何根据提供的 HTML 从弹出窗口中定位元素?

c++ - 我可以重复使用 TCP 连接吗?

android - 单击 webView 中的其他一些超链接/按钮时,Webview 客户端不监听 shouldOverrideUrlLoading 方法

python - 使用 AUTH=NTLM 针对 Exchange imap 服务器验证 imaplib.IMAP4_SSL

java - 使用 Logback SSLSocketAppender 时 Splunk 日志显示为十六进制