gpt4 book ai didi

c++ - Web 服务器端应用程序的 NTLM 身份验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:12:34 31 4
gpt4 key购买 nike

我用 C++ 编写的基于 Windows 的应用程序(基本上是一个 HTTP/1.1 代理服务器)监听来自不同用户的请求。目前它能够发送 407 Basic Challenge,并处理来自 Headers 的响应。我知道我必须修改质询 header ,以便客户端浏览器做出基于 NTLM 的响应以进行身份​​验证。但我的问题是 - 如何为 407 身份验证质询生成正确的 token 、随机数等,然后如何验证收到的响应是否正确?最后,如果可能的话,我想记录客户的用户名和其他 LDAP/ADS 属性。

请善待,如果已经有讨论类似内容的主题,请将我重定向到正确的帖子。对 WWW 的大多数研究只将我引向客户端编程,很少或几乎没有 - 对于必须在 HTTP 服务器中完成的编码。

这里所有伟大的黑客,提前非常感谢。

最佳答案

简短的回答是我认为这 Using SSPI with a Windows Sockets Server样本是您最好的起点,它应该演示您需要的基本 SSPI 调用。它是为普通 TCP 服务器编写的,但挑战/响应数据是通过 HTTP 发送的,没有太多额外的复杂性。

[MS-N2HT]: Negotiate and Nego2 HTTP Authentication Protocol

我支持审查的建议 the mod_auth_sspi for Apache code

就个人而言,我也会尝试将低级调试器附加到 IIS,看看他如何调用 SSPI 函数,但这可能不适合您。

在您对 SSPI 有了一定的了解之后,获取用户名应该是小菜一碟(但询问您是否需要帮助)。可以使用这些 API 查询用户的 LDAP/AD 属性。

长答案涉及少量阅读:

Integrated Windows Authentication in Wikipedia

SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows

HTTP-Based Cross-Platform Authentication via the Negotiate Protocol (Part 1 of 3)

第 3 部分也有一些有趣的代码示例。

希望这对您有所帮助!

关于c++ - Web 服务器端应用程序的 NTLM 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1170290/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com