这个项目能做什么

泠 Yggdrasil 是一个为 Minecraft 打造的 Yggdrasil 外置鉴权系统,完整兼容 authlib 体系,提供账户注册、登录、角色管理与皮肤/披风托管能力。内置 Web 安装向导、二次元风格的管控面板与多层级安全体系,让你在几分钟内搭起一套安全又好看的外置登录服务。 ## 快速开始 环境要求:Java 25(推荐;理论上支持 Java 21+),建议至少 512 MB 可用内存。 三步启动: 1. 确认 Java 版本 2. 下载 LingYggdrasil-2.2.7.jar,放入独立空目录 3. 启动(该目录将成为数据目录) 首次启动会自动进入安装向导(`http://<服务器地址>:35598`),按提示完成管理员账户、数据库与邮箱配置即可。安装完成后,程序会同时提供三个服务: | 端口 | 用途 | 访问范围 | |------|------|----------| | 35565 | 用户端(注册、登录、仪表盘、皮肤、好友等) | 对外公开 | | 35577 | Yggdrasil API(供 Minecraft 启动器调用) | 对外公开 | | 35599 | 管理后台 | 应保持私密 | | 35598 | 安装向导 | 仅首次安装时开放 | ## 功能特性 ### 开箱即用 - Web 安装向导:首次启动自动引导设置管理员账户、数据库与邮件服务 - 多数据库支持:SQLite、MySQL、PostgreSQL - 单 JAR 部署:打包为单个可执行 JAR ### 插件系统 - 外部插件加载:启动时自动扫描 `plugins/` 目录并加载插件 jar - `plugin.yml` 描述:仿 Paper 风格,声明名称、版本、作者、依赖、图标与权限节点 - 后台插件管理:支持手动启停 - 插件二级菜单:插件可注册至多一个后台二级菜单 - 动态权限节点:内置节点与插件节点统一由来源动态注册 - 插件开发 API:构建同步产出 `LingYggdrasil-plugin-api-2.2.7.jar` ### 安全体系 - Argon2 密码加密:6 级强度可调 - 邮箱验证:支持域名黑白名单控制 - 同 IP 注册限制:防止批量注册 - 名称黑名单:支持通配符 - 独立会话体系:用户端、管理端、API 使用相互隔离的会话 Cookie - Root 完整性保护:校验 `root_info` 表 - 登录与操作限流:关键操作均有频率限制 ### 用户端 - 角色管理:创建多个游戏角色,每个角色拥有独立的 Yggdrasil Token 与 UUID - 皮肤 & 披风:上传、管理个人皮肤与披风,支持别名命名、公开/私有可控 - 材质库:公共材质广场,按热度排序,无限滚动懒加载 - 点赞 & 收藏:为材质点赞助力上热门 - 共享材质:好友共享与我的收藏双板块 - 好友系统:好友代码添加、好友详情卡片、拉黑管理、勾选式材质共享 - 3D 皮肤预览:集成 skinview3d,支持 360° 旋转预览 - 安全设置:自助修改密码、邮箱、昵称,查看与重新生成 Token - 操作日志:查看、下载与清空自己的操作日志 - 主题与语言:浅色/深色主题切换,10 种语言随账户持久化 ### 管理后台 - 仪表盘总览:用户数、角色数、皮肤/披风数量等核心数据,组件支持拖拽排序 - 用户管理:查看、搜索、创建、编辑、封禁用户 - 角色管理:全局 CRUD,支持名称修改、所有权转移与形态切换 - 皮肤 & 披风管理:全局管理纹理资源,配置上传大小、数量、存储路径与频率限制 - 安全设置:6 级加密等级可视化卡片 - 系统管理:站点信息、功能开关、域名、公告、备案、操作日志等分组配置 - 权限组:管理员权限组与用户权限组,精细控制菜单可见性与功能可用性 - 世界树设置:签名算法、Token 有效期、频率限制、UUID 版本等协议配置 ### Yggdrasil 协议 - 完整协议实现:兼容主流 Minecraft 启动器的 Yggdrasil 认证接入 - 三种签名模式:Ed448(现代)、RSA-SHA512、RSA-SHA1(兼容) - Token 体系:每个角色自动生成 64 位高强度 Token - 纹理托管:公开暴露 `/textures/{type}/{hash}` 端点 - 会话管理:完整的登入、登出与会话校验流程 - 便利查询扩展:提供按名查询、批量查询等扩展端点 ### 国际化 内置简体中文、繁体中文、中文(華夏)、English、Русский、Deutsch、Français、Italiano、日本語、한국어 共 10 种语言。语言包为 JSON 格式,支持外部覆盖与深度合并。 ## 客户端接入 以 HMCL 等支持自定义 Yggdrasil 的启动器为例: 1. 在启动器的「账户」或「登录方式」设置中,选择「自定义 Yggdrasil / 外置登录」 2. 认证服务器地址填写 API 根地址(例如 `https://example.com`,直连则填 `http://<IP>:35577`) 3. 用户名填写角色名,密码填写该角色的 Yggdrasil Token ## 技术栈 | 组件 | 技术 | |------|------| | 语言 | Java 25 | | Web 框架 | Javalin | | 数据库连接 | HikariCP 连接池 | | 数据库 | SQLite / MySQL / PostgreSQL | | 加密 | Bouncy Castle(Argon2、Ed448、RSA) | | 邮件 | Eclipse Angus Mail | | 日志 | Logback + SLF4J | | 序列化 | Jackson | | 构建工具 | Maven | ## 许可协议 本项目采用 GNU Affero General Public License v3.0 许可协议。