Не удалось запросить AD без отличительного имени в SearchRequest?
Я запускаю тест Active Directory и пытаюсь выполнить запрос с помощью ldap. Я создал объект searchrequest с пустым дистрибутивным именем и фильтром, который выбрасывает код ошибки noSuchObject с сообщением "объект не существует". Я получаю это только из своей тестовой AD, если я использую производственную AD моей компании, я не получаю исключения, просто ответ без попадания. Что мне нужно изменить в моей тестовой AD, чтобы увидеть подобное поведение?
3 ответа
Спасибо за другие ответы. Я решил свою проблему, используя порт GC 3268 вместо порта 389 DC в соединении.
@marc_s ответил, дав вам способ поиска
Вернемся к вашему вопросу, просто отзыв:
Поиск LDAP
- Кличка, с которой вы просите начать поиск (в вашем случае DN вашей OU)
- Объем вашего поиска (базовый, одноуровневый, поддерево)
- Фильтр вашего поиска ((objectClass=group))
- Атрибуты, которые вы хотите получить
В вашем случае это работает, когда ваш уровень ADSI может найти домен по умолчанию. Так что я думаю, что вы должны создать реальный запрос LDAP-SEARCH и, возможно, также предоставить учетные данные.
Вы можете использовать PrincipalSearcher
и принцип "запрос за примером" для поиска:
// create your domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
// define a "query-by-example" principal - here, we search for a UserPrincipal
// and with specified last name (surname)
UserPrincipal qbeUser = new UserPrincipal(ctx);
qbeUser.Surname = "Willis";
// create your principal searcher passing in the QBE principal
PrincipalSearcher srch = new PrincipalSearcher(qbeUser);
// find all matches
foreach(var found in srch.FindAll())
{
// do whatever here - "found" is of type "Principal" - it could be user, group, computer.....
}
Если вы еще этого не сделали - обязательно прочитайте статью MSDN " Управление принципами безопасности каталогов" в.NET Framework 3.5, которая показывает, как наилучшим образом использовать новые функции в System.DirectoryServices.AccountManagement
Конечно, в зависимости от ваших потребностей, вы можете захотеть указать другие свойства для этого пользовательского субъекта "запрос за примером", который вы создаете:
Surname
(или фамилия)DisplayName
(обычно: имя + пробел + фамилия)SAM Account Name
- имя вашей учетной записи Windows/ADUser Principal Name
- ваше имя в стиле "username@yourcompany.com"
Вы можете указать любое из свойств на UserPrincipal
и использовать их как "запрос за примером" для вашего PrincipalSearcher
,