MAuth - 登录 / 身份验证与双因素认证

MAuth - 登录 / 身份验证与双因素认证

Hytale的认证插件,包含双重认证和电子邮件功能。在登录前阻止行走、破坏方块、交互和受到伤害。

实用

MAuth - 专为 Hytale 打造的专业认证系统

由 Machina Studios 开发的一款全面且安全的 Hytale 服务器认证插件。MAuth 提供强大的账户管理、高级安全功能和直观的用户体验,用于保护您的服务器和管理玩家身份。

概述

MAuth 是一个专为 Hytale 服务器设计的完整认证解决方案。它直接与游戏原生的 UI 系统集成,提供流畅的游戏内体验,同时为服务器管理员提供对认证流程、注册规则和安全策略的广泛控制。

MAuth 处理基于密码的认证、持久会话、高级玩家的自动令牌验证、双重认证以及用于外部集成的 OAuth 2.0 REST API——使其既适用于休闲服务器,也适用于大型生产环境。

为什么模组文件这么大?

简短说明: CurseForge 不允许我在运行时下载数据库相关组件,所以所有内容都打包在 Jar 文件中。是的,所有内容。

详细说明: MAuth 需要 SQLite、MySQL 和 PostgreSQL 的数据库驱动程序。通常你只会下载实际使用的那一个,但 CurseForge 禁止运行时下载,因此所有三个驱动都被捆绑在一起,以确保一切正常工作 💼。

此外,Jakarta Persistence 和 Hibernate 也被包含在内,以便模组无需手动编写 SQL 即可存储数据——由于 API 无法动态获取依赖项,所有内容都必须打包到模组存档中。

这些内容都是安全的,不会连接到互联网,只是体积较大。我正在与 CurseForge 联系,以探索更简洁的解决方案。

主要特性

MAuth 提供多种功能,使账户管理更加无缝、安全且可配置:

  • 使用 BCrypt 哈希进行安全的密码登录 🔐
  • 通过身份令牌实现高级/在线账户自动认证 🎫
  • 可选的双重认证以增强安全性 🔑
  • 可配置的注册要求以匹配服务器策略 ⚙️
  • 多数据库支持(SQLite、MySQL、PostgreSQL) 🗄️
  • 用于登录、注册和设置的原生 UI 页面 📱
  • 持久会话以避免频繁重新认证 🔁
  • 带有锁定规则的暴力破解防护 🚧
  • 认证完成前的聊天和移动限制 🚫
  • 支持混合工作流的离线模式兼容性 🌐
  • 用于外部集成的 OAuth 2.0 REST API 🧩

高级安全

安全是 MAuth 的核心支柱。密码使用 BCrypt 进行哈希处理,令牌经过验证,会话相互隔离,可选的 TOTP 双重认证可提供企业级的登录保护。

通过基于 IP 和账户的锁定,对游戏内认证施加暴力破解防御,同时会话过期和清理可防止未授权的持久访问。

用户体验

MAuth 与 Hytale 的 UI 系统集成,呈现现代化的 UI 页面:

  • 登录页面在需要时动态切换到 2FA
  • 带有可选字段的注册页面
  • 带有独立账户和安全选项卡的设置页面

在认证完成之前,玩家暂时无法移动或聊天,从而防止在登录窗口期间的破坏或滥用。

MAuth 同时支持在线和离线服务器,即使服务器本身以离线模式运行,也能自动认证合法的正版用户——在易用性和控制之间取得平衡。

国际化

MAuth 开箱即用支持多种语言,包括:

  • 英语(en-US)
  • 葡萄牙语(pt-BR)
  • 俄语(ru-RU)
  • 波兰语(pl-PL)

可以添加其他语言,欢迎翻译人员参与。

配置

MAuth 的配置文件位于:

  • config/com.machina/mauth(首选,并且在可写时使用)
  • 后备:mods/com.machina/mauth(当主路径无法写入时使用)

配置文件使用 JSON5 格式,它允许注释、尾随逗号以及比严格 JSON 更高的灵活性。

MAuth 的配置组织成以下领域:

数据库设置

  • database.type:使用的后端(sqlitemysqlpostgres
  • database.host / database.port:SQL 的网络连接
  • database.name:数据库名称或 SQLite 文件
  • database.username / database.password:SQL 的凭据
  • database.schema:SQL 环境的可选模式

注册设置

  • registration.required:控制何时需要注册(REQUIRED_FOR_ALLSKIPPED_FOR_ONLINE_MODEOPTIONAL
  • registration.fields.*:切换注册表单字段
  • registration.validation.*:应用密码策略

登录设置

  • login.timeoutSeconds:断开未在限定时间内认证的玩家连接

持久会话设置

  • session.persistent.enabled:允许无需密码重新连接
  • session.persistent.durationMinutes:过期时间窗口

安全设置

  • security.twoFactor.enabled:启用 TOTP 双重认证
  • security.lockout.*:IP 和账户的暴力破解防护

OAuth 2.0 API

  • api.enabled:启用 REST OAuth API
  • api.port:绑定的端口
  • api.jwt.*:令牌签名和过期

OAuth 2.0 API

MAuth 提供一个可选的 OAuth 2.0 REST API,外部系统可以使用它来认证账户、验证凭据、获取个人资料数据或实现 Web 面板和配套应用程序 📡。

该 API 支持资源所有者密码凭据流,并签发访问令牌和刷新令牌。它默认是禁用的,并且应放在代理或负载均衡器后面,以实现速率限制和安全。

技术细节

MAuth 使用行业标准组件和实践:

  • BCrypt 用于密码哈希
  • JPA/Hibernate 用于数据库抽象
  • Ed25519 身份令牌验证用于正版玩家
  • 原生 UI 集成实现无缝用户体验
  • 事件驱动架构实现可扩展性
  • 自动模式创建和迁移

持久会话使用安全的令牌拦截和验证,并在可配置的时间窗口后自动过期。

安装

  1. 将 MAuth 的 Jar 文件放入服务器的 mods 目录中
  2. 根据所需工作流配置 config.json5
  3. 重启或重载插件
  4. 插件初始化存储并开始管理认证

支持开发

您可以在此处支持开发 💖,以帮助推动未来的更新和功能:

https://machinastudios.net/support-us

社区

💬 加入我们的 Discord 社区!

获取帮助、分享想法并与其他开发者交流 🧑‍💻:

  • 🆘 支持与故障排除
  • 💡 建议与反馈
  • 🤝 社区与合作

👉 加入我们的 Discord 服务器https://discord.gg/QAFrzj48EN