使用System.DirectoryServices.xxx可以确定用户可以管理哪些AD组?

时间:2012-07-11 04:34:32

标签: c# asp.net active-directory

我正在尝试为用户加载一个组列表,并希望显示他们是否有权编辑组成员资格。

Active Directory中的内容表示用户可以编辑组的成员,以及如何使用3.5 +中的System.DirectoryServices查找此内容

我使用以下内容获取用户的组

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain);
UserPrincipal user = UserPrincipal.FindByIdentity(principalContext, userName);
if ( user != null)
{ 
    PrincipalSearchResult<Principal> groups = user.GetAuthorizationGroups();
    foreach(Principal p in groups)
    {
        if ( p is GroupPrincipal)
            ...
    }
}

任何帮助表示赞赏

1 个答案:

答案 0 :(得分:3)

由于在对象上管理权限的方式,这非常耗时。类似的问题可能是,“如何列出域中的每个文件夹,帐户可以将数据写入”。这是耗时的原因是因为每个对象都拥有自己的访问控制列表(ACL)。

我非常确定找出您可以管理的每个组的唯一方法是检查每个组并查看该组的权限,然后将您的组成员身份与该组的权限进行比较。

In Active Directory, how do I determine type of ActiveDirectoryAccessRule?有一些代码可能会有用,如果这是你最终的路线。

更安全的方法可能是使用“委派”字段将权限委派给某些组,可以使用LDAP轻松查询此字段,或让该人选择任何组,然后在选择组后检查该组的权限。 / p>