我看过几个像我一样的问题,但实际上并没有。我面临的问题是:
我需要获得用户的群组成员资格:
用户附加服务和服务获取具有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());
我有另一个使用模拟的解决方案,使用System.DirectoryServices.ActiveDirectory.Domain.GetCurrentDomain()。名称,但这是不可接受的,因为模拟可能不可用。我需要一个适用于 TokenImpersonationLevel.Identification
的解决方案我花了几天时间搜索MSDN和Google(包括Stack Overflow)无济于事。
答案 0 :(得分:5)
使用WindowsIdentity.Groups
不起作用吗?如果Domain \ User正在访问Domain \ Service,则用户的令牌应包括来自两个域的组。