我需要从域 MYDOMAIN.CC 中的 Active Directory 中获取属于某个组(我们称之为“SourceGroup”)的所有用户对象。这包括解析嵌套组(递归)。
我正在与 UserPrincipal 和 PrincipalContext 合作来实现这一目标。GetMember(true) 自动解析组并且工作正常。
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))//, url + ":3268"))
using (GroupPrincipal grp = GroupPrincipal.FindByIdentity(ctx, IdentityType.Name, groupName))
{
var users = grp.GetMembers(true)
.AsParallel()
.Select(member => PersonPrincipal.FindByIdentity(ctx, IdentityType.Guid, member.Guid.Value.ToString()))
.Where(user => user != null && userFilterFunction == null || userFilterFunction(user));
return users.ToList();
}
现在,当 MYDOMAIN.CC 的“SourceGroup”从另一个域(即 US.MYDOMAIN.CC)获取成员时出现了问题。然后我更改了查询以搜索全局目录:
new PrincipalContext(ContextType.Domain, "MYDOMAIN.CC:3268"))
它现在适用于直接放入 MYDOMAIN.CC\SourceGroup 的 US.MYDOMAIN.CC 用户。但问题是它现在忽略了嵌套组(它只返回直接在组中的用户)。
我有一种感觉,这可能是因为全局编录没有组成员身份?有谁知道允许我跨域获取组成员的方法?