Skip to content
CaaMoe edited this page Aug 4, 2022 · 24 revisions

介绍

猫踢螺钉 是一款服务端插件,功能是让您的服务器能够支持正版与多种外置登录共存,用来连通两个或多个外置认证服务器下的玩家,让他们能在一起玩。

快速上手

MultiLogin 不需要更改 JVM 启动参数,也没有必须安装的前置插件依赖, 在联网的环境下将合适的版本拖动至 plugins 文件夹下即可使用。 初次使用将会花费一些时间来下载缺失的依赖文件。

老版 Yggdrasil 服务端配置例子

配置 Minecraft 原版验证服务器

  official:
    name: "正版"
    body:
      url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

配置 Blessing Skin 类型验证服务器

  blessingSkin:
    name: "Blessing Skin"
    body:

      # 假设当前 Blessing Skin 的 Yggdrasil api 地址为 {url}
      url: "{url}/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

配置 统一通行证 账户验证服务器

  nide8:
    name: "统一通行证"
    body:

      # 假设当前服务器 UID 为 {uid}
      url: "https://auth2.nide8.com:233/{uid}/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

FaQ

Yggdrasil 和 外置登录 是什么

Yggdrasil 是 Minecraft Java 使用的账户认证方案,专门用来处理 Minecraft 的账号验证的请求;而外置登录,可以说是仿照 Yggdrasil 这套系统为非溢价玩家提供像正版一样的账号安全登录的体验。

多外置登录的弊端

由于第三方 Yggdrasil 之间不存在任何联系,共存后难免会有以下问题

  • 重名:
    众所周知,正常的服务器内是不可能出现 username 一模一样的两个玩家同时游戏的, 但是多外置的环境下打破了这个限制,而几乎所有的 Minecraft Server 都是以玩家的 uuid 作为主键处理和存取玩家数据的,所以不会对重复的 username 做出限制,即在服务器中就可能出现两个 uuid 不同但是 username 相同的玩家同时游戏。 而相同的 username 会导致一些命令中的玩家选择器发生异常或故障,也有可能导致一些第三方组件的崩溃,而他的实现成本非常低,是个不可忽视的大问题。
  • uuid 碰撞:
    几乎所有的 Minecraft Server 都是以玩家的 uuid 作为主键处理和存取玩家数据的,所以 Yggdrasil 给玩家分配的 uuid 是绝对不可能重复的,但是在多外置的环境下打破了这个限制。 虽然 uuid 碰撞的概率相当的低,但也不是不可能的事情,并且一旦出现 uuid 碰撞,就很有可能能造成毁灭性的后果,并且原因还及难排查。这并不是一般的服务器维护者能承受得住的。。。
  • 皮肤问题:
    由于原版的安全机制,会对即将在客户端中显示的材质进行签名检查,在多外置的情况下,由于每个外置服务商几乎都不可能提供他们的数字签名密钥,所以难免会存在一些显示上的问题, 即不同外置登录下的玩家都不能看到对方的皮肤。这听起来是没什么大不了的事情,但还是多外置共存下最难解决的问题之一。
  • 失效的 Mojang API:
    由于多外置共存,Mojang API 它有可能帮倒忙,在以 username 检索玩家的在线 uuid 时将会变得异常困难,并且还可能获取不到正确的结果。典型的就是原版基于 uuid 的白名单系统。 在多外置的环境下它将失效,达不到预期的使用效果。

...

MultiLogin 是怎么处理这些安全问题的呢?

待编辑

相关链接

Clone this wiki locally