C# で特定の AD グループの一部であるユーザー ID を検索する方法が必要です。ユーザーが AD グループの一部である場合は true を返します。
ADグループからユーザーリストを取得することからこれまでに得たものは次のとおりです。
private Boolean IsMemberPartOfGroup(String groupName)
{
var found = false;
var ctx = new PrincipalContext(ContextType.Domain); // fetch your group
var group = GroupPrincipal.FindByIdentity(ctx, groupName); // enumerate over the group's members
foreach(var p in group.Members)
{
if (String.CompareOrdinal("group", p.StructuralObjectClass) == 0)
{
var g = p as GroupPrincipal;
this.IsMemberPartOfGroup(g);
}
else if(p.Guid == UserPrincipal.Current.Guid)
{
found = true;
break;
}
}
return found;
}
問題は、グループのメンバーが別のグループである場合です。外側のグループのメンバーである内側のグループの一部であるすべての人は、許可されていると見なされます。
これを行うより良い方法はありますか?