- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 Principal.IsMemberOf(GroupPrincipal)
( MSDN ) 在以下测试中为 Domain Computers
组返回假阴性?
[TestMethod]
public void DomainComputerTest()
{
var distinguishedName = "CN=MyMachine,DC=SomeDomain,DC=local";
using( var pc = new PrincipalContext( ContextType.Domain, "SomeDomain.local", "UserName", "Password" ) )
using( var computer = ComputerPrincipal.FindByIdentity( pc, IdentityType.DistinguishedName, distinguishedName ) )
{
Assert.IsNotNull( computer );
// Get the groups for the computer.
var groups = computer.GetGroups().Cast<GroupPrincipal>();
foreach( var group in groups )
{
// Immediately turn around and test that the computer is a member of the groups it returned.
Assert.IsTrue( computer.IsMemberOf( group ), "Computer is not member of group {0}", group.Name );
}
}
}
结果消息:Assert.IsTrue 失败。计算机不是“域计算机”组的成员
该计算机确实是“域计算机”组的成员,“GetGroups()”方法正确返回了该组。事实上,如果您尝试将计算机添加到组中,则会抛出 PrincipalExistsException。
我可以重现与用户和“域用户”组完全相同的行为。这是因为这些团体是主要团体吗?是因为这些是“默认”组吗?
编辑添加:我们正在使用 .NET 4.5.1。
最佳答案
这似乎是一个一直存在的问题。
我发现的与您相同的问题的每个问题都没有得到解答。我找不到任何说这是作为错误提交的内容,但似乎自 .NET 3.5 以来就存在了。
我试图让您的示例返回 true
(当然将信息更改为我的工作域)。不管怎样,它返回了 false
。反编译 dotPeek 中的 Principal
类仅产生推测。完成并设置 Visual Studio 以允许单步执行 .NET 框架代码是一个失败,因为它不会单步执行必要的方法。我可以进入其他 .NET 框架代码,但不能进入 Principal
。不确定这是否与使用 SecurityCriticalAttribute
标记的方法有关。很想确认这一点。
我对您的建议是将此作为错误归档,同时采用不同的途径来确定计算机是否是成员。在我的测试中,group.Members
确实包含计算机。
我在运行 .NET 3.5、4.0、4.5、4.5.1 时遇到了同样的问题
以下是一些引用资料:
解决方法 -- GroupPrincipal.IsMemberOf always returns false
A 2010 MSDN Blog entry with a comment that had the same issue as you.
注意:我通常不会这样回答,但因为我发现的关于这个问题的每个问题都有 0 个答案或解决方法,我认为这对 future 的读者实际看到某种“回答”这个问题。
关于c# - 为什么 Principal.IsMemberOf() 对某些组返回假阴性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26981922/
这感觉像是一个非常基本的问题,因为这是我正在寻找的一个非常基本的功能。 我知道你可以做到这一点: ([Dimension].CurrentMember IS [Dimension].[AParticu
我有一个函数可以检查一个组是否是一个组的成员。我有 2 个函数变体,都没有按预期工作: public bool IsGroupGroupMember(GroupPrincipal gp, GroupP
为什么 Principal.IsMemberOf(GroupPrincipal) ( MSDN ) 在以下测试中为 Domain Computers 组返回假阴性? [TestMethod] publ
我正在尝试确定给定的本地用户帐户是否在本地管理员组中。在系统加入域之前一切正常。当加入域时抛出异常,提示未找到网络路径,但仅在查找本地非管理员帐户时才会抛出异常;如果测试帐户是本地管理员,则该方法返回
我正在尝试验证用户是否在“TestGroup”组中。用户是“TestGroup”组的一部分,即使我收到 retval = false @line(retVal = user.IsMemberOf(gr
所以我有一个问题,老实说我不太确定如何提出。本质上,当我运行它时,我有一些代码在我的本地机器上运行得非常好。一旦我将它发布到我们的开发 Web 服务器,它就会失败。我不确定这是 IIS 设置问题、we
我在自定义 Active Directory RoleProvider 中创建了以下方法: public override string[] GetRolesForUser(string userna
我对 OpenDj 上的“ismemberof”有一些疑问。 我想在 OpenDj 中有一个用户(比如“uid=jdoe,ou=people,dc=example,dc=com”),它可以做一个“is
类似于以下 MSDN 线程中的问题:http://social.msdn.microsoft.com/Forums/en-MY/csharplanguage/thread/4c9fea6c-1d0a-
我有 OpenID Connect 在 中配置OpenAM (OpenAm 是提供者)。现在我正在尝试检索 群组成员用户的 来自 用户信息端点 . 身份验证成功,我检索了 access_token、i
因此,我的要求是让在 Azure 计算机上运行的应用程序检查登录的特定 Azure 用户是否属于指定的 Azure 组。 我已为上述虚拟机启用托管服务身份。 MSI 我通过对 VM 上的图形资源使用以
我是一名优秀的程序员,十分优秀!