我有一个通过ClickOnce
分发的.NET应用程序。应用程序中的安全性通过WindowsPrincipal.IsInRole(GroupName)
方法使用一组组作为资源来实现。对于与组相同的域内的用户,此结构非常适合我们。不幸的是,现在我们的用户需要使用在计算机上运行的应用程序,并在我们的域所信任但不在同一个林中的不同域中使用用户帐户。
IsInRole()
似乎在本地计算机上查询AD票证以获取组成员资格。不幸的是,此票证仅包含机器域的域本地组以及其他可信域的全局和通用组,我们的组是第一个域中的域本地组。 catch-22的情况来自于AD不允许外部安全主体在全局或通用组中的事实,因此虽然它可以被第二域中的用户查询,但他们不能成为它的成员(使它有点无意义! )
解释: 有两个域:DOM1和DOM2,它们之间有信任设置,但它们不在同一个林中。
DOM1\User1
DOM2\User2
是两个用户。
我想将User1
和User2
放在一个对两个用户都可见的组中,并且可以同时包含它们。
我目前可以看到的唯一方法是以下(其中{}表示组的成员,DL = Domain Local和GLO = GlobalGroup。)
在每个域中创建一个全局组:
DOM1\GLOGroup1 : {DOM1\User1}
DOM2\GLOGroup1 : {DOM2\User2}
和两个包含两个全局组的域本地组:
DOM1\DLGroup1 : {DOM1\GLOGroup1, DOM2\GLOGroup1}
DOM2\DLGroup1 : {DOM1\GLOGroup1, DOM2\GLOGroup1}
但这并不是真的可以接受,因为我们实际上有两个以上的域和大约70个要管理的组,包括组的层次结构,我们对其他域中的组管理没有太多直接控制。
我们还没有对使用LDAP的方法进行过任何考虑,但从我读过的一点点来看,我认为通常不建议用于此目的吗?
答案 0 :(得分:1)
您可能会尝试使用LDAP,但您必须知道要查询的LDAP服务器;有关示例代码,请参阅this answer
答案 1 :(得分:0)
不应该是允许来自多个受信任域的用户的通用组吗?
您正在检查AD的用户帐户还需要能够阅读每个广告组。
莫罗
答案 2 :(得分:0)
文档说明(对于字符串重载):
该角色只能确定 当前校长的领域。
但它没有说明对于SecurityIdentifier的重载。所以可能它会工作(没有测试过)。你可以用wmi获得sid。没有找到例子。