程式碼範例:ASP.NET 簡單 MVC 2

更新日期:2015 年 6 月 19 日

適用對象:Azure

此範例說明如何將Microsoft Azure Active Directory 存取控制 (也稱為 存取控制 Service 或 ACS) 與 ASP.NET MVC 應用程式整合。 此範例的程式碼位於 Microsoft Azure Active Directory 存取控制 (ACS) 程式碼範例套件的ASPNETSimpleMVC (C#\Websites\ASPNETSimpleMVC) 子目錄中。

必要條件

若要執行此範例,您將需要:

  1. Azure 首頁和存取控制命名空間的帳戶。 此範例假設移至Microsoft Azure 管理入口網站的名稱 (https://manage.WindowsAzure.com) 登入,然後按一下[Active Directory]。 (疑難排解提示:「Active Directory」專案遺失或無法使用,) 是 acssamples,即使您的存取控制命名空間名稱不同也一樣。

  2. Visual Studio 2010 (任何版本)

  3. Windows Identity Foundation SDK

如需詳細資訊,請參閱 ACS 必要 條件 (https://go.microsoft.com/fwlink/?LinkId=221065) 。

設定範例

您可以使用 ACS 管理入口網站或 ACS 管理服務來執行此範例所需的 ACS 設定。 此主題將說明這兩種選項。

  1. 選項 1:使用 ACS 管理入口網站設定範例

  2. 選項 2:使用 ACS 管理服務設定範例

選項 1:使用 ACS 管理入口網站設定範例

使用 ACS 管理入口網站設定範例

  1. 移至Microsoft Azure管理入口網站 (https://manage.WindowsAzure.com) 登入,然後按一下 [Active Directory]。 (疑難排解提示: 「Active Directory」專案遺失或無法使用)

  2. 若要建立存取控制命名空間,請依序按一下 [新增][應用程式服務][存取控制][快速建立]。 (或是先按一下 [新增] 再按一下 [存取控制命名空間])。

  3. 若要管理存取控制命名空間,請選取該命名空間,然後按一下 [管理]。 (或按一下 [存取控制命名空間]、選取 [命名空間],然後按一下 [管理])。

    此動作可開啟「存取控制服務」管理入口網站。

  4. 若要與網站使用者登入時可使用的身分識別提供者建立關係,請按一下 [身分識別提供者],然後新增 Yahoo!Google。 若要返回主頁面,請按一下 [首頁]

  5. 若要向 ACS 註冊您的應用程式,請在 存取控制 服務管理入口網站的首頁上,按一下[信賴憑證者應用程式],按一下 [新增],然後在表單中輸入下列資訊:

    • 在 [名稱] 欄位中,輸入 ASPNET Simple MVC Sample

    • 在 [ 領域] 欄位中,輸入 https://localhost:63000/

    • 在 [ 傳回 URL] 欄位中,輸入 https://localhost:63000/

    • 在 [ 錯誤 URL] 欄位中,輸入 https://localhost:63000/Error

    • 在 [權杖格式] 欄位中,選取 [SAML 2.0]

    • 在 [權杖簽署] 欄位中,選取 [使用服務命名空間憑證 (標準)]

  6. 按一下 [儲存],然後按一下 [首頁] 返回主頁面。

  7. 註冊您的信賴憑證者之後,現在可以建立規則,以判斷 ACS 將發出給應用程式的宣告。 在此範例中,我們將直接傳遞身分識別提供者所發出的所有宣告。 若要建立此規則,請按一下 [規則群組],然後按一下 [ASPNET Simple MVC Sample 的預設規則群組]。 按一下接近頁面底部的 [產生] 連結。 確定已選取三個識別提供者 Yahoo!、Google 和 Windows Live ID (Microsoft 帳戶) ,然後按一下 [產生]。

  8. 按一下 [儲存],然後瀏覽回到主要頁面。

  9. 設定 ACS 後,開啟Visual Studio。

選項 2:使用 ACS 管理服務設定範例

Visual Studio範例解決方案有一個名為ConfigureSample的主控台應用程式,其使用 ACS 管理服務和通用類別庫中定義的常見協助程式。 此應用程式可用來設定您的存取控制命名空間,以便與此範例搭配使用。

使用 ACS 管理服務設定範例

  1. 若要設定範例,請開啟 SamplesConfiguration.cs (acs\Management\ManagementService\Common)。 將 Common 類別庫中SamplesConfiguration類別中的預留位置取代為 存取控制 命名空間的相關資訊。 您可以在 ACS 管理入口網站中找到資訊。

    若要流覽至 ACS 管理入口網站:請移至Microsoft Azure管理入口網站 (https://manage.WindowsAzure.com) ,登入,然後按一下 [Active Directory]。 (疑難排解提示:「Active Directory」專案遺失或無法使用) 若要管理存取控制命名空間,請選取命名空間,然後按一下 [管理]。 (或按一下 [存取控制命名空間]、選取 [命名空間],然後按一下 [管理])。

    • ServiceNamespace - 輸入存取控制命名空間的名稱。

    • ManagementServiceIdentityName - 輸入 ACS 管理服務帳戶的名稱。 預設值為 ManagementClient

      若要尋找管理服務帳戶名稱,請在 ACS 管理入口網站中,按一下 [ 管理服務]。 [管理服務帳戶] 之下會依名稱列出帳戶。

    • ManagementServiceIdentityKey - 輸入管理服務帳戶的密碼。

      若要尋找管理服務帳戶密碼,請在 ACS 管理入口網站中,按一下 [ 管理服務]。 按一下管理服務帳戶的名稱,然後在 [認證] 下方按一下 [密碼]。 密碼會出現在 [密碼] 欄位中。 若要複製密碼,請按一下 [顯示密碼]

  2. 在 Visual Studio 中執行ConfigureSample應用程式,這會設定 ACS 執行此範例。

執行範例

執行範例

  1. 在 Visual Studio 中開啟位於Websites\ASPNETSimpleMVC\ASPNETSimpleMVC.sln的範例

  2. 按 F5 啟動應用程式。

  3. 關閉瀏覽器以停止應用程式,並繼續設定 ACS。

  4. 以滑鼠右鍵按一下專案,然後從內容功能表中選取 [新增 STS 參考]

  5. 在對話方塊中,將 Web 應用程式的根目錄輸入 [應用程式 URI] 欄位中,然後按 [下一步] 。 在此範例中,此值為 https://localhost:63000/

    注意

    尾端斜線很重要,因為它與您在 ACS 中為信賴憑證者輸入的值一行。 精靈會發出您的網站未使用 SSL 的警告。 請按一下 [是] 按鈕接受此警告,但切記,生產性網站在這些案例中幾乎都應使用 SSL。

  6. 在下一個視窗中,選取 [使用現有的 STS] 選項按鈕,然後輸入存取控制命名空間所發行WS-Federation中繼資料的 URI。 若要尋找 URI,請在 ACS 入口網站中,按一下 [應用程式整合]。 如果存取控制命名空間的名稱是acssamples,則 URI 為 https://acssamples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml 。 輸入此值之後,按 [下一步]

  7. 由於您的網站不需要加密權杖,所以按 [下一步],然後按一下 [完成]

  8. ACS 和您的應用程式現在已設定。 在 Visual Studio中按F5以執行應用程式。 您的瀏覽器將會導向 ACS 裝載的主領域探索頁面。

  9. 按一下 [Google]。 您的瀏覽器會被重新導向至 Google 登入頁面。

  10. 為 Google 帳戶輸入認證,並拒絕使用者同意表單。

  11. 您的瀏覽器應該返回 https://localhost:63000/Error 並顯示自訂錯誤字串,指出已取消登入網站。

  12. 若要重試,請按一下連結,再按一下身分識別提供者。

  13. 當瀏覽器進入該身分識別提供者後,請輸入測試帳戶的認證,但這次接受使用者同意表單。

  14. 您的瀏覽器應該會返回 https://localhost:63000/ 。 請留意到您的測試身分識別的名稱會出現在頁面的右上方區段。 此資料是由識別提供者所發出,並透過 ACS 傳回給您的應用程式。