Windows Azure 驗證

作者 :Rick Anderson

適用于 Windows Azure Active Directory 的 Microsoft ASP.NET 工具可讓您輕鬆地為 裝載于 Windows Azure 網站上的Web 應用程式啟用驗證。 您可以使用 Windows Azure 驗證來驗證來自您組織的Office 365使用者、從內部部署 Active Directory 同步的公司帳戶,或是在您自己的自訂 Windows Azure Active Directory 網域中建立的使用者。 啟用 Windows Azure 驗證可設定您的應用程式,以使用單一 Windows Azure Active Directory 租使用者來驗證使用者。

雲端服務中的 Web 角色不支援 ASP.NET Windows Azure 驗證工具,但我們計畫在未來版本中這麼做。 Windows Azure Web 角色支援Windows Identity Foundation (WIF) 。

如需如何在內部部署 Active Directory 與 Windows Azure Active Directory 租使用者之間設定同步處理的詳細資訊,請參閱 使用 AD FS 2.0 來實作和管理單一登入

Windows Azure Active Directory 目前提供 免費預覽服務

需求:

使用 Visual Studio 2012 建立 ASP.NET Web 應用程式

您可以使用 Visual Studio 2012 建立任何 Web 應用程式,本教學課程使用 ASP.NET MVC 內部網路範本。

  1. 建立新的 ASP.NET MVC 4 內部網路應用程式,並接受所有預設值。 (必須是 In tra net,而不是 In ter net 專案) 。 顯示 [專案範本] 對話方塊的螢幕擷取畫面。已選取 [內部網路應用程式]。

