Неизвестное имя пользователя или неверный пароль, LDAP Active Directory - PullRequest
2 голосов
/ 18 ноября 2011

Я пытаюсь пройти аутентификацию в AD, используя режим приложения (ADAM), но получаю неизвестное имя пользователя или неверный пароль. Если я проверяю логин в LDP.exe, он без проблем входит в систему, используя простое связывание. Я просмотрел все похожие посты с той же проблемой, но не решил ее, какие-либо предложения, что я должен проверять?

private bool ValidateActiveDirectoryLogin(string Username, string Password)
{
   bool Success = false;

   System.DirectoryServices.DirectoryEntry Entry = new System.DirectoryServices.DirectoryEntry("LDAP://localhost:389/OU=Users,O=TestDirectory", Username, Password);
   System.DirectoryServices.DirectorySearcher Searcher = new System.DirectoryServices.DirectorySearcher(Entry);
   Searcher.SearchScope = System.DirectoryServices.SearchScope.Subtree;

   try
   {
      System.DirectoryServices.SearchResult Results = Searcher.FindOne();
      Success = (Results != null);
   }
   catch (Exception ex)
   {
      Success = false;
      throw;
   }
   return Success;
}

1 Ответ

0 голосов
/ 18 ноября 2011

Определите, в каком контексте ваше приложение попадает в AD. Если у вашего удостоверения пула приложений ASP.NET низкий уровень привилегий, у него не будет достаточно разрешений для запроса активного каталога. Если вы не хотите создавать пользовательского пользователя для запуска пула приложений с соответствующими разрешениями - вы можете использовать LogonUser API , чтобы выполнить вызов ValidateActiveDirectoryLogin в контексте безопасности этой учетной записи.

Наконец, вы должны рассмотреть возможность использования System.DirectoryServices.AccountManagement , если вы используете .NET 3.5 или выше.

Вы можете использовать код как

bool validCreds = false;
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
 {
     validCreds = context.ValidateCredentials( username, password );
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...