我需要一种 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;
}
问题是一个组的成员是否是另一个组。属于外部组成员的内部组成员的任何人都应被视为已授权。
有一个更好的方法吗?