始终验证

始终验证

即使Mojang服务器离线,也让你的服务器始终保持在线!

我已开设支持 Discord 服务器,立即加入!https://discord.gg/uHm8EbfCFr

AlwaysAuth

AlwaysAuth 是 Minecraft 服务器的后备身份验证解决方案,确保即使 Mojang 的身份验证服务器出现故障,你的玩家也能登录。与传统的离线模式变通方案不同,AlwaysAuth 让你的服务器保持在线模式,同时提供到本地身份验证系统的无缝故障转移机制。


工作原理

AlwaysAuth 通过在你的 Minecraft 服务器和 Mojang 官方身份验证服务器之间插入一个本地身份验证服务器来运作:

  1. 当玩家尝试登录时,AlwaysAuth 首先将身份验证请求发送给 Mojang。
  2. 如果 Mojang 在线并作出响应,请求会正常传回你的服务器。
  3. 如果 Mojang 离线,AlwaysAuth 会使用其本地后备系统来验证用户。

此方法确保:

  • 即时故障转移: 无需等待定期检查。即使短暂中断也能无缝处理。
  • 在线模式保持启用: 你永远不必将服务器切换到离线模式。
  • 长时间停机期间可靠验证: 长时间中断也能同样顺畅地处理。

AlwaysAuth 与 AlwaysOnline 对比

功能 AlwaysAuth AlwaysOnline
Spigot 支持 ✅ ✅
Paper 支持 ✅ ✅
BungeeCord 支持 ❌* ✅
Velocity 支持 ✅ ✅
Sponge 支持 ❌** ✅
Fabric 支持 ✅ ❌
NeoForge 支持 ✅ ❌
即时故障转移 ✅ ❌
在线模式保持启用 ✅ ❌
远程数据库支持 ✅ ✅
记录指标 ❌ ✅
多种安全模式 ✅ ❌
基于 IP 的验证 ✅ ✅

*在 BungeeCord 上无法设置自定义会话服务器,根据 md_5 的说法将来也永远无法做到,参见此处。我将创建一个需要许多额外步骤的变通方法,但我建议切换到 Velocity 或使用独立 jar 包

**Sponge 支持计划在未来添加,我只是对 SpongeAPI 不熟悉


主要优势

  • 保持在线模式启用: 无需为停机而牺牲安全性。
  • 支持多个平台: 可用于 Spigot、Paper、BungeeCord、Velocity、Fabric 和 NeoForge。
  • 灵活的身份验证: 可从多种安全模式和后备方法中选择。
  • 可靠: 轻松处理短暂波动和 Mojang 长时间中断。

安装

  1. 下载适用于你服务器平台的 AlwaysAuth 插件。
  2. 将插件放入服务器的 plugins(或等效)文件夹中。
  3. 重启你的服务器。
  4. 在配置文件中配置 AlwaysAuth,以启用本地身份验证、远程数据库支持或基于 IP 的验证等功能。

给自己授予 alwaysauth.admin 权限以访问命令


配置

AlwaysAuth 提供了一个灵活的配置文件,你可以在其中:

  • 启用或禁用特定的后备方法。
  • 为跨服务器身份验证设置远程数据库。
  • 在不同安全模式之间选择。
###################################
#                                 #
#    Always Auth 配置             #
#                                 #
###################################

# 是否应输出调试消息
# 这在独立 jar 包上不起作用
debug=false
# 检查更新并在拥有 alwaysauth.admin 权限的工作人员(和控制台)加入时通知他们
check-updates=true
# 会话服务器的 IP
# 如果设置为 127.0.0.1 或 0.0.0.0(允许公开访问)以外的任何值,将视为外部服务器
# 外部服务器意味着只需设置端口(以匹配该外部服务器),它将使用该端口进行身份验证。
# 请注意,截至目前,如果你使用外部服务器,将不会在服务器上看到控制台日志
ip-address=127.0.0.1
# 会话服务器的端口
port=8765

###########################
#    安全设置             #
###########################

# 为授权服务器启用 HMAC-SHA256 签名验证
# 由于 Minecraft URL 处理的限制,目前默认禁用
# 请改用防火墙规则或 localhost 限制进行访问控制
# 数据库加密无论此设置如何都会工作
authentication-enabled=true
# 数据库加密的密钥(自动生成)
# 请对此保密!用于加密数据库中的 IP 地址和配置文件数据
# 如果删除,数据库也需要重置!
# 要重新生成,请删除此行并重启服务器
secret-key=GENERATED ON STARTUP

###########################
#    后备设置             #
###########################

# 当 Mojang 服务器宕机时启用会话后备
fallback-enabled=true
# 玩家在需要重新验证之前可以保持离线的最大小时数(0 = 始终需要验证)
max-offline-hours=72
# 旧会话数据清理前的天数
cleanup-days=30
# 安全级别:'basic'(始终验证)或 'medium'(使用 max-offline-hours)
security-level=basic
# 上游会话服务器 URL
# 默认是 Mojang 的官方服务器,但此选项是为了与 minehut 的外部服务器等配合使用
upstream-server=https://sessionserver.mojang.com

###########################
#    数据库设置           #
###########################

# 数据库类型:h2、mysql 或 mariadb
database.type=h2
# 数据库主机(H2 不使用)
database.host=localhost
# 数据库端口(H2 不使用)
database.port=3306
# 数据库名称
database.name=minecraft
# 数据库用户名(H2 不使用)
database.username=root
# 数据库密码(H2 不使用)
database.password=