从AD组中获取组成员跨域

时间:2017-08-30 06:46:11

标签: c# active-directory cross-domain principalcontext

我需要从域MYDOMAIN.CC中的Active Directory获取属于某个组的所有User对象(让我们称之为“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用户。但问题是它现在忽略了嵌套组(它只返回直接在组上的用户)。

我有一种感觉,这可能是因为全球目录没有集团成员资格?有没有人知道一种方法,可以让我跨组域的小组成员?

0 个答案:

没有答案