mdk*_*mdk 4 c c++ ntlm http-authentication
我用C++编写的基于Windows的应用程序(基本上是HTTP/1.1代理服务器)监听来自不同用户的请求.目前它能够发送407基本挑战,并处理来自标题的响应.我知道我必须修改挑战标题,以便客户端浏览器为验证目的而制作基于NTLM的响应.但我的问题是 - 如何为407认证挑战生成正确的令牌,随机数等,然后如何验证收到的响应是否正确?最后,我想尽可能记录客户端的用户名和其他LDAP/ADS属性.
请善待,如果已经有任何线程讨论类似的话,请将我重定向到正确的帖子.大多数关于WWW的研究只引导我进行客户端编程,非常少或几乎没有 - 对于必须在HTTP服务器中进行的编码.
你们所有人都非常喜欢这里,提前感谢你们.
简短的回答是,我认为使用带有Windows套接字服务器示例的SSPI是您最好的起点,它应该演示您需要的基本SSPI调用.它是为普通的TCP服务器编写的,但挑战/响应数据是通过HTTP发送的,没有太多额外的复杂性.
我的第二个建议是审查Apache代码的mod_auth_sspi
就个人而言,我也会尝试将一个低级调试器附加到IIS,看看他如何调用SSPI函数,但这可能不是你的一杯茶.
在您使用SSPI达到目标之后,获取用户名应该是小菜一碟(但询问您是否需要帮助).可以使用这些API查询用户的LDAP/AD属性.
答案很长,几乎没有光线阅读:
Microsoft Windows中基于SPNEGO的Kerberos和NTLM HTTP身份验证
通过协商协议进行基于HTTP的跨平台认证(第1部分,共3部分)
第3部分也有一些有趣的代码示例.
希望这可以帮助!