Как получить более 1000 результатов из ActiveDirectory? - PullRequest
0 голосов
/ 22 мая 2018

Я столкнулся с проблемой.Стандартный пакет для NetCor App System.DirectoryServices не поддерживается в Linux.Было решено перейти на Novell.Directory.Ldap.NETStandard.

В AD существует ограничение на 1000 результатов поиска.Как вернуть более 1000 результатов на клиенте, используя Novell.Directory.Ldap.NETStandard?

Это мой код.Возвращает только 1000 записей.

LdapSearchQueue queue = connection.Search("<this my base entry>",
    LdapConnection.SCOPE_SUB,
    "<this my filter>",
    attr,
    false,
    (LdapSearchQueue)null,
    new LdapSearchConstraints { MaxResults = 0 });

LdapMessage message;
while ((message = queue.getResponse()) != null)
{
    if (message is LdapSearchResult)
    {
        LdapEntry entry = ((LdapSearchResult)message).Entry;

        LdapAttributeSet attributeSet = entry.getAttributeSet();

        var atr = attributeSet.getAttribute("sAMAccountName");
                        list.Add(atr.StringValue);
    }
}

1 Ответ

0 голосов
/ 23 мая 2018

Я нашел следующее решение

Все пользователи находятся в папках.И в каждой папке не более 1000 пользователей.Папка является тем же объектом, что и пользователь, но с другим типом объекта.

Сначала.Получить список всех папок с пользователями.Если в какой-либо папке также находится более 1000 папок, то для этой папки необходимо получить список папок до уровня ниже (LdapConnection.SCOPE_ONE).

Второй.Перейдите к каждой найденной папке и соберите в ней всех пользователей.

При таком подходе количество результатов поиска на каждой итерации не будет превышать 1000. Если все еще существует такая ситуация, что в одной папке большечем 1000 пользователей, то у вас есть ПРОБЛЕМЫ.

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