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

我想控制网站的外观和感觉,在那里我有一个用户输入用户名/密码的表单。然后我会查询 NTLM 以验证提供的信息,如果有效,将它们重定向到虚拟目录?

最佳答案

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

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

但是请记住几点:

  • 不要忘记,与 NTLM 不同,除非您使用 SSL 发布网站,否则用户密码将以明文形式传输。您永远不应该允许用户在未加密的网站上输入他们的 AD 密码。
  • 如果您的某些用户之前自动进行了身份验证(透明登录,根本不提示输入密码),这应该是 Intranet 场景中的默认行为,这些用户不会喜欢您的登录表单,无论它看起来多么漂亮。 ..
  • IIS6 中的默认行为是只保护由 ASP.NET 生成的页面;由于您必须配置 IIS 以允许对应用程序进行匿名请求,因此任何用户都可以请求静态文件。
  • 关于asp.net - 使用自定义 (asp.net) 表单的 NTLM 身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2210483/

    10-12 14:49
    查看更多