Jersey客户端是否支持NTLM代理

时间:2014-01-24 10:53:19

标签: java http ntlm jersey-client proxy-authentication

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

1 个答案:

答案 0 :(得分:3)

是的,可以将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);

请注意:我正在使用带有Jersey客户端的Apache HttpClient连接器 - 如果您使用的是another client transport connector,则可能需要稍微不同的代码。

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

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