3

是否可以使用 GSSAPI 进行 NTLM v1/v2 身份验证?我正在尝试构建一个 Web 服务器,非常像 squid / apache,但我想使用 NTLM / Negotiate 协议对可能使用 IE / FireFox 的客户端进行身份验证。我尝试使用 heimdal 库,但根本无法让 gss_accept_sec_context 工作。它只是因“请求了不受支持的机制”而失败。我可以确认,在尝试 gss_accept_sec_context 之前调用 gss_acquire_cred 时,服务主体名称、spnego 的 OID 等确实正确发生。是的,当然,我通过 base64 解码授权标头提取了从客户端收到的令牌。我正在使用 C++,并在 debian 上进行试验。我相信这里有一位出色的黑客知道更多,希望能分享一些重要的线索。

提前致谢。

4

3 回答 3

1

Heimdal 的 NTLM 库也支持客户端。您可以使用库原语生成 type1、2 和 3 消息,它会起作用。但是,我不知道您能否为此目的在 Heimdal 的顶部使用 GSS-API。我假设测试,你也可以这样做。

于 2013-11-26T17:39:04.630 回答
1

我不确定 Heimdal 库以及它是否适用于 GSS,但 gss ntlm ssp特别声称是一个 gss 库。我希望您需要下载并构建它,然后您需要设置 /etc/gss/mech(或 Debian 和 Ubuntu 上的 /usr/etc/gss/mech)指向库。构建系统将在其示例目录中的 mech 文件中创建您需要的示例。

在 spnego 下运行它可能会遇到麻烦。当 Windows 将 NTLM 作为协商包的首选机制时,它会发送原始 NTLM 令牌而不是 RFC 4178 中定义的 SPNEGO 令牌。不过,这段代码肯定会让您走得更远;它肯定会通过 gss_accept_sec_context 指示不受支持的机制。

于 2013-12-05T02:06:49.690 回答
1

Heimdal GSSAPI 库支持 SPNEGO、NTLMv1/v2 和 KRB5。他们还拥有原始 NTLM 库,您可以使用它来自己实现协议。

https://www.h5l.org/manual/HEAD/gssapi/

于 2018-04-25T12:24:31.733 回答