2013-07-23 26 views
3

我有一個需要將ASP.NET Web應用程序與活動目錄集成 - 基本上他們希望能夠通過AD進行身份驗證和授權。Active Directory開發環境

我意識到這是相對簡單的,但我想知道的是我如何能夠模擬AD進行開發和測試。我沒有可用的AD(現在),即使我有可用的硬件來運行它,也不會珍惜設置它的想法。

還有什麼其他選擇可供我使用?我在幾個地方看過ADAM mentioned,但這似乎並不能提供我需要的聯邦服務(而且似乎有些過時)。有可能爲此使用Azure嗎?我想把成本(時間和金錢)降到最低。

回答

2

我設法設置了一個適合使用Microsoft Azure虛擬機進行開發的活動目錄環境。

下面是我爲完成此項工作而執行的步驟的簡要概述。儘管設置AD和ADFS聽起來很可怕,但windows server 2012界面使其非常容易,除非我在下面提到的幾個問題 - 它們需要一段時間才能安裝。

  1. 創建一個新的azure windows server 2012 VM併爲http和https添加端點。
  2. 在VM
  3. 安裝AD角色安裝在VM
  4. 的ADFS角色創建ASP.NET MVC 4應用程序(在開發計算機上),並驗證其是否正常工作。
  5. 通過IIS運行應用程序(不是IIS快車 - 這只是使SSL更容易)。
  6. 確保網站有一個HTTPS綁定設置
  7. Install the Identity and Access tool for VS2012
  8. 右鍵點擊你的項目,選擇身份和訪問工具。
  9. STS元文檔的路徑將爲https://<your VM url>/FederationMetadata/2007-06/FederationMetadata.xml(如果證書是自簽名的,您可能需要手動下載此文件)。
  10. 回到您的虛擬機上,在ADFS中爲您的應用程序創建信賴方信任。
  11. 再次運行您的MVC應用程序,您應該重定向到您的虛擬機進行身份驗證,然後再次返回到您的應用程序(但這次使用https)。
  12. 如果您使用的是默認MVC模板,在右上角假設你已經正確地設置了索賠,你應該看到你好,<用戶> @ <域>

主要的文章,我也跟着實現這一目標如下:

http://blogs.rondewit.com/post/MVC-2b-ADFS-20-Federated-Authentication.aspx http://garymcallisteronline.blogspot.co.uk/2013/01/aspnet-mvc-4-adfs-20-and-3rd-party-sts.html

下面是疑難雜症的,我打(排名不分先後)的列表。

  1. 設置依賴方信任時手動輸入數據,並確保您正確設置Relying部分WS-Federation被動協議URL和依賴方信任標識符。第一個簡單的例子就是在身份驗證完成後ADFS將重新導向到的https url - https://localhost。第二個是用於標識正在嘗試認證的應用程序的標識符。輸入的標識符之一必須與MVC 4應用程序web.config中的wsFederation節點的領域屬性匹配。
  2. 當登錄用戶名應爲<域名\ <用戶名>
  3. 我無法讓Windows身份驗證與除IE以外的任何瀏覽器一起使用。爲了使用Chrome,我必須更改adfs/ls應用程序的web.config中本地身份驗證類型的順序,以便首先顯示錶單身份驗證。爲了解決這個問題,請在您的虛擬機上打開IIS管理器,展開默認網站/ adfs/ls,右鍵單擊並選擇探索。
  4. 在撰寫本文時,我無法使用我自己創建的AD用戶登錄 - 我可能只是沒有正確設置它。在初始設置時,我建議在創建虛擬機時嘗試與通過天藍色門戶創建的管理員用戶進行連接。
  5. 一旦我終於設法正確驗證AntiForgeryToken html助手開始拋出異常,談論失蹤的索賠。確保您已向您的信賴方信託添加了聲明規則,該規則設置了名稱或名稱標識聲明。然後在Application_Start中執行以下操作:AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;,如here所述。

還值得注意的是,Identity and Access工具允許您使用Azure ACS和更值得注意的開發STS來設置身份驗證。對於我的要求,我需要能夠與ADFS集成,但如果您只是嘗試基於聲明的身份驗證,其中一個可能比我上面經歷的過程更好。

0

考慮ADFS和ws聯邦。

Ws-federation是一種企業級的sso協議,可以以sso的方式爲您提供跨域認證/授權。 Adfs是位於活動目錄頂部的協議的免費實現。這是相對容易設置。

但是,如果客戶端應用程序需要ws聯合身份提供程序,則可以使用任何兼容的提供程序,您自己的或另一個免費實現的身份服務器替代提供程序,但可以使用成員資格提供程序。另一方面,完全自定義的實現將使您有機會設置並提供任意身份。

的是一個小的學習曲線的這種做法,但benetifs是:

  • 跨域SSO的多種瀏覽器
  • 支持免費(Kerberos的/基於NTLM廣告認證可能是在某些瀏覽器不支持)
  • 作品在Intranet和Internet
  • 先進的場景,如比如你可以設置你的雲Office365打擊當地的ADFS身份驗證支持
  • adfs 2.0是msdn的免費組件dowloadingable
+0

感謝您的回答Wiktor。我將確實使用ADFS。但是,如何設置開發環境來測試此集成呢? – s1mm0t

+0

最簡單的方法是設置您自己的模仿ADFS的自定義STS。有一些很好的教程,我也寫過一個http://netpl.blogspot.com/2011/08/quest-for-customizing-adfs-sign-in-web.html –