本文件已封存並已停止維護。

程式碼範例:ASP.NET MVC 3 自訂登入頁面

發佈時間: 2011年5月

更新日期: 2015年6月

適用於: Azure

此範例說明如何在使用 Microsoft Azure Active Directory 存取控制服務 (也稱為「存取控制服務」或 ACS) 的 ASP.NET MVC3 應用程式中建立自訂登入或 [主領域探索] 頁面。此範例的程式碼位於 Microsoft Azure Active Directory 存取控制 (ACS) 程式碼範例 (英文) 套件的 MVC3CustomSignInPage (C#\Websites\MVC3CustomSignInPage) 子目錄中。

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

  1. Azure 入口網站中的帳戶和 存取控制命名空間。

  2. Visual Studio 2010 (任何版本)

  3. ASP .NET MVC3 (http://www.asp.net/mvc/mvc3)

  4. Windows Identity Foundation SDK

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

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

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

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

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

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

  4. 若要與身分識別提供者建立關係,請按一下 [身分識別提供者],然後選取您要使用的身分識別提供者,例如 Google、Yahoo! 和 Facebook。如需有關如何取得 Facebook 必要金鑰的詳細資訊,請參閱<作法:將 Facebook 設定為身分識別提供者 (http://go.microsoft.com/fwlink/?LinkId=221151)。然後按一下頁面的左側瀏覽功能表中的 [首頁] 連結,以返回主要頁面。

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

    • 在 [名稱] 欄位中,輸入 ASPNET MVC3 Custom

    • 在 [領域] 欄位中,輸入 http://localhost:64000/

    • 在 [傳回 URL] 欄位中,輸入 http://localhost:64000/Account/SignIn

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

    • 在 [身分識別提供者] 區段中,選取 FacebookGoogleWindows Live IDYahoo!

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

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

  7. 完成信賴憑證者應用程式的設定後,即應建立規則據以決定 ACS 將會對您的應用程式發出的宣告。在此範例中,我們將傳遞身分識別提供者所發出的所有宣告。若要建立此規則,請按一下位於主要頁面上的 [規則群組],然後按一下 [ASPNET MVC3 Custom 的預設規則群組] 規則群組。

  8. 在頁面底部,按一下 [產生] 連結。確定已選取 FacebookYahoo 和 ,然後按一下 [產生]。

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

Visual Studio 範例解決方案中,具有會使用 ACS 管理服務與 [一般] 類別庫中所定義之一般協助程式的命令列應用程式 ConfigureSample。此應用程式可用來設定用於此範例的存取控制命名空間。

  1. 使用存取控制命名空間的相關資訊更新 [一般] 類別庫。開啟 SamplesConfiguration.cs,然後輸入下列資訊:

    • ServiceNamespace - 這是用於 ACS 的命名空間。

    • ManagementServiceIdentityName - 這是管理服務帳戶的名稱。

    • ManagementServiceIdentityKey - 這是與管理服務帳戶相關聯的密碼。

    • AcsHostUrl - 這是 ACS 的主機名稱。

  2. ConfigureSample 專案中,開啟 Program.cs,然後輸入下列資訊:

    1. applicationId - 這是您的 Facebook 應用程式的應用程式 ID。

    2. applicationSecret - 這是您的 Facebook 應用程式的應用程式祕密。

    如需如何取得這些金鑰的詳細資訊,請參閱 作法:將 Facebook 設定為身分識別提供者 (http://go.microsoft.com/fwlink/?LinkId=221151)。

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

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

  2. 若要將 ACS 新增為 STS 參考,請以滑鼠右鍵按一下 MVCCustomSignInPage,然後從內容功能表中選取 [新增 STS 參考]。

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

    note附註
    結尾處的斜線有其重要性,它會與您在 ACS 中為信賴憑證者輸入的值並列。精靈會發出您的網站未使用 SSL 的警告。請按一下 [是] 按鈕接受此警告,但切記,生產性網站在此類案例中幾乎都應使用 SSL。

  4. 在下一個視窗中,選取 [使用現有的 STS] 選項按鈕,然後輸入您的存取控制命名空間所發行之 WS-同盟中繼資料的 URI。該 URI 可在入口網站上的 [應用程式整合] 下找到。如果您的存取控制命名空間是 mvc3samples,則 URI 為 https:// mvc3samples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml。輸入此值之後,按 [下一步]。

  5. 由於您的網站不需要加密權杖,因此在其餘的對話方塊上請按 [下一步],然後按一下 [完成]。

  6. 您的應用程式現在已設定為使用 ACS 搭配 ASP .NET 資料組資源保護。我們必須停用此保護功能,才能使用自己的自訂登入頁面搭配更詳細的 MVC3 驗證篩選條件。在 web.config 檔案中,刪除 configuration 之下的下列設定:

    <location path="FederationMetadata">
       <system.web>
         <authorization>
           <allow users="*" />
         </authorization>
       </system.web>
    </location>
    
    
  7. system.web 之下,刪除下列設定:

    <authorization>
         <deny users="?" />
       </authorization>
    
    

    移除這兩個設定之後,ASP .NET 就不會代表我們執行任何的驗證或授權。

  8. 在 Visual Studio 中按 F5 執行應用程式。您的瀏覽器將帶您前往應用程式的主要頁面。

  9. 按一下右上角的 [登入] 連結,並從顯示的清單中選取身分識別提供者。驗證之後,您將返回首頁而且您的使用者資訊將顯示於右上角 (請注意, 不會提供使用者名稱)。

  10. 按一下 [登出] 進行登出。這將會清除工作階段 cookie 並使您回到主要頁面。

  11. 按一下 [目錄] 連結。由於您不再是已驗證狀態,所以系統會要求您挑選身分識別提供者以存取 [目錄] 頁面。

這是因為 [目錄] 頁面 (DirectoryController 中的索引) 是透過 RequireAuthenticationAttribute 受到保護。挑選身分識別提供者並驗證之後,您會被導向回到 [目錄] 頁面。

顯示: