Bob*_*ule 4 java authentication ntlm apache-httpclient-4.x
我通过以下方式“强制” httpclient进行ntlm身份验证:
PoolingHttpClientConnectionManager connPool connPool = new PoolingHttpClientConnectionManager();
Lookup<AuthSchemeProvider> authProviders = RegistryBuilder.<AuthSchemeProvider>create()
.register(AuthSchemes.NTLM, new NTLMSchemeFactory())
.build();
CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connPool).setDefaultAuthSchemeRegistry(authProviders).build();
Run Code Online (Sandbox Code Playgroud)
但是,在对服务器进行身份验证时,我收到一条烦人的日志消息“不支持身份验证方案协商”。
我如何摆脱此消息?
(这将在Linux机器上运行,因此HttpClient 4.4 JNA对本机身份验证的支持将无济于事。)
我认为这非常简单。实际上,客户端只愿意做,NTLM
而服务器只愿意做Negotiate
,因此无法就通用的身份验证方案达成共识。
这是一种可以调整身份验证方案首选项以强制HttpClient在SPNEGO / Kerberos之上选择NTLM的方式
RequestConfig config = RequestConfig.custom()
.setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.KERBEROS, AuthSchemes.SPNEGO))
.build();
CloseableHttpClient client = HttpClients.custom()
.setDefaultRequestConfig(config)
.build();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5976 次 |
最近记录: |