【发布时间】:2010-08-04 03:17:39
【问题描述】:
我需要为 IIS7 编写一个身份验证模块,其行为与 NTLM 完全相同,但需要进行一些额外的检查。模块对 Active Directory 执行 NTLM(以便模块知道用户是否正常),然后需要调用另一个服务来最终验证访问。
我必须在身份验证模块中执行此操作,因为 IIS 网站上的实际内容是通过自定义 IIS 模块提供的,该模块对我来说是一个黑盒,我无法修改客户端,因为它也是一个黑盒。另外,我不能使用 Windows 安全组,因为我需要调用的服务有它自己的用户数据库。
我发现这篇关于写custom Authentication provider 的文章,但我真的不知道如何针对 Active Directory/Windows 验证用户。
有人对我如何实施 NTLM 有一些提示吗?不一定要以 IIS 为中心,我的问题更多的是“我从客户端的浏览器中得到什么以及如何验证它”?
【问题讨论】:
-
要对 AD 进行“身份验证”,您可以尝试使用给定的用户名和密码进行连接 - 例如
DirectoryEntry entry = new DirectoryEntry("LDAP://ldapdomain", userName, password);- 如果有效,则用户和密码有效。然后您应该能够找到用户组等。希望我没有完全误解您在寻找什么。这里有很多例子codeproject.com/KB/system/everythingInAD.aspx -
@Nate 问题是我从来没有得到密码,因为 NTLM 使用哈希/握手而不是通过网络发送真实密码(这将是基本身份验证)。不过还是谢谢。
-
啊,我明白了 - 您链接到的示例自定义身份验证提供程序听起来像是您将获得用户/密码 :) 那些混蛋 :)
标签: .net authentication iis-7 windows-authentication ntlm