绑定 Minecraft 在线账户
目前 projectGDT 支持三种 Minecraft 在线账户的绑定。
不强制使用自建的认证系统,而是保持与其他形式 Minecraft 在线账户的兼容,这也是 projectGDT 的优势所在。
Minecraft Java 版正版账户 (Microsoft)
web-panel 将用户重定向至 Microsoft OAuth2 的登录页面。
用户在页面中输入 Microsoft 账户的用户名、密码后,该页面再将用户重定向回 web-panel,此时的重定向 URI 包含
authCode
。web-panel 使用
authCode
,先后调用 XBL 服务、XSTS 服务、Minecraft Service,获得minecraftAccessToken
。将
minecraftAccessToken
发送至 daemon,由 daemon 调用 Minecraft Service 得到用户的 UUID 和玩家代号。
Minecraft Java 版外置登录账户 (LittleSkin)
web-panel 将用户重定向至 LittleSkin OAuth2 的登录页面,后续过程与正版账户的绑定相近。
Minecraft 基岩版账户 (XBOX LIVE)
web-panel 向 daemon 请求,获得一串 6 位验证码,显示给用户。
web-panel 拉起 Minecraft 基岩版,添加认证服务器链接。
用户连接认证服务器,并在随后弹出的窗口内输入该验证码。
认证服务器记录用户的 XUID 和玩家代号,连同验证码传递给 daemon。
用户被踢出认证服务器,同时 daemon 向 web-panel 推送事件。
web-panel 显示认证完成。
以上认证方式为笔者原创,暂定名为server-assisted-xbox-auth。
目前存在的问题之一是:Minecraft 基岩版的版本繁多,且不同版本之间互不相通。对于每个协议版本(Protocol Version),理论上必须架设一个服务端以完成此项工作——这是不现实的。我们只能选择一些“主流”服务端版本,这进而大大增加了工作量,并且需要长期维护。Geyser 支持更多的基岩版版本,但这只是权宜之计。如果你有解决此问题的方法,愿不吝赐教。
笔者曾经研究过 XBOX LIVE 的认证 API,但最终因资料庞杂而放弃。如果你有在网页端完成所有认证流程的方案,愿不吝赐教。
Last updated