Подтвердить что ты не робот

Поиск пользователей в нескольких доменах Active Directory

Я использую System.DirectoryServices.AccountManagement для обеспечения пользовательских функций поиска.

В бизнесе есть несколько доменов AD, специфичных для региона: AMR, EUR, JPN и т.д.

Следующие действия для домена EUR, но не возвращают пользователей из других доменов (естественно):

var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=eur,DC=mycorp,DC=com");

var query = new UserPrincipal(GetContext());

query.Name = "*Bloggs*";

var users = new PrincipalSearcher(query).FindAll().ToList();

Однако, если я нацелен на весь каталог, он не возвращает пользователей из любых доменов, специфичных для региона:

var context = new PrincipalContext(ContextType.Domain, "mycorp.com", "DC=mycorp,DC=com");

Как выполнить поиск по всему каталогу?

Обновление

Прочитайте "Как работает поиск в Active Directory":

http://technet.microsoft.com/en-us/library/cc755809(v=ws.10).aspx

Если я суффикс имени сервера с портом 3268, он ищет глобальный каталог:

var context = new PrincipalContext(ContextType.Domain, "mycorp.com:3268", "DC=mycorp,DC=com");

Однако это очень, очень медленно. Любые предложения о том, как повысить производительность?

4b9b3361

Ответ 1

Запросы, которые имеют начальные подстановочные знаки (*Bloggs*), будут медленными, если у вас нет индекса кортежа в запросе атрибута. Ни один из атрибутов в AD не установлен по умолчанию. Лучше не делать начальные подстановочные знаки.