跨域活动目录组成员身份

DCa*_*olz 1 .net c# dns netbios active-directory

我看过几个像我一样的问题,但没有一个真正适用.我面临的问题是:

我需要获得User的组成员身份:

  • 域B中的组
  • 域A中的用户
  • 域B中的服务
  • 福雷斯特对福雷斯特双向信任.

用户附加到服务和服务获取具有SID,名称等的WindowsIdentity对象.

为了获得组成员资格,我使用的是UserPrincipal对象.为了实现这一点,您需要一个PrincipalContext对象.PrincipalContext对象的构造函数需要域的FQDN(即A.some.domain.com).WindowsIdentity对象在用户名中有NetBios域名(即A\User),但我看不到获取DNS名称的方法.

以下是具有DNS名称HARD CODED的代码示例,该代码有效,但我需要取出硬编码部分.

--WindowsIdentity wi(传入方法) -

PrincipalContext context = new PrincipalContext(ContextType.Domain, "A.some.domain.com");
UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(context, IdentityType.Sid, wi.User.ToString());
Run Code Online (Sandbox Code Playgroud)

我有另一个使用模拟的解决方案,使用System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain().名称,但这是不可接受的,因为模拟可能不可用.我需要一个适用于TokenImpersonationLevel.Identification的解决方案

我花了几天时间搜索MSDN和Google(包括Stack Overflow)无济于事.

Bri*_*ond 5

使用WindowsIdentity.Groups不起作用吗?如果DomainA\User正在访问DomainB\Service,则用户的令牌应包括来自两个域的组.