【发布时间】:2019-01-27 19:34:15
【问题描述】:
我正在尝试使用 NTLMv2 对代理进行身份验证。但反过来,我得到的是使用 NTLMv1 的身份验证。代理支持这两种类型,并且客户端在域之外(但具有所需的凭据)。
客户端在 CentOS 6 上运行。 代理是 Squid,也在 CentOS 6 上运行。 Windows 2019 作为 AD。
如果我使用 HTTP 客户端 4.5 尝试我的 PoC,我在 Wireshark 中看到在协商期间(消息类型 1)FLAG_REQUEST_TARGET 未设置。看看NTLMEngineImpl里面的HTTP Client我明白了:
static String getType1Message(final String host, final String domain) throws NTLMEngineException {
// For compatibility reason do not include domain and host in type 1 message
//return new Type1Message(domain, host).getResponse();
return TYPE_1_MESSAGE.getResponse();
}
在String getResponse() 内,我看不到任何地方设置了标志。
如果我在 Wireshark 中看到 FLAG_REQUEST_TARGET 集,并且在协商后它最终使用 NTLMv2,则从带有 IE 的 Windows 机器上使用相同的代理集。
那么,有没有办法让我使用 HTTPClient 4.5 设置这个标志?
【问题讨论】:
标签: java apache-httpclient-4.x ntlmv2