EDS 授权
简介
娱乐发现服务 (EDS) 3.1 将不支持匿名流量。所有对 EDS 的请求都需要身份验证。EDS 需要调用方提供 XToken 才能对客户端进行正确身份验证。这些令牌由 XSTS 生成,可通过各种 XBOX 身份验证服务 (XAS) 获得。设备、用户和游戏(title)分别有独立的身份验证服务,它们都定义了令牌的身份信息。 XSTS 是 XBOX LIVE 的守门人。它是判断用户或设备是否被授权连接到任何 XBOX LIVE 服务的第一道防线。在对用户进行身份验证后,XSTS 会生成一个 XToken,用户可以使用它安全地向服务上的任何组件标识自己。此 XToken 是你通往 LIVE 的通行证。 人和物都希望使用我们的服务,我们也希望大多数人和物都能使用我们的服务。但是,我们如何确保物不是伪装成人的,人也确实是他们自称的身份呢?我们向它们提供令牌,供其向其他人证明自己的身份。 这些令牌由 XSTS 生成,通常称为 XToken。XToken 是一个宽泛的术语,用于涵盖包含各种不同内容并且可以有多种不同形式的令牌,但它们都是由 XSTS 服务器创建、签名并可选加密的。在内部,XSTS 使用 MXAN 来创建和格式化令牌。MXAN 是唯一从 XToken 中提取信息的组件。使用令牌的服务将请求标头传递给 MXAN 以进行解析。令牌被处理并验证,令牌中表达的声明(claims)会返回给服务。然后,服务可以使用这些声明值来标识调用用户或设备,并根据这些信息执行操作。 基本身份令牌(针对用户、设备和游戏(title))由 XBOX 身份验证服务 (XAS) 提供。每个 XAS 负责生成一个身份令牌,该令牌为其所负责的各种声明指定值。- XASD (XAS for Devices):创建 DToken,提供设备身份
- XASU (XAS for Users):创建 UToken,提供用户身份
- XAST (XAS for Titles):创建 TToken,提供游戏(title)身份
授权流程
-
获取一个或多个身份令牌。你最多可以请求一个包含 D、U 和 T 各一个令牌的 XToken。你必须至少提供 D 或 U 中的一个。
- 通过提供设备身份验证详细信息从 XASD 请求 DToken
- 使用某种形式的用户身份验证从 XASU 请求 UToken。用户身份验证很可能以 MSA (RPS) 令牌的形式提供。
- 从 XAST 请求 TToken。可用的游戏(title)取决于当前正在运行的平台,因此你还必须向 XAST 提供 DToken。
-
创建 XSTS 请求。
- 定义你为其请求令牌的信赖方 (relying party)。
- 使用 D、U 和/或 T 令牌填充请求属性。
- 执行 XSTS 请求并缓存生成的 XToken。返回的 XToken 包含(至多)来自身份令牌的所有设备、用户和游戏(title)身份信息,以及任何附加声明(当前订阅状态、用户组等)。
3.0 令牌:多用户与单用户
以下是 3.0 令牌的格式:XBL3.0 x=<hash>;<token>
根据 <hash>,令牌的处理方式不同:
- 如果 <hash> 等于 *(星号),则没有特定用户在执行请求,令牌中的所有用户都会存在于反序列化的主体(principal)中。这是真正的多用户形式。
- 如果 <hash> 等于 -(连字符),则没有用户在执行请求。反序列化主体中的任何用户都会被剥离。
- 如果 <hash> 既不等于 * 也不等于 -,则它是一个标识符,指示令牌中的哪个用户正在发起请求。只有指定的用户会出现在反序列化的主体中。所有其他用户都会被剥离。这就是单用户 3.0 令牌。
EDS 是否支持多用户?
- 答案是不支持。在所描述的情况下,主机将始终发送单用户令牌。即使有多个用户登录,也必须有一个指定的”调用方”,其他所有身份都会被舍弃。
