2

我有一个通过 .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 的方法进行任何思考,但从我读过的少量内容来看,我认为通常不推荐用于此目的?

4

3 回答 3

1

您可以尝试使用 LDAP,但您必须知道要查询哪个 LDAP 服务器;有关示例代码,请参见此答案

于 2008-11-18T04:44:23.040 回答
0

它不应该是一个允许来自多个受信任域的用户的通用组吗?

您检查广告的用户帐户还需要能够读取每个广告组。

毛罗

于 2008-11-17T17:13:18.973 回答
0

文档状态(对于字符串重载):

只能为当前主体的域确定角色。

但它并没有说明 SecurityIdentifier 重载。所以它可能会起作用(尚未测试过)。您可以使用 wmi 获取 sid。找不到例子。

于 2008-11-17T20:49:04.373 回答