4

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

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)
            ...
    }
}

任何帮助表示赞赏

4

1 回答 1

3

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

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

在 Active Directory 中,如何确定 ActiveDirectoryAccessRule 的类型?如果这是您最终要走的路线,则有一些代码可能会很有帮助。

更明智的方法可能是使用“Delegate”字段将权限委派给某些组,该字段可以使用 LDAP 轻松查询,或者让人们选择任何组,然后在选择组后检查该组的权限。

于 2012-07-11T18:37:29.010 回答