Получить другие строки запроса ldap, связанные с доменом - PullRequest
0 голосов
/ 04 января 2011

У меня в администрировании Softerra LDAP что-то вроде следующего:

сервер: blah.gov
OU = контроллеры домена и т. Д. *
ldap: // поддомен .blah.gov

Я не могу понять, как в C # получить эти другие строки запроса поддомена ldap.

Я не уверен, как ещеобъясните, так что задавайте вопросы, и я постараюсь уточнить.

Обновлено: так выглядит Softerra LDAP Administrator.Запросы ldap внизу не являются дочерними элементами вышеупомянутого узла, но каким-то образом программа знает о них и связывает их в графическом интерфейсе.Если бы я мог понять, как, это решило бы мою проблему.

Хостинг изображений и видео от TinyPic http://i53.tinypic.com/2iidf8o.png

Ответы [ 2 ]

2 голосов
/ 07 января 2011

Вы должны использовать Глобальный каталог, чтобы выполнить глобальный поиск по всему вашему лесу. Если вы привяжете свой DirectorySearcher к своему глобальному каталогу, он должен предоставить вам все объекты, включая ваши дочерние домены.

Если в вашем лесу нет глобального каталога или у вас нет разрешения на привязку к глобальному каталогу (очень редко), вам нужно перечислить все домены в вашем лесу и выполнить запрос LDAP один за другим и агрегировать результаты самостоятельно.

Вот пример функции, которую я чертю для справки.

IEnumerable<SearchResult> Search(string domain, string filter)
{
    DirectoryContext context = new DirectoryContext(DirectoryContextType.Forest, domain);
    Forest forest = Forest.GetForest(context);
    GlobalCatalog gc = null;
    try
    {
        gc = forest.FindGlobalCatalog();
    }
    catch (ActiveDirectoryObjectNotFoundException)
    {
        // No GC found in this forest
    }

    if (gc != null)
    {
        DirectorySearcher searcher = gc.GetDirectorySearcher();
        searcher.Filter = filter;
        foreach (SearchResult result in searcher.FindAll())
        {
            yield return result;
        }
    }
    else
    {
        foreach (Domain d in forest.Domains)
        {
            DirectorySearcher searcher = new DirectorySearcher(d.GetDirectoryEntry(), filter);
            foreach (SearchResult result in searcher.FindAll())
                yield return result;
        }
    }
}
1 голос
/ 04 января 2011

Проверьте мой LDAP-браузер BeaverTail - он бесплатный, в коде C # 100% и доступен прямо здесь:

http://adsi.mvps.org/adsi/CSharp/beavertail.html

alt text

Один из самых интересных адресов LDAP, по которому можно перейти, - LDAP://RootDSE - он покажет вам множество информации о вашем лесу AD и другие интересные вещи. Если вы нажмете на узел корневого дерева в моем браузере Beavertail, вы увидите содержимое этого интересного системного узла.

Beavertail также покажет вам иерархию AD и покажет, какие пути LDAP составляют эту иерархию.

Помогает ли это вообще ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...