Union 联合认证是由 MUA 皮肤站和各高校皮肤站组成的玩家数据同步系统,可以允许来自多个成员皮肤站的玩家登录同一个 Minecraft 服务器,并且可以互相看见皮肤和披风。
Union 联合认证提供了绑定机制用于处理 UUID/角色名称冲突的情况,并且允许 Minecraft 服务器指定成员皮肤站黑/白名单。
对于 Minecraft 玩家,您需要是高等院校的在读学生或校友,才能在 MUA 皮肤站或加入 Union 系统的高校皮肤站注册联合认证账号。使用联合认证账号,便可进入使用 Union 联合认证的其他高校的 Minecraft 服务器游玩,或登录到支持 Union OAuth 登录的网站。
对于服主,按照下方教程使用 Authlib-Injector 后,让玩家在 MUA 皮肤站 注册账号,并在启动器登录即可。
你需要拥有修改 Minecraft 服务器配置的权限。
使用 Authlib-Injector,设置 Yggdrasil API Root 为如下三种模式之一:
https://skin.mualliance.ltd/api/union/yggdrasil
https://skin.mualliance.ltd/api/union/yggdrasil/only/{code}
https://skin.mualliance.ltd/api/union/yggdrasil/excludes/{code}
其中,{code}
是服务器名称缩写,多个服务器使用_
分隔,例如SJMC_FDC_MUA
服务器名称缩写可以从皮肤站Yggdrasil API插件配置页面或https://skin.mualliance.ltd/api/union
获取。
详细方法可查看开服设置Authlib-Injector教程。
如果你需要同时允许正版或者其他非Union成员皮肤站加入服务器,你仍然需要使用MultiLogin,将Union皮肤站作为一个单一的Yggdrasil提供方,然后添加其他服务器。
需要注意的是,上述情况下第三方皮肤站、Union成员皮肤站之间只能看到皮肤,正版皮肤和披风可以被所有玩家看到。
皮肤站名称 | 域名 | 所属高校 |
---|---|---|
SJMC 用户中心 | skin.mc.sjtu.cn | 上海交通大学 |
MUA User Center | skin.mualliance.ltd | MC高校联盟 |
XJTUMC | skin.xjtumc.com | 西安交通大学 |
This is XDUCraft! | www.xducraft.cn | 西安电子科技大学 |
Minecraft•同济 | lq11g.xyz | 同济大学 |
XAUATcraft | skin.xauatcraft.com | 西安建筑科技大学 |
TaruCraft方块创作社 | skin.tarucraft.club | 塔里木大学 |
NWUcraft | skin.nwucraft.com | 西北大学 |
FDCraft 用户中心 | auth.fdc.jingyijun.xyz | 复旦大学 |
NPUskin | skin.npucraft.com | 西北工业大学 |
Bobby Skin | bobbyskin.com | 大连交通大学 |
燕山大学官方MC皮肤站 | skin.ysumc.club | 燕山大学 |
PKU MC | mc.leavelet.io | 北京大学 |
CSU-MC | csu-mc.magicalsheep.cn | 中南大学 |
Minecraft of 大车埋土 | mcweb.unsafe.top | 大连理工大学 |
NMO Skin | skin.nmo.net.cn | 南京大学 |
IMUcraft-方块内大 | skin.imucraft.cn | 内蒙古大学 |
NUISTCraft 皮肤站 | skin.dustella.net | 南京信息工程大学 |
SIT-Minecraft | skin.sitmc.club | 上海应用技术大学 |
SUESMC | user.suesmc.ltd | 上海工程技术大学 |
和瑛联合验证 | skin.heryin.net | 云南大学 |
LightZone | LNU | mcskin.mevisual.top | 辽宁大学 |
䙶大皮肤站 | skin.nwafu.com.cn | 西北农林科技大学 |
ZJUTMC皮肤站 | skin.zjutmc.club | 浙江工业大学 |
FZUcraft | 103.43.10.189 | 福州大学 |
SDUST MC社 | sdust.mualliance.ltd | 山东科技大学 |
SCMCU | skin.scmcu.cn | 四川高校联合认证 |
河南高校联合认证站 | mc.twinklestars.top | 河南高校联合认证 |
SDUcraft 用户中心 | skin.sducraft.cn | 山东大学 |
邮立方皮肤站 | cop.imu.nm.cn | 西安邮电大学 |
温州商学院皮肤站 | skin.wzbcmc.cn | 温州商学院 |
ECUST | mcskin.ecustvr.top | 华东理工大学 |
HUST Skin | skin.starkettle.com | 华中科技大学 |
SWPUMC用户中心 | skin.swpumc.cn | 西南石油大学 |
CAUCraft 皮肤站V3 | skin.cauc.fun | 中国民航大学 |
MineJUFE用户中心 | mc.jxufe.edu.cn/skin | 江西财经大学 |
南财皮肤站 | skin.nufe.wiki | 南京财经大学 |
GZSZ MC 皮肤站 | skin.gzszmc.cn | 赣州师范高等专科学校 |
JSUCraft Skin | skin.jsucraft.buzz | 江苏大学 |
福建省Minecraft高校联盟皮肤站 | skin.fjmua.cn | 福建高校联合认证 |
CYMC 用户中心 | skin.jntm.site | 重庆医科大学 |
厦大Minecraft社皮肤站 | skin.xmc.net.cn | 厦门大学MC同好会 |
Gxucraft Skin | skin.gxucraft.cn | 广西大学服务器/GxuCraft |
NENUMC用户中心 | auth.nenu-mc.barrierslink.cn | 东北师范大学 |
安徽农业大学MC | 124.221.142.121 | 安徽农业大学 |
Conduit Minecraft | skin.shoumc.club | 上海海洋大学 |
*表格按加入顺序排序。表格内容随时可能过期,最新列表可以从皮肤站Yggdrasil API插件配置页面或https://skin.mualliance.ltd/api/union
获取。
联系人:@ff98sha
你需要是皮肤站管理员,且皮肤站是基于Blessing Skin的。Union目前接受MUA成员高校MC组织申请加入。
接入Union的皮肤站需满足以下条件:
接入Union的步骤如下:
SJMC, FDC, TJU
)。皮肤站接入Union完成后,将组织内Minecraft的服务器Yggdrasil API修改为Union地址(见上一节),即可将服务器接入Union。
grep 'user' /etc/nginx/nginx.conf
命令查看)Union允许一名玩家拥有多个成员皮肤站的角色。如果这些角色都是你的,你可以将不同成员皮肤站的角色进行绑定。绑定不要求角色名一致。
一个角色的绑定状态包括:
一个角色如果在Union中有重名/相同UUID的角色,会分配一个不产生重复的名称(在原角色名后加上皮肤站代码)和UUID。
假设一名玩家使用角色A进入了使用Union API验证的Minecraft服务器,且服务器仅允许在皮肤站列表C中的玩家进入:
对于1.19及以上的Minecraft服务器,需要保持UUID一致性(即要求登录时客户端获取的UUID和进入服务器时服务器获取的UUID一致),需要额外绑定相同的UUID。
根据角色名查询:https://skin.mualliance.ltd/api/union/profile/mapped/byname/{name}
根据UUID查询:https://skin.mualliance.ltd/api/union/profile/mapped/byuuid/{uuid}
返回值均为:{"internal_id":{内部id},"uuid":"{uuid}","name":"{name}","backend_scopes":{"bind":"{主皮肤站}","all":["{绑定的皮肤站1}","{绑定的皮肤站2},"{绑定的皮肤站N}"]}}
根据角色名查询:https://skin.mualliance.ltd/api/union/skin/byname/{name}
根据UUID查询:https://skin.mualliance.ltd/api/union/skin/byuuid/{uuid}
返回值均为玩家皮肤图片。
以下内容涉及到的名词:
加入服务器时,玩家向自己所属的成员皮肤站发送join请求。
当Minecraft服务器请求hasJoined时,向Union服务器发送hasJoined请求,Union服务器将请求转发到该玩家所属的成员皮肤站,并将数据返回给Minecraft服务器。
Union服务器和成员皮肤站会定期进行数据同步。
每一个成员皮肤站持有一个Key,Union服务器通过Key验证发送请求的成员皮肤站。成员皮肤站通过IP地址验证请求来自Union服务器。
客户端的Authlib Injector在启动时会向成员皮肤站请求签名公钥和允许域名列表,用于验证Minecraft服务器返回的玩家数据签名和材质URL,签名不匹配或材质域名不在允许列表则不会在游戏内显示皮肤。
在新服务器加入Union后,Union服务器会向成员皮肤站同步签名私钥。
成员皮肤站使用Union的私钥对玩家数据进行签名,所有使用Union私钥签名的玩家数据都可以被登录到任意成员皮肤站的客户端接受,可以显示皮肤和披风。
MUA皮肤站的隐私声明请见其注册页。
加入Union的皮肤站的数据中,仅有角色名和对应uuid作为必要数据会被传输到MUA皮肤站,不涉及个人信息的传输。
5.2.2-0.2.0(2024/07/09)
支持Union OAuth2。
5.1.6-0.1.6(2023/10/17)
接入联合黑名单。
5.1.6-0.1.5(2023/7/14)
支持自动更新。(目前强制开启,之后更新开关)
5.1.6-0.1.4(2023/7/5)
修复了由于数据库不区分大小写导致玩家名和UUID对应关系出错的问题。
5.1.6-0.1.3(2023/2/13)
修复了5.1.6-0.1.2版本未开启邮箱验证的皮肤站无法登录的问题。
5.1.6-0.1.2(2023/2/13)
禁止了未验证邮箱的用户加入服务器。
5.1.6-0.1.1(2022/10/24)
修复了配置页面的前端bug,该bug导致即便数据过时,配置页面也显示[数据已同步]。
5.1.6-0.1.0(2022/10/23)
添加了绑定UUID功能,修复1.19以上无效的用户信息公钥问题
5.1.5d1(2022/10/4 19:37)
修复了Profile删除时不会同步到服务器的bug
5.1.5d(2022/10/4)
无需手动获取Key,现在Key是自动下发的了(没有安全性问题)
修复了一个安全性问题
Union服务器鉴权因为开发方便被注释掉了,现已修复
支持在Union服务器上请求后端进行数据同步
GitHub: bs-community/blessing-skin-plugins(MIT,Union成员插件修改自Yggdrasil API插件源码)
GitHub: bs-community/blessing-skin-server(MIT)
Union服务器安装的Union插件是原创插件。