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 のタイプを確認するにはどうすればよいですか? これがあなたが最終的に行くルートである場合に役立つかもしれないいくつかのコードがあります。

より健全なアプローチは、「デリゲート」フィールドを使用して特定のグループに権限を委任することです。このフィールドは、LDAP を使用して簡単に照会するか、ユーザーに任意のグループを選択させ、選択後にグループの権限を確認させることができます。

于 2012-07-11T18:37:29.010 に答える