ASP.NET表单身份验证+NTLM+LDAP

4
我正在尝试为一个使用表单认证的现有ASP.NET网站添加LDAP支持。这并不是一个大问题,我只需构建一个简单的登录对话框(普通的HTTP POST),查询LDAP目录并通过表单认证票证将用户登录。
如果可以自动获取用户凭据(通过NTLM(集成Windows身份验证))而无需登录对话框,那将非常好(就像在同一Active Directory中使用ASP.NET Windows身份验证时所得到的)。是否有简单的方法做到这一点(请记住,我不能为我的ASP.NET应用程序使用Windows身份验证,并且服务器不在Active Directory域中,因此我需要能够手动查询LDAP目录)?还是我必须手动完成所有LDAP握手/挑战/响应的过程?
谢谢您的帮助, ~ saxx

也许这个链接可以帮到你:http://msdn.microsoft.com/zh-cn/library/ff650307.aspx。它是一个构建自定义元成员提供程序的指南,这样你就可以获得所有的成员功能。 - Menahem
1个回答

1

我在我的内部网络上做了这个。以下是我使用的步骤...

  • 创建一个登录页面(login.aspx看起来不错),并将Web应用程序设置为表单身份验证。将授权设置为拒绝匿名。这意味着任何尝试使用您的应用程序的用户,如果他们没有身份验证票证,都会被重定向到您的登录页面。
  • 现在是重要的一步。在IIS中,将应用程序设置为仅允许匿名。在您的登录页面上,将此更改为仅为Windows集成。现在发生的情况是当用户被弹回到您的登录页面时,IIS会强制进行NTLM身份验证。我们现在在标头中有用户名称。
  • 第二个重要的步骤。在page_load方法中添加:

    FormsAuthentication.RedirectFromLoginPage(Request.ServerVariables["Logon_user"], false); 这样做的作用是将IIS始终给我们的用户名放入表单身份验证票证中。

当然,您可能需要进行一定程度的整理,例如添加注销功能或剥离用户名的域名。

西蒙


非常感谢您提供的解决方案。对于我非常迟的回复,深感抱歉。 - Hannes Sachsenhofer
@Simon,关于你的第二步,你如何将Windows集成模式设置为仅登录页面? - notlkk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接