【问题标题】:Java HTTPClient 4.5 with NTLM, can't get NTLMv2 authentication带有 NTLM 的 Java HTTPClient 4.5,无法获得 NTLMv2 身份验证
【发布时间】: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


    【解决方案1】:

    我参加了 JCIFS。

    虽然我也有一个 NTLEngineImpl 的包装器,所以,实现 NTLEngine 我只需要覆盖 TYPE1 消息(并从真正的 Imp 中获取代码,但添加一个新标志)。

    不管怎样,如前所述,我最终去了另一个图书馆。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多