我正在開發一個WCF服務(不是外部可用的),它將針對我們的.NET 2.0 WinForm應用程序的用戶在兩個域中針對Active Directory的用戶進行身份驗證。身份驗證部分主要工作,但我在修改Active Directory時遇到了一些問題。以下是有關情況和要求的基礎知識。多個域的活動目錄認證WCF服務 - 如何?
- 我們的應用程序的一些外部用戶將登錄到我們的DMZ中不同域中的Citrix服務器。那必須是他們唯一一次輸入他們的證書。因此,該域中的已認證用戶必須已被認證爲已認證,並且應用程序權限將根據用戶標識加載。
- 在DMZ域和我們的內部域之間建立了單向信任關係。
- 大多數外部用戶在他們的計算機上安裝應用程序。我們使用.NET Remoting從應用程序連接到我們的服務器。身份驗證是通過遠程處理存儲在我們域中的SQL Server中的信息的用戶ID /密碼。
- 在我們的域中,內部用戶將處於類似的情況。他們將啓動應用程序,假設他們已登錄,則不需要輸入任何憑據。
- 所有用戶 - 無論是否爲Active Directory - 仍在我們的表中設置,這是我們的權限管理信息的存儲位置。在用戶表上有一個標誌,指示用戶是否是AD,以及指示他們的域和AD用戶ID(如果不同於它們的原始域)的字段。
- 如果用戶是在Active Directory中設置的,無論是在外部域還是內部域中,如果他們運行安裝在當前不在域中的計算機上(即從路上的筆記本電腦上)安裝的應用程序,它們將是通過Active Directory進行身份驗證。處理#2中的身份驗證的遠程對象連接到WCF服務以獲取身份驗證。
- 這同樣適用於我們網站(使用相同憑證)的用戶。如果它們被標記爲活動目錄用戶,則它們將根據它進行身份驗證,而不是針對我們的正常系統。
- 一些具有正確權限的內部用戶需要能夠在Active Directory中設置用戶,修改他們,解鎖他們並啓用/禁用他們 - 僅在外部域中。
主要問題,我有是:
- 應該是WCF服務在什麼領域:外部或內部?
- 該服務應該運行在哪個用戶上才能完成上述所有操作,即External \ SVC-ADAuthentication,Internal \ SVC-ADAuthentication,還有其他什麼?
從我的測試:
- 當我運行的外部服務的外部\ SVC-ADAuthentication,我可以修改AD信息和對外部域進行身份驗證。內部域身份驗證失敗,「服務器返回引用」
- 外部爲內部\ SVC-ADAuthentication:我可以對兩個域進行身份驗證,但我無法修改外部域上的用戶。
- Internal as Internal \ SVC-ADAuthentication:我只能對內部域進行身份驗證。
- 它的內部外部\ SVC-ADAuthentication:將不會運行(我假設,因爲單向信任關係)。
爲什麼不使用WIF? http://msdn.microsoft.com/en-us/magazine/ee335707.aspx – 2009-11-11 13:35:38
我並不真正熟悉,但它看起來像它會需要額外的服務器來託管安全令牌服務,並且還需要.NET 3.5。我們的應用程序仍然是.NET 2.0,這意味着我必須使用basicHttpBinding從遠程數據對象連接到WCF服務。 看起來,爲了正確實現這一點,需要對我們的身份驗證/安全例程進行相當程度的重寫,而現在這是不可能的。 – 2009-11-11 15:30:25