Об этом проекте

Лин Yggdrasil — это система внешней аутентификации Yggdrasil, созданная для Minecraft, полностью совместимая с экосистемой authlib и предоставляющая возможности регистрации аккаунтов, входа, управления персонажами и хостинга скинов/плащей. Встроенный веб-мастер установки, панель управления в аниме-стиле и многоуровневая система безопасности позволяют за несколько минут развернуть безопасный и красивый сервис внешнего входа. ## Быстрый старт Требования к окружению: Java 25 (рекомендуется; теоретически поддерживается Java 21+), рекомендуется не менее 512 МБ доступной памяти. Запуск в три шага: 1. Проверьте версию Java 2. Скачайте LingYggdrasil-2.2.7.jar и поместите его в отдельный пустой каталог 3. Запустите (этот каталог станет каталогом данных) При первом запуске автоматически откроется мастер установки (`http://<адрес сервера>:35598`); следуйте подсказкам для настройки учётной записи администратора, базы данных и почты. После завершения установки программа одновременно предоставляет три сервиса: | Порт | Назначение | Область доступа | |------|------|----------| | 35565 | Пользовательский интерфейс (регистрация, вход, панель, скины, друзья и т. д.) | Публичный | | 35577 | Yggdrasil API (для лаунчеров Minecraft) | Публичный | | 35599 | Админ-панель | Должна оставаться приватной | | 35598 | Мастер установки | Открыт только при первой установке | ## Возможности ### Готово к использованию - Веб-мастер установки: при первом запуске автоматически помогает настроить учётную запись администратора, базу данных и почтовый сервис - Поддержка нескольких баз данных: 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 - Полная реализация протокола: совместимое подключение аутентификации Yggdrasil для主流 лаунчеров Minecraft - Три режима подписи: Ed448 (современный), RSA-SHA512, RSA-SHA1 (совместимый) - Система Token: для каждого персонажа автоматически генерируется 64-битный высоконадёжный Token - Хостинг текстур: публично открытый endpoint `/textures/{type}/{hash}` - Управление сессиями: полный流程 входа, выхода и проверки сессии - Расширения удобных запросов: дополнительные endpoint для поиска по имени, пакетных запросов и т. д. ### Интернационализация Встроено 10 языков: упрощённый китайский, традиционный китайский, китайский (華夏), English, Русский, Deutsch, Français, Italiano, 日本語, 한국어. Языковые пакеты в формате JSON, поддерживают внешнее переопределение и глубокое слияние. ## Подключение клиента На примере лаунчеров вроде HMCL, поддерживающих пользовательский Yggdrasil: 1. В настройках «Аккаунты» или «Способ входа» лаунчера выберите «Пользовательский Yggdrasil / внешний вход» 2. В поле адреса сервера аутентификации укажите корневой адрес API (например, `https://example.com`, при прямом подключении — `http://<IP>:35577`) 3. В поле имени пользователя укажите имя персонажа, в поле пароля — Yggdrasil Token этого персонажа ## Технологический стек | Компонент | Технология | |------|------| | Язык | Java 25 | | Веб-фреймворк | Javalin | | Подключение к БД | Пул соединений HikariCP | | База данных | SQLite / MySQL / PostgreSQL | | Шифрование | Bouncy Castle (Argon2, Ed448, RSA) | | Почта | Eclipse Angus Mail | | Логирование | Logback + SLF4J | | Сериализация | Jackson | | Инструмент сборки | Maven | ## Лицензия Проект распространяется под лицензией GNU Affero General Public License v3.0.