java HttpClient与NTLM身份验证提供程序发生协商错误
我正在通过以下方式“强制”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();
但是,当向服务器进行身份验证时,我会收到一条恼人的日志消息“Authentication scheme Agreement not supported”
我怎样才能摆脱这个信息
(这将在linux机器上运行,因此对本机身份验证的HttpClient 4.4 JNA支持没有帮助。)
# 1 楼答案
我认为这一切都很简单。实际上,客户端只愿意执行
NTLM
,而服务器只愿意执行Negotiate
,因此无法就通用身份验证方案达成一致这就是如何调整身份验证方案首选项,以迫使HttpClient选择NTLM而不是SPNEGO/Kerberos