C# 跨域active directory组成员身份
我见过一些和我一样的问题,但没有一个真正适用。我面临的问题是: 我需要获得以下用户的组成员资格:C# 跨域active directory组成员身份,c#,.net,active-directory,dns,netbios,C#,.net,Active Directory,Dns,Netbios,我见过一些和我一样的问题,但没有一个真正适用。我面临的问题是: 我需要获得以下用户的组成员资格: 域B中的组 域A中的用户 域B中的服务 Forrest对Forrest双向信任 用户连接到服务,服务获取具有SID、名称等的WindowsIdentity对象 为了获得组成员资格,我使用了UserPrincipal对象。为了得到它,您需要一个PrincipalContext对象。PrincipalContext对象的构造函数需要域的FQDN(即A.some.domain.com)。Windows
- 域B中的组
- 域A中的用户
- 域B中的服务
- Forrest对Forrest双向信任
我花了几天时间搜索MSDN和Google(包括堆栈溢出),但都没有结果。使用
WindowsIdentity.Groups
不起作用吗?如果DomainA\User正在访问DomainB\Service,则用户的令牌应包括来自两个域的组 使用WindowsIdentity.Group
是否无效?如果DomainA\User正在访问DomainB\Service,则用户的令牌应包括来自两个域的组 简单的回答是,这将起作用。只是花了几个小时测试这个。我的印象是来自WindowsIdentity.groups属性的组可能已过时或不完整。这是真的,但是当跨越域边界访问服务时,令牌总是新的。打得好。简短的回答是这会起作用。只是花了几个小时测试这个。我的印象是来自WindowsIdentity.groups属性的组可能已过时或不完整。这是真的,但是当跨越域边界访问服务时,令牌总是新的。好电话。
PrincipalContext context = new PrincipalContext(ContextType.Domain, "A.some.domain.com");
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(context, IdentityType.Sid, wi.User.ToString());