快速入門:連線到線上身分識別提供者 (HTML)

[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]

這個主題將說明如何 將您的 Windows 市集應用程式連線到使用網際網路驗證和授權通訊協定 (例如 OpenID 或 OAuth) 的線上身分識別提供者

Windows 市集應用程式使用 Web 驗證代理人連線到線上身分識別提供者。應用程式會呼叫 AuthenticateAsync 方法,這個方法會將要求傳送到線上身分識別提供者,然後取得說明應用程式存取之提供者資源的存取權杖。如需完整範例,請參閱 Web 驗證代理人範例。如需有關 Web 驗證代理人的詳細資訊,請參閱 Web 驗證代理人。如需參考文件,請參閱 Windows.Security.Authentication.Web

當您完成本主題後,請檢查以下事項:

先決條件

  • 您應該熟悉 JavaScript。
  • 您應該熟悉線上身分識別提供者的驗證要求。

向線上提供者註冊應用程式

您必須在要連線的線上身分識別提供者上登錄應用程式。您會知道如何向身分識別提供者登錄應用程式的方法。登錄後,線上提供者通常會提供您應用程式的識別碼。

建立驗證要求 URI

要求 URI 包含傳送驗證要求時所用的線上提供者位址以及其他所需的資訊 (例如應用程式識別碼或密碼)、驗證完成後使用者前往的重新導向 URI,以及預期的回應類型。您可以向提供者詢問所需的參數。

要求 URI 會以 authenticateAsync 方法的 requestUri 參數形式傳送。它必須是安全位址 (開頭必須為 https://)

下列範例顯示如何建立要求 URI。


        var startURL = "https://<providerendpoint>?client_id=<clientid>&scope=<scopes>&response_type=token"; 

        var startURI = new Windows.Foundation.Uri(startURL);

連線到線上提供者

您呼叫 authenticateAsync 方法以連線到線上身分識別提供者並取得存取權杖。這個方法使用上個步驟建構的 URI 做為 requestUri 參數,以及您要將使用者重新導向的 URI 做為 callbackUri 參數。

下列範例顯示如何連線到線上身分識別提供者。

authzInProgress = true; 
        Windows.Security.Authentication.Web.WebAuthenticationBroker.authenticateAsync( 
            Windows.Security.Authentication.Web.WebAuthenticationOptions.none, startURI,endURI) 
            .done(function (result) { 
                document.getElementById("AnyServiceReturnedToken").value = result.responseData; 
                document.getElementById("AnyServiceDebugArea").value += "Status returned by WebAuth broker: " + result.responseStatus + "\r\n"; 
                if (result.responseStatus === Windows.Security.Authentication.Web.WebAuthenticationStatus.errorHttp) { 
                    document.getElementById("AnyServiceDebugArea").value += "Error returned: " + result.responseErrorDetail + "\r\n"; 
                } 
                authzInProgress = false; 
            }, function (err) { 
                WinJS.log("Error returned by WebAuth broker: " + err, "Web Authentication SDK Sample", "error");         
                document.getElementById("AnyServiceDebugArea").value += " Error Message: " + err.message + "\r\n"; 
                authzInProgress = false; 
            }); 

使用單一登入 (SSO) 連線

根據預設,Web 驗證代理人不允許保留 Cookie。基於這個原因,即使應用程式使用者指出他們想要保持登入 (例如,透過在提供者登入對話方塊選取核取方塊),仍然需要在每次想要存取該提供者的資源時進行登入。若要使用 SSO 登入,您的線上身分識別提供者必須啟用 Web 驗證代理人的 SSO,而且應用程式必須呼叫不會使用 callbackUri 參數的 authenticateAsync 超載。

若要支援 SSO,線上提供者必須允許您以 ms-app://appSID 的形式登錄重新導向 URI,其中 appSID 是您應用程式的 SID。您可以在應用程式的 Windows 市集開發人員頁面找到應用程式 SID,或者呼叫 getCurrentApplicationCallbackUri 方法。

下列範例顯示如何使用 SSO 連線到線上身分識別提供者。

var redirectURL = Windows.Security.Authentication.Web.WebAuthenticationBroker.getCurrentApplicationCallbackUri().absoluteUri;
        var startURL = "https://<providerendpoint>?client_id=<clientid>&redirect_uri=" + encodeURIComponent(redirectURL) + "&scope=<scopes>&response_type=token"; 

        var startURI = new Windows.Foundation.Uri(startURL); 

        Windows.Security.Authentication.Web.WebAuthenticationBroker.authenticateAsync( 
            Windows.Security.Authentication.Web.WebAuthenticationOptions.none, startURI) 
            .done(function (result) { 
                if (result.responseStatus === Windows.Security.Authentication.Web.WebAuthenticationStatus.errorHttp) { 
                    document.getElementById("FacebookDebugArea").value += "Error returned: " + result.responseErrorDetail + "\r\n"; 
                } 

                // Parse out the OAuth token from result.responseData 

            }, function (err) { 
                WinJS.log("Error returned by WebAuth broker: " + err, "Web Authentication SDK Sample", "error"); 
            });

在 Blend 中預覽您的驗證應用程式狀態

如果您在執行階段使用 authenitcateUserAsync 驗證應用程式,則可以使用那些相同的認證,在 Blend for Microsoft Visual Studio 2013 中存取應用程式的驗證狀態。這表示您可以在不離開 Blend 的狀態下開啟經過驗證版本的應用程式、變更外觀,然後預覽您所做的變更。

  1. 在 Blend 中,選取 [裝置] 面板的 [設計階段]**** 類別中的 [驗證]Blend 中的 [裝置] 面板
  2. 按 F5 來建置並執行應用程式。
  3. 使用您的認證登入應用程式。
  4. 返回 Blend 並重新載入應用程式。
  5. 返回已建置的應用程式,然後按 Alt+F4 關閉它。 注意  一次只能執行一個應用程式套件識別執行個體。由於 Blend 中的應用程式驗證檢視使用與您的應用程式建置版本相同的套件識別,因此當它也在 Blend 中執行時,您的應用程式便無法在背景執行。  
  6. 返回 Blend 以繼續您的工作。

摘要

在本主題中,我們已說明如何在啟用或不啟用 SSO 的情況下,連線到線上身分識別提供者。

相關主題

開發 Windows 市集應用程式

Web 驗證代理人範例

Web 驗證代理人

Windows.Security.Authentication.Web