Поиск в Active Directory глобального каталога при использовании Sys.AD.AM .Net 3.5 Class - PullRequest
0 голосов
/ 09 июля 2010

Я использую класс System.DirectoryServices.AccountManagement для запросов к Active Directory.

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

string domain = "MYDOMAIN";
PrincipalContext ctx= new PrincipalContext(ContextType.Domain, domain);

Обычно это не будет проблемой, однако у нас есть пользователи, которые существуют на поддомене. Я нашел способ поиска информации об их аккаунте, проанализировав информацию о домене из их user.identity.name.

string loggedUser = User.Identity.Name;
string domain = loggedUser.Split(new char { '\\' })[0];
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, domain);
using (ctx) {
  // Do searches, etc. here
}

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

Используя старый веб-сервис поиска каталогов, мы можем запрашивать Глобальный каталог (GC) и находить пользователя независимо от его домена или субдомена, поскольку домены являются доверенными ... Я ищу то же самое «особенность» поиска GC с использованием нового класса S.DS.AM 3.5. Это вообще возможно?

1 Ответ

0 голосов
/ 16 февраля 2011

Во-первых, домен не требуется:

var principalContext = new PrincipalContext(ContextType.Domain);

Но это тебе не поможет. Я думаю, вам нужно построить список доменов. Тогда вы можете использовать S.DS.AM для поиска в каждом домене. Вы можете создать свой список доменов, используя объект S.DS.ActiveDirectory Forest. Или вы можете выполнить поиск GC, используя S.DS.DirectorySearcher, используя моникер GC: //.

...