0

我在这两个 AD 组中:Group1、Group2。当我在两个组中时,为什么相同的代码会为 Group1 返回 false 而为 Group2 返回 true?

var user = new WindowsPrincipal(WindowsIdentity.GetCurrent());
if (!user.IsInRole(groupName)) { return false; }

当我使用第三方广告工具检查时,我可以看到我在这两个组中。我已经看到管理员角色存在问题,但我只是检查两个正常的 AD 组。我不确定从哪里开始弄清楚为什么一个返回 false 而另一个返回 true。

这种完全不同的方法有效:

var principalContext = new PrincipalContext(ContextType.Domain, "foo.bar:389", "dc=foo,dc=bar", "account", "pw");

using (var userPrincipal = UserPrincipal.FindByIdentity(principalContext, IdentityType.SamAccountName, principal.Identity.Name))
{
    Console.WriteLine(userPrincipal.IsMemberOf(principalContext, IdentityType.SamAccountName, groupName));  // RETURNS TRUE
}

编辑

我使用免费的 AD 工具来尝试发现两组之间的一些差异。我发现的唯一真实的事情是父容器是不同的。这可能与问题有关吗?

父容器
组 1:Security Groups/NonLocationSpecific/domain.LOCAL
组 2:CityName/Security Groups/NonLocationSpecific/domain.LOCAL

4

0 回答 0