【发布时间】:2011-08-22 13:40:50
【问题描述】:
link 详细介绍了各种 http 客户端 java 实现。我正在寻找任何可以提供有关其 NTLM 协议实现差异信息的链接。
在其中一台 Windows 机器上,我发现 commons-http 客户端 3.1 实现失败并出现授权错误(http 状态代码 401),但 java 1.5 实现成功。由于 NTLM 身份验证协议的 java 1.5 实现不是开源的,因此我无法比较这两种实现以了解可能出现的问题。
更新 1
我知道 commons http 客户端不支持 NTLM v2。这个link 提供了各种java http 客户端实现之间的比较,并提到apache http 客户端提供了NTLM 协议的部分 实现。它没有详细说明。
在进一步解决问题时,我还发现this link 结合HTTPClient 提供的 NTLM 实现在 windows 机器上工作(正如我上面提到的那样,commons http 客户端实现不起作用)。
更新 2
通过嗅探数据包(使用wirehack),我意识到commons http 客户端3.1 ntlm 协议实现不会在Type 3 消息中生成NTLM 响应。这是由 JDK 实现生成的。您是否知道任何服务器/客户端设置表明如果 NTLM 响应数据为空,则身份验证将失败? (因为我们面临的身份验证失败只能在一台机器上重现。身份验证在其他地方成功。)
【问题讨论】:
标签: java windows ntlm apache-commons-httpclient