替代认证

替代认证

在你的服务器上使用第三方认证服务器,如Ely.by,而不干扰Mojang认证

管理

替代认证

替代认证是一个服务端模组,允许多个第三方或自定义认证服务器与 Mojang 的认证服务器共存。默认情况下,配置了两个提供方:Mojang 和 Ely.by。你可以自由地添加、移除或重新排序它们。

要求:

  • 在 server.properties 中设置 online-mode=true
  • 建议设置 enforce-secure-profile=false,通过第三方提供方加入的玩家没有签名的聊天密钥

仅限服务端。 在客户端使用第三方认证提供方的玩家需要兼容的启动器或注入器。

特性

  • ⚙️ 可配置的认证提供方列表。
  • 🔐 玩家加入服务器时按顺序回退尝试提供方
  • 🔒 可选的阻止回退:如果用户名在某个提供方上存在但认证失败,则不再尝试后续提供方。
  • 👕 通过第三方皮肤服务器支持玩家纹理(皮肤和披风)
  • 📝 跨所有已配置提供方的白名单支持

工作原理

加入服务器

当玩家连接时,会按顺序尝试每个已配置的提供方,直到有一个成功认证该会话。如果没有提供方成功,则拒绝玩家访问。

如果启用了 preventFallbackIfPlayerExists,并且在某个提供方上找到了玩家的用户名但认证失败,则不再尝试后续提供方。这可以防止注册在回退服务上的用户冒充更早提供方上的账户。

白名单

当玩家被添加到白名单时,会按顺序查询每个提供方,直到用户名被解析为 UUID。如果在任何提供方上都找不到该玩家,则无法添加。检查提供方的顺序由配置中的 providers 列表决定。

如果两个玩家在不同提供方上共享相同的用户名怎么办?

默认情况下,第一个解析出用户名的提供方胜出。如果你需要将白名单添加给一个用户名存在于非主要提供方上的玩家,请临时重新排序 providers 列表,并使用 /whitelist add 手动添加他们。

配置

配置文件在首次启动时自动创建于 config/alternative-auth.json。

configVersion

内部架构版本。由模组自动管理,请勿手动编辑。

debugMode

当为 true 时,在认证和白名单操作期间会将详细日志写入控制台。用于故障排除。默认禁用。

preventFallbackIfPlayerExists

当为 true 时,如果用户名在当前提供方上找到但认证失败,则停止提供方链。防止通过回退服务进行用户名欺骗,用户名在回退服务上唯一的非正版玩家不受影响。默认禁用。

providers

有序的认证提供方列表。每个条目支持以下字段:

字段 必需 描述
name ✅ 提供方的显示名称
checkUrl ✅ 会话验证端点,玩家加入服务器时查询
profileUrl ✅ 单个用户名到 UUID 的查询端点,用于白名单操作
profilesUrl ✅ 批量用户名到 UUID 的查询端点
propertyUrl ❌ 用于获取玩家属性(如皮肤和披风)的端点。使用 {0} 表示玩家用户名,使用 {1} 表示其 UUID
{
    "configVersion": 1,
    "debugMode": false,
    "preventFallbackIfPlayerExists": false,
    "providers": [
        {
            "name": "Mojang",
            "checkUrl": "https://sessionserver.mojang.com/session/minecraft/hasJoined",
            "profileUrl": "https://api.minecraftservices.com/minecraft/profile/lookup/name/",
            "profilesUrl": "https://api.minecraftservices.com/minecraft/profile/lookup/bulk/byname"
        },
        {
            "name": "Ely.by",
            "checkUrl": "https://authserver.ely.by/session/hasJoined",
            "profileUrl": "https://authserver.ely.by/api/users/profiles/minecraft/",
            "profilesUrl": "https://authserver.ely.by/api/profiles/minecraft",
            "propertyUrl": "http://skinsystem.ely.by/textures/signed/{0}"
        }
    ]
}

常见问题

Q: 无法加入服务器,“Invalid signature for profile public key”

A: 在你的服务器上安装 No Chat Reports。建议在客户端上也安装,但并非必需。

Q: 支持 Forge 或 NeoForge 吗?

A: 计划支持 NeoForge。

Q: 模组什么时候更新到最新的 Minecraft 版本?

A: 模组以最新稳定版为目标,并在时间允许时更新。不计划支持快照版本。

Q: 我发现了 bug、有建议,或者模组运行不正常

A: 欢迎在 GitHub 上提交 issue!