我遇到此错误:成员资格凭证验证失败。当我尝试使用基于表单的身份验证在ASP.NET应用程序中使用Active Directory用户登录时。成员资格凭证验证失败
我有一个复杂的设置,如下图所示:
我使用的是Active Directory轻型目录服务(AD LDS),又名亚当会员库。 我使用代理用户将其绑定到Active Directory并完成adamsync。 我为AD LDS配置了SSL证书。 使用LDP.exe连接到AD LDS时,我可以连接/绑定AD LDS用户或AD用户,因此代理服务器正常。 我的ASP.NET应用程序与AD LDS对话,我能够使用基于表单的身份验证成功地与AD LDS用户进行登录。
但我无法登录与我的AD用户与ASP.NET应用程序,我错过了什么?
继承人从我的web.config我的提供者部分:
<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);
}
你可以发布你的代码..。你有没有考虑过看PrincipalContext ..?你是如何传递DC = CN =等...?在网络配置或ASP.NET类 – MethodMan
也请看看这里的网站点击ContextOptions链接它说选项http://msdn.microsoft.com/en-us/library/bb300969.aspx | http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.contextoptions.aspx PrincipalContext可能是您更好的选择 – MethodMan
我没有检查PrincipalContext,因为我使用ActiveDirectoryMembershipProvider,我假设它能够执行此类连接。 – Groumy