Проверка учетных данных участника не удалась - PullRequest
2 голосов
/ 20 января 2012

Я сталкиваюсь с этой ошибкой: проверка учетных данных не выполнена.когда я пытаюсь войти в систему с пользователем Active Directory в приложении ASP.NET, используя аутентификацию на основе форм.

У меня сложная конфигурация, как указано ниже:

Я использую облегченный Active DirectoryСлужбы каталогов (Ad LDS), также называемые ADAM в качестве хранилища членства.Я связал его с Active Directory с прокси-пользователями и завершил adamsync.Я настроил сертификат SSL для AD LDS.Хотя я подключен к AD LDS с помощью LDP.exe, я могу подключаться и связываться как с пользователями 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);
    }

Ответы [ 2 ]

1 голос
/ 23 января 2012

Основываясь на этом сообщении в блоге: http://erlend.oftedal.no/blog/?blogid=71

Похоже, источником моей проблемы является то, что я использую ActiveDirectoryMembershipProvider, и он специально исключает прокси-пользователей.

Additionnaly, как я выяснилтам: http://directoryprogramming.net/forums/thread/4181.aspx

AD LDS или ADAM не могут использовать безопасное связывание, которое не является простым связыванием через безопасное соединение (с использованием SSL).Но Active Directory, для которого я хочу выполнить привязку, использует только Secure Bind.

Так что, если я нахожусь в режиме аутентификации на основе Windows, мои пользователи AD могут проходить проверку подлинности, но не ADAM, и если я использую ADAM на основе форм, я могубыть аутентифицированным, но не AD.

В заключение я должен создать своего собственного провайдера, который будет использовать в качестве DJ KRAZE указанный основной контекст с несколькими контекстами

0 голосов
/ 08 января 2015

Старый вопрос, но в моем случае это было вызвано отсутствием attributeMapUsername="sAMAccountName" в файле конфигурации.

...