> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XBOX services 身份验证

> 关于使用 XSTS 令牌和签名进行 XBOX Live 调用身份验证的背景，涵盖客户端 XSAPI 用法和服务到服务的 RESTful 流程。

本主题提供有关 XBOX services 调用身份验证的背景信息。

为了以更快的速度公开 XBOX services，并允许游戏使用这些服务而不依赖于特定的恢复版本，XBOX services 作为 RESTful HTTPS 端点发布。这些服务的身份验证和授权需要有效的 XBOX 安全令牌服务 (XSTS) 令牌和签名。有关 XSTS 令牌的更多信息，请参阅 [XBOX services 安全令牌 (XSTS 令牌)](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-security-tokens)。

通过两种可能的路径调用 XBOX services。

1. *XBOX services 客户端*
   来自已通过 XBOX services 身份验证的客户端。这些调用始终在用户上下文中。
2. *服务到服务*
   来自自定义游戏 Web 服务，通过服务到服务的 XBOX services 调用。这些调用要么代表用户进行，要么直接作为服务进行。
   有关来自游戏服务的调用的更多信息，请参阅 [从游戏服务向 XBOX services 发出的调用](/services/xbox-services/fundamentals/s2s-auth-calls/s2s-calls/live-title-service-calls-xbox-live)。

## 对 XBOX services 的客户端调用

对于通过 Microsoft Game Development Kit (GDK) 对 XBOX services 的所有调用，我们强烈建议游戏使用与 Microsoft Game Development Kit (GDK) 版本捆绑在一起的 XBOX Service API (XSAPI)。这些 API 处理 HTTP 请求，并通过对象将可用的服务数据直接返回给游戏。它们还实现了我们为 XBOX services 和身份验证推荐的连接和缓存行为。有关这些 API 的更多信息，请参阅 XBOX Service API 文档 [XSAPI 参考](/reference/live/xsapi-c/atoc-xsapi-c)。

以下部分仅供完整性和更深入了解 XBOX services 身份验证之用。

### 初始设置

XBOX services 对所有游戏进行透明预配置。不需要额外的端点配置。这适用于所有 `*.xboxlive.com` 子域。

### 令牌检索和连接流程

要使用任何 XBOX services 端点，必须提供 XSTS 身份验证令牌和消息签名。如果没有此信息，将拒绝与服务的通信。

XSTS 令牌和用户标识（用户哈希）必须包含在请求的 `Authentication` 标头中。消息签名必须在请求的 `Signature` 标头中指定。有关这些标头结构的详细信息，请参阅 [XBOX services 安全令牌 (XSTS 令牌)](/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/security-tokens/live-security-tokens)。

### 获取 XSTS 令牌

XSTS 令牌和签名标头数据通过 [XUserGetTokenAndSignatureUtf16Async](/reference/system/xuser/functions/xusergettokenandsignatureutf16async) API 获取。它提供服务请求所需的标头。

然后，游戏使用 `XUserGetTokenAndSignatureUtf16Async` API 通过以下流程为 XBOX services 端点请求 XSTS 令牌。

1. 对当前用户调用 `XUserGetTokenAndSignatureUtf16Async`。在 API 调用中包含 XBOX services 的 URL 和所需的标头或消息正文。
   此 API 调用为 XBOX services 端点检索 XSTS 令牌。该调用为消息和预定义标头生成消息签名。
2. 通过 `XUserGetTokenAndSignatureUtf16Result` 从异步结果中检索 XSTS 令牌和签名。
   `XUserGetTokenAndSignatureUtf16Result` 返回加密的 XSTS 令牌。游戏应将返回的令牌视为不透明数据。令牌数据不得写入磁盘或缓存在游戏空间中，除非用于随后的服务调用。
3. 根据需要在 HTTPS 请求的 Authorization 标头中使用 Microsoft Windows HTTP Services (WinHTTP)、xCurl 和 XSTS 令牌。

### 令牌过期和刷新

XSTS 令牌仅在特定持续时间内有效。XSTS 令牌的默认过期时间为四小时。每个令牌都包含一个时间戳，该时间戳由所有 XBOX services 验证。

[XUserGetTokenAndSignatureUtf16Async](/reference/system/xuser/functions/xusergettokenandsignatureasync) API 必须用于每个新的身份验证或登录请求。`XUserGetTokenAndSignatureUtf16Async` 处理令牌过期和缓存。该 API 确保游戏始终收到有效令牌。否则游戏不得缓存令牌。

当向 XBOX services 端点出示过期或无效的令牌时，将返回 HTTP/401 错误。


## Related topics

- [服务身份验证](/zh-CN/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/index.md)
- [XBOX services 身份验证（目录）](/zh-CN/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/live-service-authentication-nav.md)
- [游戏服务的 XBOX services 身份验证](/zh-CN/services/xbox-services/fundamentals/s2s-auth-calls/service-authentication/live-title-service-authentication.md)
- [使用 Microsoft Store API 对你的服务进行身份验证](/zh-CN/publishing/xstore-commerce/xstore-authenticating-service.md)
- [身份验证](/zh-CN/services/xbox-services/fundamentals/identity/auth/index.md)
