Вход в Active Directory - непоследовательное исключение DirectoryEntry - PullRequest
2 голосов
/ 13 мая 2010

Мне нужно проверить пользователя LDAP, проверив, существует ли такое имя пользователя в указанном домене. Для этого я использую этот код -

DirectoryEntry entry = new DirectoryEntry("LDAP://" + strDomainController);
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "SAMAccountName=" + strUserName;
SearchResult result = searcher.FindOne();
return (result != null) ? true : false;

Это метод в библиотеке классов, на который я собирался ссылаться и использовать везде, где мне нужна эта функциональность в моем проекте.

Чтобы проверить это, я создал простое тестовое приложение. Тест происходит так -

Console.WriteLine(MyClassLib.MyValidateUserMethod("UserName", "Domain",ref strError).ToString());

Проблема, с которой я сталкиваюсь, заключается в том, что это работает нормально, когда я тестирую его с моим testapp, но в моем проекте, когда я пытаюсь использовать тот же метод с теми же учетными данными - объект DirectoryEntry вызывает исключение "System.DirectoryServices.DirectoryServicesCOMException" search.Filter завершается ошибкой и выдает ex = {"Ошибка входа в систему: неизвестное имя пользователя или неверный пароль. \ r \ n"} исключение.

Я пытался подражать, но это не помогает. Так или иначе, тот же метод работает в mytestapp и не работает в моем проекте. Оба эти приложения находятся в моей локальной машине разработчика. Что мне не хватает? Есть идеи?

Ответы [ 2 ]

1 голос
/ 21 мая 2010

Я испробовал почти все возможные решения, которые мог найти в каждом таком потоке, но я все еще не мог разрешить его.

Я попытался повторить все это, и затем это сработало.Я думаю, что причина того, что он работал с моим тестовым приложением, а не с моим проектом, заключается в том, что мой проект хранился в сетевом расположении, а мое тестовое приложение хранилось на жестком диске моего компьютера.

Он начал нормально работать с моим проектом, когда я скопировал свой проект на жесткий диск моего компьютера.Мое предположение состоит в том, что, поскольку проект находился в сети, возможно, не было достаточно разрешений для проверки LDAP.

0 голосов
/ 13 мая 2010

Вы уверены, что ваше тестовое приложение и ваше реальное приложение работают под одним и тем же пользователем, поэтому они имеют одинаковые разрешения в AD? Хотя исключения, выдаваемые объектами DirectoryEntry, сложно устранить, это первое, что я проверю. Что это за проект - веб-приложение или настольное приложение? Если это веб-приложение, то пользователь, запускающий пул приложений, может не иметь необходимых разрешений.

...