Skip to main content
各种场景需要构建网站或 Web 应用,用户可以使用其 Microsoft 帐户(以前称为其 XBOX services 帐户)进行身份验证。这种身份验证允许访问(通常是只读)用户的 XBOX services 数据,例如排行榜、统计信息、游戏剪辑和个人资料。 要启用用户的身份验证,网站或 Web 应用首先必须向 Microsoft 注册以接收用于 Microsoft 帐户身份验证的标识。这是一次性预配步骤。在运行时,网站首先允许用户使用 Microsoft 帐户进行身份验证,这提供了随后可以交换为 XBOX services 访问令牌的凭据。 XBOX services 访问令牌随后可用于检索用于帐户链接目的的信息,并代表用户访问 XBOX services。以下部分更详细地概述了这些身份验证流程。

身份验证概述

启用用户身份验证并获取访问 XBOX services 数据授权的过程包括三个步骤。第一步是一次性预配步骤: 网站注册
  • 网站或 Web 应用获取用于 Microsoft 帐户的预配标识。
  • 此注册在发行商的 Microsoft Entra ID 中进行。
完成此步骤后,您可以开发您的网站或 Web 应用,并在运行时执行以下步骤以接收 XBOX 玩家授权和身份验证: 用户对 Microsoft 帐户的身份验证
  1. 用户访问网站或启动应用。
  2. 用户通过 OAuth2.0 端点被重定向以登录到其 Microsoft 帐户。
  3. 用户成功输入其凭据并同意网站或应用代表其访问 XBOX services 信息。
  4. 网站或应用收到授权代码。
  5. 网站或应用使用授权代码请求访问令牌,并请求正确的范围。
  6. 网站或应用收到访问令牌(如果请求了刷新令牌,还会收到刷新令牌)。
用户对 XBOX services 的身份验证
  1. 网站或应用使用访问令牌请求 XBOX services 用户令牌 (U 令牌)。
  2. 然后使用用户令牌从 XBOX 安全令牌服务 (XSTS) 获取 X 令牌(访问令牌),以访问 XBOX services 或游戏服务。

网站注册

要能够使用 Microsoft 帐户对网站上的用户进行身份验证,网站或应用首先需要通过 Microsoft Entra ID 应用注册界面进行注册。
  1. 使用有权在 Microsoft Entra ID 中注册应用的帐户登录 Azure 门户
  2. 选择 “应用注册”
  3. 选择 ”+ 新注册”
    • 输入此应用程序的名称
    • 对于 “支持的帐户类型”,选择 “仅个人 Microsoft 帐户”
    • 输入您希望身份验证流程在成功身份验证后将用户重定向到的重定向 URL。请记下此 URL,因为稍后会用到。 您以后也可以添加其他 URI
    • 完成应用注册
  4. 记下应用程序(客户端)ID 和目录(租户)ID
  5. 选择证书和密钥
    • 选择 ”+ 新客户端密钥”
    • 输入描述
    • 选择过期范围
    • 单击”添加”
    • 记下创建的客户端密钥值,因为稍后会用到。此值应仅在您的服务上安全地使用和存储。

集成

实现上述流程,并使用注册过程中创建的标识符实现以下内容:
  1. 通过请求授权代码开始 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 范围是可选的,仅需要用于在原始登录令牌过期后需要调用的场景。此请求不能使用其他附加范围。
  2. 使用授权代码和应用程序注册过程中生成的客户端密钥兑换 Microsoft 帐户访问令牌:
    • 创建具有以下属性的 POST Web 请求: URL: https://login.microsoftonline.com/consumers/oauth2/v2.0/token 标头: Content-Type: application/x-www-form-urlencoded 正文:
  • 来自服务的响应将包含一个 JSON 响应,其中包含以下信息: 令牌类型: Bearer 范围: XboxLive.signin XboxLive.offline_access Expires_in: Value Access_token: [token value] 这是您的访问令牌,您将使用它与 XBOX services 交换以获得 XBOX 用户令牌。
  1. 您可以通过调用 XBOX 身份验证端点并将您的 Microsoft 帐户访问令牌交换为 XBOX 用户令牌来请求 XBOX 用户令牌,完成以下请求:
    • 创建具有以下属性的 POST Web 请求: URL: https://user.auth.xboxlive.com/user/authenticate 标头: x-xbl-contract-version: 1 标头: content-type: application/json 正文: 一个格式正确的 json 有效负载,包括以下数据:
  • 来自服务的响应将包含一个 json 有效负载,其中包含以下信息,包括 XBOX 用户令牌。在下一步中您将需要 XBOX 用户令牌:
  1. 然后您可以将您的用户令牌交换为 X 令牌。如果您想代表用户执行服务到服务调用,并需要用户的 DelegationToken 声明或 XUID,您可以为自己的信赖方请求 X 令牌,然后像通常那样处理该令牌以提取所需的声明。
最后修改于 2026年8月25日