使用自定义(asp.net)表单的NTLM身份验证

时间:2010-02-05 21:16:01

标签: asp.net ldap forms-authentication

是否可以使用NTLM以编程方式验证用户(在asp.net上)?

我希望控制网站的外观和风格,我会在其中输入用户输入用户名/密码的表单。然后,我会查询NTLM以验证提供的信息,如果有效,则将它们重定向到虚拟目录?

1 个答案:

答案 0 :(得分:5)

NTLM是Web浏览器直接与Web服务器(例如IIS)通信以协商用户的协议,而不涉及您的应用程序。这就是你想要避免的,因为你想呈现一个“漂亮”的登录表单。

因此,您需要做的是:在表单中提示输入用户名和密码,并自行验证这些凭据对Active Directory。这是一篇Microsoft文章,描述了如何在ASP.NET中执行此操作:http://support.microsoft.com/kb/326340/en-us

但请记住以下几点:

  • 不要忘记,与NTLM的情况不同,用户的密码将以明文形式传输,除非您使用SSL发布网站。您永远不应该允许用户在未加密的网站上输入他们的AD密码。
  • 如果您的某些用户之前已经过自动身份验证(透明登录,根本没有提示密码),这应该是Intranet方案中的默认行为,这些用户不会喜欢您的登录表单,无论它有多好看起来...
  • IIS6中的默认行为是,只有ASP.NET生成的页面才会受到保护;因为您必须配置IIS以允许对应用程序的匿名请求,所以任何用户都可以请求静态文件。