这个link详细介绍了各种http客户端的java实现 . 我正在寻找任何可以提供有关其NTLM协议实现差异的信息的链接 .
在其中一台Windows机器上,我发现commons-http客户端3.1实现失败并出现授权错误(http状态代码401),但java 1.5实现成功 . 由于NTLM身份验证协议的java 1.5实现不是开源的,我无法比较这两个实现以了解可能出现的问题 .
Update 1
我知道commons http客户端不支持NTLM v2 . 这个link提供了各种java http客户端实现之间的比较,并提到apache http客户端提供了NTLM协议的 partial 实现 . 它没有详细介绍它 .
在进一步解决问题时,我还发现this link与HTTPClient组合提供的NTLM实现在Windows机器上工作(公共http客户端实现不能像我上面提到的那样工作) .
Update 2
通过嗅探数据包(使用wireshack),我意识到公共http客户端3.1 ntlm协议实现不会在Type 3消息中生成NTLM响应 . 这是由JDK实现生成的 . 您是否知道任何服务器/客户端设置,如果NTLM响应数据为空,则表明身份验证失败? (因为我们面临的身份验证失败只能在一台计算机上重现 . 身份验证在其他位置成功 . )