我有一个通过 .NET 分发的 .NET 应用程序ClickOnce
。应用程序内的安全性是通过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 的方法进行任何思考,但从我读过的少量内容来看,我认为通常不推荐用于此目的?