我在这两个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