2012-01-20 9 views
2

Я столкнулся с этой ошибкой: проверка учетных данных для членства не удалась. когда я пытаюсь войти в систему с пользователем 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, чего я пропустил?

Heres мой провайдер Раздел из моего 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> 

Heres мой Войти действие (по умолчанию 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); 
    } 
+0

Можете ли вы опубликовать свой код .... также вы рассмотрели вопрос о PrincipalContext ..? как вы проходите DC = CN = и т. д.?? в веб-конфигураторе или классе ASP.NET – MethodMan

+0

Также ознакомьтесь с этим сайтом там. Щелкните ссылку ContextOptions, где указано Параметры: http://msdn.microsoft.com/en-us/library/bb300969.aspx | http://msdn.microsoft.com/en-us/library/system.directoryservices.accountmanagement.contextoptions.aspx PrincipalContext может быть вашим лучшим вариантом – MethodMan

+0

Я не проверял PrincipalContext, так как я использую ActiveDirectoryMembershipProvider, я предположил, что он смог выполнить такую ​​связь. – Groumy

ответ

1

базы на этом блоге: http://erlend.oftedal.no/blog/?blogid=71

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

ценам добавляется, как я нашел там: http://directoryprogramming.net/forums/thread/4181.aspx

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

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

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

0

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

Смежные вопросы