我正在使用 NTLM 协议编写 Web 应用程序身份验证用户。
我已成功从客户端获取密码的 NT 和 LM 哈希。我如何针对 Active Directory 验证它们以确保密码正确。
我正在使用 C#,但我认为我也可以调用本机库。
编辑:我看不出拒绝投票的理由。NTLM(v2) 协议已经过时,因此很难找到有关如何处理它的相关信息。尤其是在像 C# 这样的现代语言中。
但我发现了两种可能的方法:
- 使用 Windows 的本机 SSPI 调用(Microsoft 不推荐),但可以通过适当的包装。幸运的是,有一个例子: http: //pinvoke.net/default.aspx/secur32/InitializeSecurityContext.html这种方法似乎有效。我能够验证帐户。但是仍然存在一些问题。例如在客户端的 HTTP 请求之间传输有关服务器安全上下文的信息,调用不安全的代码以及无法在其他系统上执行此类操作。
- 尝试通过
System.Net.Security.NegotiateStream
. 这个想法很好,但不知道如何实现这一点。