多后端验证/Skin Signature API

来自SJMC Wiki

Union API已经实装,不推荐使用Skin Signature API。本页面不再更新。

Skin Signature API是Yggdrasil API的扩展,用于支持皮肤签名修复。启用了这个API的皮肤站,玩家加入安装有修改版MultiLogin的服务器后可以看见其他玩家的皮肤和披风

注意事项:如果你是正版玩家,支持性会受限。

安装和使用

首先,你得是皮肤站管理员,并且你的皮肤站基于Blessing Skin Server搭建。

  • 皮肤站操作
    • 下载这个插件
      • 这是修改过的Yggdrasil API插件
    • 在你的皮肤站上安装刚才下载的插件
    • 前往管理后台-插件配置-Yggdrasil API,添加额外皮肤白名单域名(逗号分隔)
      • 可以复制以下内容(去掉自己的):skin.mc.sjtu.cn,auth.fdc.hath.top,lq11g.xyz,101.34.186.22,skin.xducraft.tech,skin.xauatcraft.com,skin.mualliance.ltd
      • 客户端仅显示来自白名单里的域名的材质,如果不添加客户端还是会看不到
    • 访问%APIRoot%/restore,如果显示success就说明成功
  • Minecraft服务器操作
    • 安装修改版MultiLogin及依赖插件**
    • 添加对应的后端配置文件
皮肤站名称 域名 所属高校
SJMC Skins skin.mc.sjtu.cn 上海交通大学
FDCraft User Center auth.fdc.hath.top 复旦大学
Minecraft·同济 lq11g.xyz 同济大学
XJTUMC 101.34.186.22 西安交通大学
XDUCraft! skin.xducraft.tech 西安电子科技大学
XAUATcraft skin.xauatcraft.com 西安建筑科技大学
MUA User Center skin.mualliance.ltd MC高校联盟

*表格待完善

**修改版MultiLogin暂时不公开下载(有bug;目前只支持Velocity,不支持Bukkit, Bungeecord和Fabric)

原理

玩家登录服务器后,服务器会给玩家发送其他玩家的Profile信息(即皮肤、披风和签名信息)。

玩家客户端会使用自己的皮肤站公钥对Profile信息的签名进行验证,通过验证的皮肤和披风才能显示。此外,还要求皮肤和披风的URL来自皮肤站指定的域名列表。另外,来自Mojang的URL和链接同样会被通过。

MultiLogin实现的皮肤修复:

  • 玩家登录时,通过Mineskin API,把玩家皮肤上传到Mojang,获得Mojang的URL和签名。修改玩家在Minecraft服务器上的Profile,把皮肤URL和签名替换为Mojang的,分发给其他玩家。
  • Mojang不允许上传披风,这种修复方法没办法修复披风问题。
  • 有时连不上Mineskin API会导致修复失败

修改过的修复流程:

  • 玩家登录时,调用各个皮肤站的Skin Signature API获取签名
  • 监听发送给其他玩家的Player Info Packet(即发送Profile的网络包),把Profile里皮肤/披风的签名替换成接收端所属皮肤站的签名,在客户端看起来就是合法的
  • 对正版的支持性较差。如果想要正版玩家也能看到其他玩家的皮肤,则需要配合Mineskin修复一起使用,而且看不到披风。

源码

咕咕,日后上传

Credits

这个项目是对以下开源项目的一些微小改进:

Blessing Skin Server Authlib-Injector MultiLogin