Что dsget использует для запроса каталога? - PullRequest
0 голосов
/ 18 января 2012

Я нахожусь в организации с Active Directory с очень глубокой структурой вложенных групп. Я хотел бы запросить каталог, чтобы рекурсивно найти пользователей группы с компьютера Linux. На компьютере с Windows

dsget group "dn_of_group" -members -expand

делает именно то, что я хочу, и делает это очень быстро. Когда я пытался получить те же результаты через LDAP с

(memberOf:1.2.840.113556.1.4.1941:=dn_of_group)

выполнение запроса занимает почти минуту. dsget использует LDAP под капотом или использует какие-то другие средства для запроса каталога? И если да, то могу ли я это использовать?

Edit: Уточнил, что мне нужны участники, которые являются пользователями.

1 Ответ

0 голосов
/ 19 января 2012

Framework 3.5 с System.DirectoryServices.AccountManagement Пространство имен предоставляет метод, который рекурсивно ищет все группы и возвращает группы, членом которых является пользователь.Возвращенный набор может также включать дополнительные группы, в которых система будет считать пользователя членом для целей авторизации.

UserPrincipal.GetAuthorizationGroups()

Группы, которые возвращаются этим методом, могут включать в себя группы из другой области действия и хранилища, чем основной,Например, если принципалом является объект AD DS с DN "CN = SpecialGroups, DC = Fabrikam, DC = com", возвращаемый набор может содержать группы, которые принадлежат "CN = NormalGroups, DC = Fabrikam, DC =".com


В другом направлении вы получили:

GroupPrincipal.GetMembers(bool recursive)

См. Замечания

...