2009-07-31 29 views
6

我有幾個工作站點位於公司局域網之外 - 因此,它脫離了Active Directory(A/D)的直接通信範圍 - 但我希望能夠對其進行身份驗證針對企業A/D服務器以及用戶/角色的輔助存儲庫***。此活動的僞代碼如下:如何從ASP.NET Web服務代碼對Active Directory進行身份驗證?

  1. 用戶在外部網站的登錄表單中輸入用戶名/密碼。
  2. 外部網站調用局域網內可與A/D通話的Web服務。
  3. webservice會檢查用戶名/密碼是否可以通過認證映射到A/D中的用戶。如果是,請返回用戶所屬的A/D角色列表。
  4. 如果根據A/D無法找到/驗證用戶名/密碼,請檢查作爲用戶/角色信息輔助存儲庫的數據庫/服務。如果他們使用輔助授權服務器進行身份驗證,則返回該用戶所使用的所有角色。
  5. 返回用戶進入主叫網站的角色列表。

***我們的想法是,我們不希望將幾十個(可能有數百個)承包商和分支機構加入到Active Directory中,他們只會登錄到我們的外部Web服務器。因此,輔助認證方案。

回答

1

我認爲有一對夫婦在這裏的層,每一個它自己的問題:

我怎樣才能從我的DMZ內部局域網的網絡服務?
這是一個艱難的,因爲它真的打破了DMZ/LAN分離的概念。通常,局域網和DMZ之間的連接只能從局域網端進行(並且有限制) - 這樣一來,經過壓縮的DMZ就不能與局域網發起聯繫,並且在局域網中可以做的事情受到極大的限制(這是不能發佈的任意請求,僅響應來自LAN的請求)。

如何在另一臺計算機上使用服務來驗證用戶名/密碼?
這又是一個棘手的問題 - 你通過網絡傳遞密碼 - 是否有可能被截獲。對於AD,這是通過kerberos解決的 - 一個挑戰/響應系統,確保密碼永遠不會實際傳輸。當然Kerberos和類似的協議是相當複雜的 - 你不應該試圖推出自己的產品,因爲使用現有的產品可能不太安全 - 例如你的web服務可以在https上運行,這樣至少密碼只是明文兩臺服務器,而不是中間的通信鏈路。也可以使用證書來防止將用於LAN Web服務的流量重新路由到合法的DMZ計算機(被合併的DMZ計算機將無法僞造證書,因此您的系統可以確定它在連接到假服務器之前發送驗證細節)

根據我自己的經驗,這些問題導致局域網以外的局域網只是沒有完成。公司選擇使用通過RSA密鑰驗證的VPN(局域網中那些顯示不斷變化的數字的小鑰匙鏈)進行VPN身份驗證,或者爲DMZ區域服務使用完全獨立的一組登錄信息,從而讓外部人員進入局域網。

+0

「外部」網絡服務器位於DMZ中,無法直接訪問A/D服務器。然而,防火牆規則允許來自外部網絡服務器的特定DMZ IP地址的端口80/443流量到內部(asp.net)應用服務器的特定端口/ IP地址。在未來,我們可能會將服務器完全關閉,但通過端口和IP的相同防火牆例外仍然允許外部Web服務器調用內部應用服務器上的Web服務調用。 – 2009-07-31 12:18:20

1

您可能想看看@這兩個資源。第一個將爲您提供有關活動目錄的所有信息,第二個將告訴您如何連接。

您可能必須連接到遠程AD服務器雖然挑戰。因此,作爲潛在的解決方案,我會考慮讓Web應用程序調用駐留在公司網絡上的身份驗證Web服務。

+0

我想你的意思是分開鏈接: http://www.codeproject.com/KB/system/everythingInAD.aspx http://msdn.microsoft.com/en-us/library/aa302397.aspx – 2009-07-31 12:29:15

+0

是啊,但我現在只允許一個鏈接,並且都是必需的。我發現它們對於實現類似問題非常有用。 – andrewWinn 2009-07-31 12:33:14

0

您可以通過爲承包商/分支機構提供不同的登錄門戶來簡化此操作。

相關問題