我有一个通过ClickOnce
分发的.NET应用程序。应用程序内的安全性通过使用一组组作为资源的WindowsPrincipal.IsInRole(GroupName)
方法实现。这种结构对于我们对于与组相同的域内的用户来说效果很好。不幸的是,我们现在有用户需要使用在机器上工作的应用程序,并在我们的域所信任的不同域中使用用户帐户,但不在同一个林中。无法让.NET应用程序访问跨域的AD组
看来IsInRole()
查询本地计算机上的AD票证以获取组成员资格。不幸的是,此票证仅包含机器域的域本地组和其他受信任域的全局和通用组,我们的组是第一个域中的域本地组。捕捉22的情况来自于这样一个事实,即AD不允许外部安全委托人在全球或全球团体中,因此虽然第二个领域的用户可以查询他们,但他们不能成为它的成员(使其毫无意义! )
解释: 有两个域:DOM1和DOM2,它们之间有信任设置,但它们不在同一个林中。
DOM1\User1
DOM2\User2
是两个用户。
我想把User1
和User2
放在一个对两个用户都可见的组中,并且可以同时包含它们。
我可以围绕它目前看到的唯一方法是以下(其中{}表示组,DL =域本地和GLO = GlobalGroup的成员。)
让两个全局组一个在各个领域:
DOM1\GLOGroup1 : {DOM1\User1}
DOM2\GLOGroup1 : {DOM2\User2}
,并包含两个全局组的两个域本地组:
DOM1\DLGroup1 : {DOM1\GLOGroup1, DOM2\GLOGroup1}
DOM2\DLGroup1 : {DOM1\GLOGroup1, DOM2\GLOGroup1}
但是,这是不是真的可以接受的,我们实际上有两个以上的域的d大约70个小组需要管理,包括小组的等级,我们对其他领域的小组管理没有太多直接的控制。
我们还没有完成任何关于使用LDAP的方法的思考,但是从我读过的那一点我相信它通常不被推荐用于此目的?
感谢毛罗, 是的,我们试图通用组太多,但它们不能包含外部安全主体要么这意味着用户是DOM2不能在一组。 – user38292 2008-11-17 17:28:38