驗證概觀
為使用者啟用驗證並取得存取 XBOX 服務資料之授權的程序包含三個步驟。第一個步驟是一次性的佈建步驟: 網站註冊- 網站或 Web 應用程式會取得佈建的身分識別,以搭配 Microsoft 帳戶使用。
- 此註冊會在發行者的 Microsoft Entra ID 中進行。
- 使用者存取網站或啟動應用程式。
- 使用者會被重新導向,以透過 OAuth2.0 端點登入其 Microsoft 帳戶。
- 使用者成功輸入其認證,並同意網站或應用程式代表其存取 XBOX 服務資訊。
- 網站或應用程式會收到授權碼。
- 網站或應用程式利用授權碼並要求正確的範圍,以要求存取權杖。
- 網站或應用程式收到存取權杖 (以及重新整理權杖,如果有要求的話)。
- 網站或應用程式使用存取權杖要求 XBOX 服務使用者權杖 (U 權杖)。
- 接著會使用使用者權杖從 XBOX 安全性權杖服務 (XSTS) 取得 X 權杖 (存取權杖),以存取 XBOX 服務或遊戲服務。
網站註冊
若要能夠使用 Microsoft 帳戶向網站驗證使用者,必須先透過 Microsoft Entra ID 應用程式註冊介面註冊網站或應用程式。- 使用有權在 Microsoft Entra ID 中註冊應用程式的帳戶登入 Azure 入口網站
- 選取 “App Registration”
- 選取 ”+ New Registration”
- 輸入此應用程式的名稱
- 針對 “Supported account types”,選取 “Personal Microsoft accounts only”
- 輸入您希望驗證流程在驗證成功後將使用者重新導向的重新導向 URL。請記下此值,因為您稍後會需要它。 您也可以稍後新增其他 URI
- 完成應用程式註冊
- 記下應用程式 (用戶端) 識別碼和目錄 (租用戶) 識別碼
- 選取 Certificates & Secrets
- 選取 ”+ New Client Secret”
- 輸入描述
- 選取到期範圍
- 按一下 Add
- 記下建立的用戶端祕密值,因為您稍後會需要它。此值只應在您的服務上使用並安全地儲存。
整合
使用註冊程序期間建立的識別碼實作上述流程,並實作下列項目:-
透過要求授權碼開始 OAuth2.0 流程:
- 將使用者導覽至
https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize?client_id=[Application (client) ID from Registration]&response_type=code&redirect_uri=[RedirectUI given during registration]&scope=xboxlive.signin&xboxlive.offline_access在此範例中,我們要求登入權杖和離線權杖的存取權,離線權杖可用於在存取權杖到期後重新整理存取權杖。這也會向使用者顯示正確的帳戶隱私權和活動通知。 - 使用者完成登入其 Microsoft 帳戶之後,會被重新導向至提供的重新導向 URI,並附加
"code=",後面接著授權碼。 - 使用
xboxlive.offline_access範圍是選擇性的,只有在需要於原始登入權杖到期後進行呼叫的案例才需要。此要求不能使用其他額外的範圍。
- 將使用者導覽至
-
使用授權碼和在應用程式註冊程序期間產生的用戶端祕密兌換 Microsoft 帳戶存取權杖:
- 建立具有下列屬性的 POST Web 要求:
URL:
https://login.microsoftonline.com/consumers/oauth2/v2.0/token標頭:Content-Type: application/x-www-form-urlencoded本文:
- 建立具有下列屬性的 POST Web 要求:
URL:
- 來自服務的回應會包含具有下列資訊的 JSON 回應:
Token Type:
BearerScope:XboxLive.signin XboxLive.offline_accessExpires_in:ValueAccess_token:[token value]這是您的存取權杖,您將用它與 XBOX 服務交換 XBOX 使用者權杖。
- 您可以呼叫 XBOX 驗證端點來要求 XBOX 使用者權杖,並完成下列要求,將您的 Microsoft 帳戶存取權杖交換為 XBOX 使用者權杖:
- 建立具有下列屬性的 POST Web 要求:
URL:
https://user.auth.xboxlive.com/user/authenticate標頭:x-xbl-contract-version: 1標頭:content-type: application/json本文:包含下列資料的格式正確 JSON 承載:
- 建立具有下列屬性的 POST Web 要求:
URL:
- 來自服務的回應會包含 JSON 承載,其中包含下列資訊 (包括 XBOX 使用者權杖)。您在下一個步驟中會需要 XBOX 使用者權杖:
- 接著,您可以將使用者權杖交換為 X 權杖。如果您想要代表使用者執行服務對服務呼叫,並且需要 DelegationToken 宣告或使用者的 XUID,可以為您自己的信賴憑證者要求 X 權杖,然後像平常一樣處理該權杖以擷取所需的宣告。
