我遇到了这个错误:会员凭证验证失败。当我尝试使用基于表单的身份验证在 ASP.NET 应用程序中使用 Active Directory 用户登录时。
我有一个复杂的设置如下:
我正在使用 Active Directory 轻量级目录服务 (Ad LDS),即 ADAM 作为成员存储库。我使用代理用户将它绑定到 Active Directory 并完成了 adamsync。我为 AD LDS 配置了 SSL 证书。使用 LDP.exe 连接到 AD LDS 时,我能够与 AD LDS 用户或 AD 用户连接/绑定,所以代理没问题。我的 ASP.NET 应用程序与 AD LDS 对话,我能够使用基于表单的身份验证成功登录 AD LDS 用户。
但是我无法使用 ASP.NET 应用程序登录我的 AD 用户,我错过了什么?
这是我的 web.config 中的 Provider 部分:
<add name="MyADConnectionString"
connectionString="LDAP://localhost/OU=Users,DC=PreuveConcept,DC=local" />
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
<providers>
<clear/>
<add name="AspNetActiveDirectoryMembershipProvider"
type="System.Web.Security.ActiveDirectoryMembershipProvider"
connectionStringName="MyADConnectionString"
connectionProtection="Secure"
enableSearchMethods="true"/>
</providers>
</membership>
这是我的登录操作(默认 MVC AcountControler):
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.UserName, model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}