如何检查Active Directory组是否是另一个Active Directory组的成员

时间:2011-12-14 14:40:45

标签: c# .net active-directory active-directory-group

假设用户johnsmith是活动目录组MyManagers的成员。 假设组MyManagers是MyEmployees组的成员。 假设组MyEmployees是MyUsers组的成员。

当johnsmith登录我的应用程序时,我怎么知道他是MyUsers组的成员?

欣赏C#中的示例。

谢谢, kruvi

1 个答案:

答案 0 :(得分:4)

如果您使用的是.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
}

S.DS.AM中的GetAuthorizationGroups调用确实进行了递归查询,例如它还会选择您的用户所属的任何群组,因为群组是其他群组的成员。

新的S.DS.AM让您可以轻松地与AD中的用户和群组一起玩!