だから私は、ADグループのメンバーシップを再帰的に列挙することで何かをしようとしています。現時点では...
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "mine.domain.com");
GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, "myADGroup");
if (grp != null)
{
foreach (Principal p in grp.GetMembers(true))
{
Console.WriteLine(p.Name);
}
}
もちろん、これはすべてうまく機能します。グループのメンバーであるすべてのユーザーと、その中にネストされているグループのメンバーであるすべてのユーザーがリストされますが、ネストのレベルが深くてもかまいません。これは素晴らしいことです。
私が本当に必要としているのは、ユーザーがこの小さなネストのどのグループから来たかを知ることです。
GRP-MainProject
-- GRP-Producers
-- GRP-Artists
-- UserA
GRP-MainProject に対して現在のクエリを実行すると、UserA が返されます。ユーザーと、GRP-MainProject のメンバーシップを継承したのが GRP-Artists であるという事実を返すにはどうすればよいですか?
UserA は、重要な場合に備えて、約 40 のグループのメンバーです。編集 - ユーザーが複数のネストされたグループのグループのメンバーシップを持つ可能性があることに注意してください。
任意の考えをいただければ幸いです。