2008-11-17 78 views
2

我有一個通過ClickOnce分發的.NET應用程序。應用程序內的安全性通過使用一組組作爲資源的WindowsPrincipal.IsInRole(GroupName)方法實現。這種結構對於我們對於與組相同的域內的用戶來說效果很好。不幸的是,我們現在有用戶需要使用在機器上工作的應用程序,並在我們的域所信任的不同域中使用用戶帳戶,但不在同一個林中。無法讓.NET應用程序訪問跨域的AD組

看來IsInRole()查詢本地計算機上的AD票證以獲取組成員資格。不幸的是,此票證僅包含機器域的域本地組和其他受信任域的全局和通用組,我們的組是第一個域中的域本地組。捕捉22的情況來自於這樣一個事實,即AD不允許外部安全委託人在全球或全球團體中,因此雖然第二個領域的用戶可以查詢他們,但他們不能成爲它的成員(使其毫無意義! )

解釋: 有兩個域:DOM1和DOM2,它們之間有信任設置,但它們不在同一個林中。

DOM1\User1 
DOM2\User2 

是兩個用戶。

我想把User1User2放在一個對兩個用戶都可見的組中,並且可以同時包含它們。

我可以圍繞它目前看到的唯一方法是以下(其中{}表示組,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的方法的思考,但是從我讀過的那一點我相信它通常不被推薦用於此目的?

回答

0

不應該它是一個通用組,允許來自多個受信任域的用戶?

您正在檢查AD的用戶帳戶還需要能夠讀取每個廣告組的ou's。

莫羅

+0

感謝毛羅, 是的,我們試圖通用組太多,但它們不能包含外部安全主體要麼這意味着用戶是DOM2不能在一組。 – user38292 2008-11-17 17:28:38

0

的文檔狀態(字符串過載):

作用只能爲 當前主體的域來確定。

但它沒有聲明對於SecurityIdentifier重載。所以可能它會工作(沒有測試過)。你可以用wmi得到sid。例子不被發現。

+0

乾杯。 SecurityIdentifier重載似乎也遭受同樣的問題。 – user38292 2008-11-19 16:21:51

+0

很抱歉聽到這個消息。 – 2008-11-19 22:05:02

1

您可以嘗試使用LDAP來代替,但您必須知道要查詢哪個LDAP服務器;看到this answer示例代碼