當您是 Tenet) 的全域管理員時,啟用視窗 Azure 驗證 (

例如,如果您沒有現有的 Windows Azure Active Directory 租使用者 (例如,透過現有的Office 365帳戶) 您可以註冊新的 Windows Azure Active Directory 帳戶來建立新的租使用者。

  1. 從 [專案] 功能表中,選取 [啟用 Windows Azure 驗證]:

    顯示 [專案] 下拉式功能表的螢幕擷取畫面。啟用 Windows Azure 驗證會以紅色圓圈。

  2. 輸入 Windows Azure Active Directory 租使用者的網域 (例如,contoso.onmicrosoft.com) 並按一下 [ 啟用]:

顯示 [啟用 Windows Azure 驗證] 對話方塊的螢幕擷取畫面。

  1. 在 [Web 驗證] 對話方塊中,以 Windows Azure Active Directory 租使用者的系統管理員身分登入:

    顯示 Microsoft Office 3 6 5 Web 驗證登入頁面的螢幕擷取畫面。

顯示 Windows Azure 登入頁面的螢幕擷取畫面。

由 Tenet 的非系統管理員啟用 Window Azure

如果您沒有 Windows Azure Active Directory 租使用者的全域管理員許可權,您可以取消核取布建應用程式的核取方塊。

顯示 [啟用 Windows Azure 驗證] 對話方塊的螢幕擷取畫面。

對話方塊會顯示使用 Azure Active Directory 原則布建應用程式所需的 網域應用程式主體識別碼回復 URL 。 您必須將這項資訊提供給擁有足夠許可權的人員,才能布建應用程式。 如需如何使用 Cmdlet 手動建立服務主體的詳細資訊,請參閱如何使用 Windows Azure Active Directory - ASP.NET Application 實作單一登入。 成功布建應用程式之後,您可以按一下 [繼續] 以 選取的設定更新web.config。 如果您想要在等候布建發生時繼續開發應用程式,您可以按一下 [ 關閉] 來記住專案檔中的設定。 下次叫用 [啟用 Windows Azure 驗證] 並取消核取 [布建] 核取方塊時,您會看到相同的設定,您可以按一下 [ 繼續],然後按一下 [在 web.config中套用這些設定

  1. 等候您的應用程式設定為 Windows Azure 驗證,並使用 Windows Azure Active Directory 布建。

  2. 為您的應用程式啟用 Windows Azure 驗證之後,請按一下 [關閉]:

    顯示標題為 [啟用 Windows Azure 驗證] 對話方塊的螢幕擷取畫面。

  3. 按 F5 執行您的應用程式。 您應該會自動重新導向至登入頁面。 使用目錄原則使用者認證登入應用程式。

    顯示 Windows Azure 登入頁面的螢幕擷取畫面。

  4. 因為您的應用程式目前使用自我簽署的測試憑證,所以您會收到來自瀏覽器的警告,指出憑證不是由受信任的憑證授權單位單位簽發。

    按一下 [繼續此網站],即可在本機開發期間安全地忽略此警告:

    顯示網站安全性警告的螢幕擷取畫面。不建議繼續使用此網站,以紅色圓圈。

  5. 您現在已成功使用 Windows Azure 驗證登入您的應用程式!

    顯示 [我的 A S P 點 NET 首頁] 的螢幕擷取畫面。

啟用 Windows Azure 驗證會對您的應用程式進行下列變更:

  • 反跨網站要求偽造 (CSRF) 類別 ( App_Start\AntiXsrfConfig.cs ) 新增至您的專案。

  • NuGet 套件 System.IdentityModel.Tokens.ValidatingIssuerNameRegistry 會新增至您的專案。

  • 您應用程式中的 Windows Identity Foundation 設定會設定為接受來自您 Windows Azure Active Directory 租使用者的安全性權杖。 按一下下圖,以查看 對Web.config 檔案所做的變更展開檢視。

    顯示程式程式碼 9 到 67 的螢幕擷取畫面。有些行會從螢幕擷取畫面中移除,而第 92 到 97 行則剩餘。

  • 將會布建 Windows Azure Active Directory 租使用者中應用程式的服務主體。

  • HTTPS 已啟用。

將應用程式部署至 Windows Azure

如需完整指示,請參閱 將 ASP.NET Web 應用程式部署至 Windows Azure 網站

若要使用 Windows Azure 驗證將應用程式發佈至 Azure 網站:

  1. 以滑鼠右鍵按一下您的應用程式,然後選取 [發佈]:

    顯示 [Win Azure 驗證示範] 右鍵功能表的螢幕擷取畫面。已選取 [發佈]。

  2. 從 [發佈 Web] 對話方塊下載並匯入 Azure 網站的發佈設定檔。

    顯示 [發佈 Web] 對話方塊中 [設定檔] 頁面的螢幕擷取畫面。

  3. [ 連線 ] 索引標籤會顯示 [ 目的地 URL ] (應用程式的公用 URL) 。 按一下 [驗證連線 ] 以測試您的連線:

    顯示 [發佈 Web] 對話方塊中 [連線] 頁面的螢幕擷取畫面。

  4. 如果您先前已發佈至此 Azure 網站,請考慮檢查 [ 在目的地移除其他檔案 ] 設定,以確保您的應用程式能完全發佈。 請注意,已選取 [ 啟用 Windows Azure 驗證] 核取方塊。

    顯示 [發佈 Web] 對話方塊中 [設定] 頁面的螢幕擷取畫面。[啟用 Windows Azure 驗證] 已核取並以紅色圓圈。

  5. 選擇性:在 [ 預覽] 索引標籤上,按一下 [ 開始預覽 ] 以查看已部署的檔案。

    顯示 [發佈 Web] 對話方塊中 [預覽] 頁面的螢幕擷取畫面。

  6. 按一下 [發佈]。

    系統會提示您啟用目標主機的 Windows Azure 驗證。 按一下 [啟用 ] 繼續:

    顯示 [啟用 Windows Azure 驗證] 對話方塊的螢幕擷取畫面。

  7. 輸入 Windows Azure Active Directory 租使用者的系統管理員認證:

    顯示 Windows Azure Web 驗證登入頁面的螢幕擷取畫面。

  8. 成功發佈應用程式之後,瀏覽器就會開啟至已發佈的網站。

    注意

    在啟用目標主機的 Windows Azure 驗證之後,應用程式可能需要最多五分鐘的時間, (通常較不) ,才能使用 Windows Azure Active Directory 完整布建。 當您第一次執行應用程式時,如果您收到錯誤 ACS50001:找不到名稱為 '[realm]' 的信賴憑證者,請稍候幾分鐘,然後再試一次執行應用程式。

  9. 出現提示時,以您目錄中的使用者身分登入:

    顯示 Windows Azure 登入頁面的螢幕擷取畫面。

  10. 您現在已成功使用 Windows Azure 驗證登入 Azure 裝載的應用程式。

    顯示 [我的 A S P 點 NET 首頁] 的螢幕擷取畫面。

已知問題

使用 Windows Azure 驗證時角色型授權失敗

Windows Azure 驗證目前不提供必要的角色宣告,因此可以執行角色型授權。 必須手動從 Windows Azure Active Directory 擷取已驗證使用者的角色。

流覽至具有 Windows Azure 驗證的應用程式會導致錯誤「ACS20016 登入的使用者網域 (live.com) 不符合此 STS 的任何允許網域」

如果您已登入 Microsoft 帳戶 (,例如 hotmail.com、live.com、outlook.com) 且您嘗試存取已啟用 Windows Azure 驗證的應用程式,可能會收到 400 錯誤回應,因為 Windows Azure Active Directory 無法辨識 Microsoft 帳戶的網域。 若要登入應用程式,請先從您的 Microsoft 帳戶登出。

使用已啟用 Windows Azure 驗證和 X509CertificateValidationMode 登入應用程式,非 [無] 會導致 accounts.accesscontrol.windows.net 憑證的憑證驗證錯誤

不需要憑證驗證,而且應該保持停用狀態。 簽發者憑證的指紋是由 WSFederationAuthenticationModule 驗證。

嘗試啟用 Windows Azure 驗證時,[Web 驗證] 對話方塊會顯示錯誤「ACS20016:登入的使用者網域 (contoso.onmicrosoft.com) 不符合此 STS 的任何允許網域」。

當您先前在相同的 Visual Studio 程式中使用不同的 Windows Azure Active Directory 帳戶登入時,可能會看到此錯誤。 從指定的帳號登出,或重新開機 Visual Studio。 如果您先前登入並選取 [讓我保持登入] 選項,您可能需要清除瀏覽器 Cookie。

ACS20012:要求不是有效的通訊協定訊息WS-Federation

如果您已經使用其他一些 Microsoft 識別碼登入其中一個 Azure 服務,就可能會發生這種情況。 在 Chrome 中使用私人瀏覽器視窗,例如 IE 中的 InPrivate 或 Chrome 中的 Incognito,或清除所有 Cookie。

其他資源