我正在尝试使用 NTLMv2 对代理进行身份验证。但反过来,我得到的是使用 NTLMv1 的身份验证。代理支持这两种类型,并且客户端在域之外(但具有所需的凭据)。
客户端在 CentOS 6 上运行。代理是 Squid,也在 CentOS 6 上运行。Windows 2019 作为 AD。
如果我使用 HTTP 客户端 4.5 尝试我的 PoC,我在 Wireshark 中看到在协商期间(消息类型 1)FLAG_REQUEST_TARGET
未设置。查看里面的 HTTP 客户端,NTLMEngineImpl
我看到:
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()
我看不到任何地方都设置了标志。
从带有 IE 的 Windows 机器上,如果我发出请求,我会在 Wireshark 中看到该FLAG_REQUEST_TARGET
集合,并且在协商后它最终使用 NTLMv2 时使用相同的代理集。
那么,有没有办法让我使用 HTTPClient 4.5 设置这个标志?