User.IsInRole为一个组返回false,但不返回另一个组

时间:2013-07-22 15:39:47

标签: c# active-directory

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

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

当我使用第三方AD工具查看时,我可以看到我在两个组中。 I've seen that there are issues with the administrator role,但我只是检查两个正常的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组:安全组/ NonLocationSpecific / domain.LOCAL
第2组:CityName / Security Groups / NonLocationSpecific / domain.LOCAL

0 个答案:

没有答案