【编程开发】初探新版Minecraft正版验证方法

您所在的位置:网站首页 登录minecraft 【编程开发】初探新版Minecraft正版验证方法

【编程开发】初探新版Minecraft正版验证方法

2024-07-16 16:08| 来源: 网络整理| 查看: 265

(题图为Minecraft微软登录背景)

在之前的新闻中,Mojang表示要逐步将现在的Minecraft账号迁移到Microsoft微软账号上,还表示会给迁移的玩家赠送一款正版披风(以防老玩家反对)。

而且就在最近,现在在Minecraft官网上购买游戏已经是改为需要使用微软账号购买了,不提供原先Minecraft账号的购买方法了。

也许突然要求被迁移到微软,很多老玩家会不适应。但是仔细一想,微软收购Minecraft还是在2014年的事,在这六年间,Java版玩家似乎并没有感受到多大的改变,微软拥有了Minecraft,却似乎只对基岩版有话语权,只运营了微软商店上的Win10版,而对Java版没有怎么插手。这一波迁移账号,属实给自己刷了不少存在感。

那么这次迁移账号,是好事吗?我觉得是。Minecraft账号的安全性本来就不高,只是绑定了一个邮箱,再加上可能大多数人都没设置过的密保问题,这也导致了Minecraft黑卡泛滥的现状,在淘宝搜索MC账号,那些十几块钱的账号就是通过非法途径获得的,贪小便宜只会吃亏。另外,Mojang的网络在中国访问也并不是很友好,游戏中时常出现“无效会话”或者“身份验证目前正在停机维护”就是正版验证掉了,甚至还有时候会出现突如其来的Minecraft验证服务器宕机,导致各服务器只能临时关闭正版验证来让玩家登录。至于微软的服务器,emmm,在国内的访问质量可能也不太好,流畅的时候还是挺流畅的,至少本身肯定不会宕机。

另外,第三方启动器是否就没有了?不会,只要启动器作者不要太lazy。新的正版验证使用了Microsoft的OAuth验证,以此取代旧版的Yggdrasil认证系统,使用新版验证系统得到的最终内容与旧版是一致的,游戏启动参数没有变化。不过以后第三方启动器中也能看到微软的登录界面了。(最靠谱跟进新版启动方案的第三方启动器可能是MultiMC,因为其作者Peterix是Mojang员工且表示参与了新版认证系统的开发。)

微软的OAuth验证

那么进入正题,说说新版认证系统是怎样的吧。一下内容参考了wiki.vg的内容,这是一个有关代码开发的mcwiki,我也翻译创建了中文页面:https://wiki.vg/ZH:Microsoft_Authentication_Scheme

首先我们需要登录微软账号,登录链接为:https://login.live.com/oauth20_authorize.srf ?client_id=00000000402b5328&response_type=code&scope=service%3A%3Auser.auth.xboxlive.com%3A%3AMBI_SSL &redirect_uri=https%3A%2F%2Flogin.live.com%2Foauth20_desktop.srf

在浏览器中打开的样子

输入账号完成登录后,会跳转到一个链接,但没有任何东西:

此处code的内容就是微软的授权码了,把它提取出来进行之后的验证。

此时需要使用该授权码获取授权令牌,向https://login.live.com/oauth20_token.srf发送POST请求,在内容中添加刚才获取的授权码,其中client_id依然为00000000402b5328,这是在微软游戏全家桶中MC的编号:

在这里获取到expire_id是该令牌有效期,为一天,access token是一长串jwt(JSON Web令牌),refresh_token用于刷新有效期。

通过微软验证之后,进行Xbox Live验证,使用刚才获得的访问令牌向https://user.auth.xboxlive.com/user/authenticate发送POST请求:

嗯,又是一长串Token,这是XboxLive的令牌,还有一个uhs,我们还要再套一次娃获取XSTS令牌:

在此处获取到了XSTS令牌后终于可以向Minecraft网站获取自己的登录信息了,在这里需要使用上一步中获得的令牌以及uhs:

终于,我们获取到了用于启动游戏的access token,也就是游戏启动所需要的那个access token。

等等,似乎有什么不对,我明明还没有迁移我的Minecraft账号,为什么就有了访问令牌?对了,咱们还不知道自己的uuid和mc游戏id呢,没有这两个照样启动不了游戏。

需要将访问令牌用GET发送到https://api.minecraftservices.com/entitlements/mcstore来获取是否该账号是否拥有MC,那么显然我的微软账号还没有MC,那么在这一步中是获取不到任何东西的。另外,同样的格式向https://api.minecraftservices.com/minecraft/profile发送GET请求可以获取到玩家的uuid和用户名以及皮肤信息。

更详细的内容分可以在https://wiki.vg/ZH:Microsoft_Authentication_Scheme 上找到,那么,到此为止,就可以用这些信息来启动游戏了,第三方启动器的正版验证就可以跟进咯。同样,由于Minecraft的启动方式没有改变,所以盗版/离线登录是不会受到影响的。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3