Вложенные группы Active Directory - PullRequest
10 голосов
/ 16 июля 2011

У меня работает программа на C # 4.0, которая извлекает всех участников для определенной группы AD. В этой группе AD находятся другие группы AD, содержащие других участников. Мне нужна моя программа, чтобы идентифицировать, что это группа, и получить членов этой группы.

Я знаю, что мне нужно написать рекурсивную программу, но я надеялся, что кто-то там уже мог это сделать. Если нет, то может ли кто-нибудь сказать мне атрибут свойства AD, чтобы определить, что этот член действительно является группой?

Ответы [ 2 ]

15 голосов
/ 16 июля 2011

Поскольку вы работаете в .NET 3.5 и выше, вам следует проверить пространство имен System.DirectoryServices.AccountManagement (S.DS.AM).Прочитайте все об этом здесь:

По сути, вы можете определить контекст домена и легко находить пользователей и / или группы в AD.Кроме того: GroupPrincipal имеет метод с именем GetMembers, который перечисляет всех членов этой группы - опционально, он будет делать это рекурсивно для вас!

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find the group you're interested in
GroupPrincipal myGroup = GroupPrincipal.FindByIdentity(ctx, "SomeGroup");

// if you found it - get its members
if (myGroup != null)
{
   // if your call the GetMembers, you can optionally specify a "Recursive" flag - done here
   var allMembers = myGroup.GetMembers(true);
}

Новый S.DS.AM делает егодействительно легко играть с пользователями и группами в AD!

0 голосов
/ 16 июля 2011

Предполагая, что вы используете представление LDAP в ActiveDirectory, атрибут, который вы ищете, называется «objectClass».Я полагаю, что группа обнаруживается с объектным классом "groupOfNames";возможно "группа".В качестве альтернативы просто посмотрите, есть ли у объекта какие-либо «члены», независимо от класса объекта, и если это так, предположите, что это своего рода группа и рекурсор.

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