Добавление нескольких критериев к поиску LDAP - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть пример кода для запроса всех пользователей, которые соответствуют определенному номеру отдела и отображают все связанные свойства LDAP для каждого пользователя:

string attribute = "departmentnumber";
string value = "123";

DirectoryEntry rootEntry = new DirectoryEntry("LDAP://ldap.acme.com:389");
rootEntry.AuthenticationType = AuthenticationTypes.None;

DirectorySearcher searcher = new DirectorySearcher(rootEntry, $"({attribute}={value})");

SearchResultCollection results = searcher.FindAll();

foreach (SearchResult result in searcher.FindAll())
{
    var allLDAPProperties = result.Properties.PropertyNames;

    foreach (var property in allLDAPProperties)
    {
        Console.WriteLine((result.Properties[property.ToString()].Count > 0 ? result.Properties[property.ToString()][0] : string.Empty).ToString());
    }

    Console.WriteLine(Environment.NewLine);
}

Console.ReadKey();

Однако я хотел бы добавить несколько критериев к своему начальному поиску(Например, вернуть всех пользователей с атрибутом «Departmentnumber», совпадающим с «123», и атрибутом «joblevel», совпадающим с «5.» Я не могу найти правильный способ предоставления критериев составного фильтра для DirectorySearcher.

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

1 Ответ

0 голосов
/ 17 февраля 2019

Чтобы указать несколько критериев поиска для поиска LDAP, необходимо использовать синтаксис фильтра поиска LDAP (подробно описан в связанной документации).

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

(&(departmentnumber=123)(joblevel=5))

Проверьте полную документацию и дополнительные примеры в связанной документации.

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