2009-11-11 21 views
0

我正在開發一個WCF服務(不是外部可用的),它將針對我們的.NET 2.0 WinForm應用程序的用戶在兩個域中針對Active Directory的用戶進行身份驗證。身份驗證部分主要工作,但我在修改Active Directory時遇到了一些問題。以下是有關情況和要求的基礎知識。多個域的活動目錄認證WCF服務 - 如何?

  1. 我們的應用程序的一些外部用戶將登錄到我們的DMZ中不同域中的Citrix服務器。那必須是他們唯一一次輸入他們的證書。因此,該域中的已認證用戶必須已被認證爲已認證,並且應用程序權限將根據用戶標識加載。
  2. 在DMZ域和我們的內部域之間建立了單向信任關係。
  3. 大多數外部用戶在他們的計算機上安裝應用程序。我們使用.NET Remoting從應用程序連接到我們的服務器。身份驗證是通過遠程處理存儲在我們域中的SQL Server中的信息的用戶ID /密碼。
  4. 在我們的域中,內部用戶將處於類似的情況。他們將啓動應用程序,假設他們已登錄,則不需要輸入任何憑據。
  5. 所有用戶 - 無論是否爲Active Directory - 仍在我們的表中設置,這是我們的權限管理信息的存儲位置。在用戶表上有一個標誌,指示用戶是否是AD,以及指示他們的域和AD用戶ID(如果不同於它們的原始域)的字段。
  6. 如果用戶是在Active Directory中設置的,無論是在外部域還是內部域中,如果他們運行安裝在當前不在域中的計算機上(即從路上的筆記本電腦上)安裝的應用程序,它們將是通過Active Directory進行身份驗證。處理#2中的身份驗證的遠程對象連接到WCF服務以獲取身份驗證。
  7. 這同樣適用於我們網站(使用相同憑證)的用戶。如果它們被標記爲活動目錄用戶,則它們將根據它進行身份驗證,而不是針對我們的正常系統。
  8. 一些具有正確權限的內部用戶需要能夠在Active Directory中設置用戶,修改他們,解鎖他們並啓用/禁用他們 - 僅在外部域中。

主要問題,我有是:

  1. 應該是WCF服務在什麼領域:外部或內部?
  2. 該服務應該運行在哪個用戶上才能完成上述所有操作,即External \ SVC-ADAuthentication,Internal \ SVC-ADAuthentication,還有其他什麼?

從我的測試:

  1. 當我運行的外部服務的外部\ SVC-ADAuthentication,我可以修改AD信息和對外部域進行身份驗證。內部域身份驗證失敗,「服務器返回引用」
  2. 外部爲內部\ SVC-ADAuthentication:我可以對兩個域進行身份驗證,但我無法修改外部域上的用戶。
  3. Internal as Internal \ SVC-ADAuthentication:我只能對內部域進行身份驗證。
  4. 它的內部外部\ SVC-ADAuthentication:將不會運行(我假設,因爲單向信任關係)。
+0

爲什麼不使用WIF? http://msdn.microsoft.com/en-us/magazine/ee335707.aspx – 2009-11-11 13:35:38

+0

我並不真正熟悉,但它看起來像它會需要額外的服務器來託管安全令牌服務,並且還需要.NET 3.5。我們的應用程序仍然是.NET 2.0,這意味着我必須使用basicHttpBinding從遠程數據對象連接到WCF服務。 看起來,爲了正確實現這一點,需要對我們的身份驗證/安全例程進行相當程度的重寫,而現在這是不可能的。 – 2009-11-11 15:30:25

回答

0

如果你看一下從原則問題觀點。

  • 您不希望外部域能夠訪問內部域。
  • 內部域可以訪問外部域。

因此,您需要在內部和外部域之間創建單向信任。

地方,可以通過外部用戶在外部域名訪問的所有服務。

+0

這基本上就是我所擁有的。我們確實在內部和外部域之間建立了單向信任。我在外部域中運行服務的成功率最高。然而, 1)如果我運行在外部域的外部域帳戶下該服務,我不能對內部域 2)如果我運行在外部域的內部域帳戶下服務,我不能修改Active認證外部域中的目錄 – 2009-11-11 16:47:08