Как проверить, является ли группа Active Directory членом другой группы Active Directory - PullRequest
3 голосов
/ 14 декабря 2011

Предположим, пользователь johnsmith является членом группы активных каталогов MyManager. Предположим, группа MyManager является членом группы MyEmployees. Предположим, группа MyEmployees является членом группы MyUsers.

Когда Джонсон входит в мое приложение, как я могу узнать, что он является членом группы MyUsers?

Оцените примеры в C #.

Спасибо, kruvi

1 Ответ

4 голосов
/ 14 декабря 2011

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

По сути, вы можете определить контекст домена и легко найти пользователей и / или группы в AD:

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

// find a user
UserPrincipal user = UserPrincipal.Current; // this would be John Smith

if(user != null)
{
   // get the user's groups he's a member of
   PrincipalSearchResult<Principal> results = user.GetAuthorizationGroups();

   // now you just need to iterate over the groups and see if you find the
   // one group you're interested in
}

Вызов GetAuthorizationGroups в S.DS.AM делаетдействительно, выполняйте рекурсивные запросы, например, он также подберет любые группы, членами которых является ваш пользователь, поскольку группы являются членами других групп.

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

...