成员身份凭据验证失败

本文关键字:验证 失败 身份 成员 | 更新日期: 2023-09-27 18:20:58

我遇到此错误:成员身份凭据验证失败。当我尝试使用基于表单的身份验证在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中的提供者部分:

<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);
    }

成员身份凭据验证失败

基于那篇博客文章:http://erlend.oftedal.no/blog/?blogid=71

我似乎问题的根源是我使用了ActiveDirectoryMembershipProvider,它专门管理代理程序。

此外,正如我在那里发现的:http://directoryprogramming.net/forums/thread/4181.aspx

AD LDS或ADAM不能使用安全绑定,这不是通过安全连接(使用SSL)进行的简单绑定。但是我要绑定的Active Directory仅使用安全绑定。

因此,如果我使用基于Windows的身份验证,我的AD用户可以进行身份验证,但不能对ADAM进行身份验证;如果我使用的是基于表单的ADAM,则可以对其进行身份验证但不能对AD进行身份验证。

总之,我必须创建我自己的提供者,该提供者将使用多个上下文指定的主体上下文作为DJ KRAZE

老问题,但在我的情况下,这是由于配置文件中缺少attributeMapUsername="sAMAccountName"引起的。