共用方式為


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

更新日期:2015 年 6 月 19 日

適用對象:Azure

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

必要條件

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

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

  2. Visual Studio 2010 (任何版本)

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

  4. Windows Identity Foundation SDK

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

設定範例

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

選項 1:透過 ACS 管理入口網站設定範例

在 ACS 管理入口網站中設定範例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

使用 ACS 管理服務設定範例

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

    • ServiceNamespace - 這是與 ACS 搭配使用的命名空間。

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

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

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

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

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

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

    如需如何取得這些金鑰的詳細資訊,請參閱 如何:將 Facebook 設定為識別提供者 (https://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] 欄位中,然後按 [下一步] 。 在此範例中,此值為 https://localhost:64000/

    注意

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

  4. 在下一個視窗中,選取 [使用現有的 STS] 選項按鈕,然後輸入存取控制命名空間所發行WS-Federation中繼資料的 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 受到保護。 挑選身分識別提供者並驗證之後,您會被導向回到 [目錄] 頁面。