AuthCore
AuthCore — это высокопроизводительный серверный фреймворк для входа и безопасности Minecraft Fabric для версий 1.16+. Он защищает офлайн- и онлайн-серверы от ботов и гриферов, комплексно управляя сессиями игроков.
- Загрузчики
- FabricNeoForgeForge
- Скачиваний на Modrinth
- 3 тыс.
- Подписчиков на Modrinth
- 9
- версий
- 9
- Обновлён
- 24 сентября 202624 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
Фортресс-фреймворк для серверов Minecraft. Единая кодовая база для 1.16.0 → 26.x+ на Fabric, Forge и NeoForge.
Закалён против любых сценариев атак, свободен от гонок при пиковых нагрузках и спроектирован выдерживать 500k+ зарегистрированных аккаунтов и тысячи игроков онлайн с ровным, без всплесков, потреблением ресурсов.
Быстрый старт • Главное • Матрица Jar • Архитектура • Команды • Конфигурация • Модель безопасности • Живые метрики • Сообщество
📑 Содержание
Нажмите, чтобы развернуть / свернуть содержание
- ✨ Главное и основная философия
- 🚀 Быстрый старт за 5 минут
- 📦 Какой Jar мне нужен?
- 🧩 Архитектура и жизненный цикл аутентификации
- 🛡️ 7-слойная защита от обхода детекта
- ⚙️ Раздельная архитектура конфигурации
- 🚦 Полная матрица настройки функций
- 🌍 Мультиязычная локализация
- 🔁 Интеграция с прокси и сетью (Velocity / BungeeCord)
- 🔮 Совместимость с множеством версий и загрузчиков
- 🧑💻 Сборка из исходников
- 🧪 Тестирование безопасности
- 🐳 Проверка через Docker (хост-тесты)
- 📚 Полный портал документации
- ❓ Часто задаваемые вопросы (FAQ)
- 🗺️ План развития и выпущенные этапы
- 📈 Активность, история звёзд и метрики
- 🤝 Сообщество и участие
- 📜 Лицензия
✨ Главное и основная философия
🏰 Единая универсальная кодовая базаОдна общая кодовая база охватывает Minecraft 1.16.0 → 26.x+ и снапшоты на Fabric, Forge, NeoForge и Velocity/BungeeCord. Каждый jar диапазона выполняет двойную роль: серверный мод и прокси-плагин без затрат на портирование. | 🔒 Эшелонированная защита и нулевые утечки7-слойная защита от обхода детекта, хеширование паролей Argon2id/BCrypt/SCRAM, физическая капча с действием на основе риска, блокировки при брутфорсе, honeypot и HTTPS REST веб-панель администратора с токен-аутентификацией. |
⚡ Масштаб 500k+ и нулевые всплески ресурсовO(1) неблокирующие поиски по UUID-ключу, ограниченные LRU-кэши, ленивая загрузка из базы данных, атомарные последовательные шлюзы и троттлинг телепортов к якорю гарантируют ровные, без всплесков, кривые памяти и CPU при штормовых подключениях. | 🛡️ Гибридная аутентификация, устойчивая к сбоямАвтоматическое определение режима сервера из |
🚀 Быстрый старт за 5 минут
graph LR
A[Выбери Range Jar] --> B[Закинь в mods/ или plugins/]
B --> C[Запусти сервер]
C --> D[Автосоздание конфига и БД]
D --> E[Игроки заходят и авторизуются]- Выбери нужный jar: Подбери jar под свой загрузчик и версию Minecraft из таблицы jar-ов на Modrinth или в GitHub Releases.
- Установка: Закинь jar-файл прямо в папку
mods/своего сервера (или вplugins/прокси). - Запусти сервер: AuthCore работает из коробки без обязательной настройки. Встроенная база данных SQLite (
authcore.db) автоматически создаётся вconfig/authcore/. Первый вход:
- Premium-игроки: Проверяются асинхронно через сессионные серверы Mojang с фоновыми повторными попытками. Автоматически входят без пароля.
- Cracked / офлайн-игроки: Помещаются в безопасное limbo-лобби, где им предлагаются интерактивные кнопки в чате или команды: `/register
или/login `.
- Администрирование: Запусти
/authcore validateдля проверки целостности конфигурации или открой интерактивную веб-панель по адресуhttps://127.0.0.1:25570.
┌─────────────────────────────────────────────────────────────┐
│ ✓ AUTHCORE v1.0.0 — FORTRESS FRAMEWORK INITIALIZED │
├─────────────────────────────────────────────────────────────┤
│ Platform : Fabric / Forge / NeoForge / Velocity │
│ Minecraft : 1.16.0 → 26.x+ (Universal Range Engine) │
│ Database : SQLite (WAL) / MySQL / PostgreSQL │
│ Security Stack : 7-Layer Detection Bypass Resistance │
│ Crypto : Argon2id (M:64MB, T:3, P:1) + SCRAM │
│ Proxy Forwarding : Auto-Detected (Velocity HMAC / Bungee) │
│ Web Panel : https://127.0.0.1:25570 (Token Guarded) │
│ Status : 0 Warnings · 180+ Security Audits PASS │
└─────────────────────────────────────────────────────────────┘[!NOTE] Впервые с AuthCore? Загляни в полное руководство для админа сервера — там пошаговые инструкции с картинками, настройка прав и топологии прокси.
📦 Какой jar мне нужен?
Каждый скомпилированный jar выполняет обе роли: нативный мод для сервера (Fabric, Forge или NeoForge) и плагин для прокси BungeeCord/Velocity (определяется автоматически при запуске). Выбери jar под свой диапазон версий Minecraft и загрузчик:
| Jar-артефакт | Версии Minecraft | Загрузчик | Целевая Java | Эпоха и архитектура |
|---|---|---|---|---|
| `authcore-1.16-1.18-fabric-.jar` | 1.16.0 – 1.18.2 | Fabric | 17 | Эпоха Intermediary-маппингов |
| `authcore-1.16-1.18-forge-.jar` | 1.16.0 – 1.18.2 | Forge | 17 | Эпоха Intermediary-маппингов |
| `authcore-1.19-1.21-fabric-.jar` | 1.19.0 – 1.21.11 | Fabric | 21 | Эпоха Intermediary-маппингов |
| `authcore-1.19-1.21-neoforge-.jar` | 1.19.0 – 1.21.11 | NeoForge | 21 | Эпоха Intermediary-маппингов |
| `authcore-26.1-26.2-fabric-.jar` | 26.1 – 26.2+ и снапшоты | Fabric | 25 | Эпоха без обфускации (официальные имена Mojang, совместимость вперёд) |
| `authcore-26.1-26.2-neoforge-.jar` | 26.1 – 26.2+ и снапшоты | NeoForge | 25 | Эпоха без обфускации (официальные имена Mojang, совместимость вперёд) |
[!TIP] Зачем jar-ы с диапазонами? Minecraft 26.0+ поставляется с полностью необфусцированным кодом, а Fabric intermediary устарел начиная с 26.x (см. анонс Fabric). Каждый jar с диапазоном тщательно проверен на всех крайних версиях своего диапазона с помощью нашего параллельного Docker-тестового стенда.
🧩 Архитектура и жизненный цикл аутентификации
flowchart TD
subgraph Connect["1. Рукопожатие и перехват угроз"]
Join([Игрок заходит на сервер]) --> DetectProxy["Определение прокси и форвардинга\n(BungeeCord / Velocity HMAC)"]
DetectProxy --> Intercept["Проверка ClientGuard\nФлуд пакетами · Аномалии призраков · Разброс взгляда"]
Intercept --> RateLimit{"Превышены лимиты\nили IP в чёрном CIDR?"}
RateLimit -->|Да| KickDrop["Сброс соединения / Оповещение ханипота"]
RateLimit -->|Нет| Limbo["Удержание игрока в Limbo\nИнертный инвентарь · Нулевой дрейф · Ограниченная телепортация"]
end
subgraph AuthEval["2. Аутентификация и верификация"]
Limbo --> CheckMode{"Режим сервера / аккаунта"}
CheckMode -->|Premium авто-вход| MojangCheck["Асинхронная проверка сессии Mojang\n(Устойчиво к сбоям Mojang API)"]
MojangCheck -->|Подтверждено| PassAuth["Обход парольной аутентификации"]
CheckMode -->|Offline / Cracked| PromptAuth["Показ динамического заголовка / Action Bar\nЗапрос /register или /login"]
PromptAuth --> CaptchaCheck{"Сработал риск-скор?"}
CaptchaCheck -->|Высокий риск| TaskCaptcha["Принудительная капча действием\n(Присесть / Прыжок / Поворот головы)"]
CaptchaCheck -->|Обычный| CredentialCheck["Проверка хеша (Argon2id/BCrypt/SCRAM)\nИли TOTP 2FA / Email OTP"]
TaskCaptcha --> CredentialCheck
end
subgraph SessionBind["3. Привязка сессии и выпуск в игру"]
CredentialCheck -->|Успех| PassAuth
PassAuth --> SessionIssue["Выдача токена сессии и SSO-рассылка через Redis"]
SessionIssue --> RestoreState["Восстановление позиции игрока, инвентаря и возможностей"]
RestoreState --> InGame([Полный доступ к игре предоставлен])
end🛡️ Устойчивость к обходу обнаружения
AuthCore разворачивает 7-слойный стек защиты в глубину, призванный сделать автоматические обходы клиентов, атаки бот-ферм и атаки с подстановкой учётных данных математически и практически неосуществимыми:
| Слой | Механизм | Устраняемые векторы угроз |
|---|---|---|
| 1. Привязка сессии | Случайный 32-байтовый ключ аттестации компаньона для каждого сервера, ротируемый при перезагрузке | Подмена компаньона, replay-атаки, кража токена сессии |
| 2. Валидация последовательности пакетов | Строгий конечный автомат входа HELLO → SETTINGS → READY | Headless-клиенты, пропускающие пакеты инициализации, эксплойты с нарушением порядка |
| 3. Поведенческое профилирование | Риск-движок ClientGuard: аномалии бренда клиента, призрачные клиенты, зондирование таба | Внедрение макросов, автоматические сканеры, флудеры пакетами |
| 4. Анализ паттернов взгляда | Дисперсия дельты вращения камеры (профилирование коэффициента вариации) | Боты с замороженным pitch/yaw или роботизированным линейным движением камеры |
| 5. Распределение времени входа | CV-анализ временных меток входа на уровне IP (скользящее окно 60с, ≥3 выборки) | Синхронизированные ботнеты, скриптовые всплески подстановки учётных данных |
| 6. Фингерпринтинг ферм | Обнаружение ≥3 различных ников, подключающихся с одного IP в течение 5с | Распределённые ротаторы прокси, координация массовых альт-ферм |
| 7. Разведка входов | Фингерпринты устройств, оповещения GeoIP по странам и строгие лимиты попыток 2FA (5/мин/IP) | Захваты аккаунтов, повторное использование учётных данных, брутфорс |
Архитектурные гарантии безопасности
- Fail-Closed по умолчанию: Аутентификация прокси требует синхронизации через Redis; пустой список
trusted-proxiesавтоматически отключает небезопасный приём прокси. - Криптографическая независимость: В бинарнике нет захардкоженных ключей; секреты аттестации динамически генерируются высокоэнтропийным CSPRNG при первом запуске.
- Целостность состояния и защита памяти: Все карты обнаружения и отслеживания IP имеют принудительные границы кардинальности и автоочистку на тике для противодействия атакам на исчерпание памяти.
- Нет единой точки отказа: Каждый слой защиты работает независимо; даже если атакующий обойдёт проверки бренда клиента, анализ таймингов пакетов и поведения остаётся активным.
🛠️ Команды
Команды игрока
| Команда | Синтаксис и использование | Назначение |
|---|---|---|
/register | `/register [] [<2fa>]` | Создать и привязать новый аккаунт игрока с проверкой правил пароля |
/login | `/login [<2fa>]` | Авторизовать аккаунт и выйти из лобби-лимба |
/account | /account logout · `set-password ·codes` | Управлять активными сессиями, сменить пароль или сгенерировать одноразовые коды восстановления |
/account | `/account email ·nickname ` | Настроить email для восстановления пароля или задать локализованный никнейм |
/account | /account set-mode online|offline | Переключить режим авторизации игрока между автоматическим входом через Mojang и входом по паролю |
/account | `/account recover [ ]` | Самостоятельное восстановление пароля через одноразовую верификацию по email (SMTP) |
/account | /account unregister | Безвозвратно удалить данные аккаунта (в соответствии с политиками сервера) |
/discord | /discord link · /discord unlink | Сгенерировать код привязки аккаунта Discord для синхронизации с DiscordSRV или панелью |
Команды администратора
Доступ требует уровня OP 3+ в Minecraft, права LuckPerms или выполнения из консоли сервера.
| Команда | Синтаксис и использование | Назначение |
|---|---|---|
/authcore reload | /authcore reload | Горячая перезагрузка всех раздельных блоков конфигурации и файлов локализации |
/authcore validate | /authcore validate | Проверка конфигурационных файлов и подключений к базе данных в режиме dry-run |
/authcore compat | /authcore compat | Сгенерировать системный отчёт: окружение загрузчика, версии конфигов, статус DiscordSRV/InteractiveChat |
/authcore import | `/authcore import authme ` | Импортировать устаревшую базу данных AuthMe SQLite (без потери данных; старые хеши автоматически обновляются при входе) |
/authcore whois | `/authcore whois ` | Просмотреть подробное состояние аккаунта: UUID, дата регистрации, IP, статус 2FA, последний режим |
/authcore history | `/authcore history ` | Просмотреть последние 10 попыток входа игрока с рассчитанными оценками риска и данными GeoIP |
/authcore list | /authcore list players · list online/offline-players | Запросить аккаунты игроков из базы данных с фильтрацией |
/authcore destroy-session | `/authcore destroy-session ` | Аннулировать активную сессию на всех сетевых инстансах и кикнуть игрока |
/authcore set-password | `/authcore set-password *(алиас:resetpw`)* | Сбросить пароль игрока административно |
/authcore set-mode | `/authcore set-mode online|offline ` | Принудительно изменить режим авторизации аккаунта |
/authcore delete | `/authcore delete player ` | Удалить аккаунт и очистить записи из базы данных |
/authcore set-spawn | `/authcore set-spawn limbo ` | Задать точные координаты мира для лобби-лимба неавторизованных игроков |
/authcore backup | /authcore backup · export | Запустить немедленное резервное копирование базы данных или экспорт полного JSON-дампа |
/authcore maintenance | /authcore maintenance on|off | Включить или выключить режим обслуживания, ограничивающий доступ к серверу только для администраторов |
⚙️ Конфигурация
AuthCore создаёт все конфигурационные файлы в config/authcore/. Архитектура использует один файл на домен конфигурации, что гарантирует чистые диффы в системе контроля версий и отсутствие утечки учётных данных в игровые конфиги:
| Конфигурационный файл | Область | Основные настройки |
|---|---|---|
settings.conf | Корневые настройки | language, debugMode, logging, cache-max-users, version схемы |
session.conf | Сессии и безопасность | TTL сессий, блокировка аккаунтов, SSO, веб-панель, SMTP email, ClientGuard |
lobby.conf | Лобби-лимб и капча | Ограничения лимба, таймауты, настройка action-капчи, интервалы антивибрации |
password-rules.conf | Правила паролей | Минимальная длина, обязательные классы символов, алгоритм хеширования (Argon2id/BCrypt) |
commands.conf | Права на команды | Права LuckPerms для команд, алиасы и переопределения уровня OP |
database.conf | Хранилище базы данных | Строки подключения и размер пула для SQLite, MySQL, PostgreSQL и Redis |
| `messages-.conf` | Локализация | Сообщения интерфейса, титры, action bar, текст чата (например, messages-en.conf) |
Пример фрагмента конфигурации
# settings.conf
language = "en" # en | zh | es | de | fr | pt | ru
cache-max-users = 20000 # Ограниченный размер LRU-кэша
# session.conf
session {
# Режим online/offline сервера определяется автоматически из server.properties!
timeout-ms = 3600000 # Время жизни активной сессии (60 минут)
account-lock {
enabled = true
max-failed-logins = 8
lock-duration-ms = 600000
}
security {
webhook-url = "https://discord.com/api/webhooks/..." # Оповещения безопасности в Discord
}
proxy-support {
enabled = false # Включите, если сервер стоит за Velocity или BungeeCord
protocol = "auto" # Поддерживает "auto", "velocity", "bungeecord"
}
web-panel {
enabled = false # REST-панель администратора
host = "127.0.0.1"
port = 25570
token = "CHANGE_ME" # Сгенерируйте через: openssl rand -hex 16
}
email {
enabled = false # Коды восстановления по SMTP и оповещения о входе
host = "smtp.gmail.com"
port = 587
username = "admin@example.com"
password = "app-password"
from = "AuthCore Security <admin@example.com>"
}
}
# lobby.conf
lobby {
movement-correction-radius = 1.5 # Дистанция до плавного возврата без дёрганья
movement-correction-interval-ms = 600 # Минимальное время между корректировками позиции
}🚦 Настройка функций одним взглядом
Все функции AuthCore модульные и опциональные. Для базового использования SQLite никакой настройки не требуется. Включайте только то, что нужно вашей сети:
| Функция | Блок конфигурации | Зачем нужна и от чего защищает | Команда быстрой настройки / ключ |
|---|---|---|---|
| Капча на действия человека | lobby.captcha | Убирает 99% ботов на входе, выдавая подозрительным игрокам физические задания (присесть/прыгнуть/посмотреть) | lobby { captcha { enabled = true } } |
| 2FA / MFA (TOTP и Email) | session.authentication | Защищает ценные аккаунты персонала и игроков от украденных/слитых паролей | session { authentication { allow-totp-support = true } } |
| Блокировка аккаунта и защита от брутфорса | session.account-lock | Останавливает словарные атаки, временно блокируя аккаунты после повторных неверных паролей | session { account-lock { enabled = true } } |
| Постоянные сессии | session.enable-sessions | Улучшает UX игроков, запоминая подтверждённые входы при переподключении с того же IP | session { enable-sessions = true } |
| Движок рисков ClientGuard | session.client-guard | Обнаруживает внедрение макросов, ghost-клиенты и флуд пакетами по шкале риска от 0 до 100 | session { client-guard { enabled = true } } |
| AuthIntelligence | session.auth-intelligence | Выявляет всплески credential stuffing, ботофермы с множеством аккаунтов и ротацию IP | session { auth-intelligence { ... } } |
| Сетевые лимиты | session.rate-limit | Поглощает флуд подключениями и входами с каждого IP, не роняя основной поток | session { rate-limit { enabled = true } } |
| Правила IP по CIDR | ip-rules.conf | Явно добавляет в белый или чёрный список IP-адреса, диапазоны VPN или сети ASN | deny = ["45.155.0.0/16"] |
| SSO для всей сети | session.sso + Redis | Единый вход для прокси-сетей с несколькими серверами: авторизуйся один раз, играй где угодно | database { redis { enabled = true } } + sso { enabled = true } |
| Веб-панель администратора | session.web-panel | Защищённый браузерный интерфейс с токен-аутентификацией и REST API для удалённого управления | session { web-panel { enabled = true; token = "..." } } |
| Ловушка-ханипот для сканеров | session.honeypot | Слушает пустой порт, автоматически ловя и блокируя вредоносные сетевые сканеры | session { honeypot { enabled = true; port = 25571 } } |
| Гибридный автовход | session.authentication | Автоматически входит в подтверждённые аккаунты Mojang, при этом не мешая пиратским клиентам | session { authentication { premium-auto-login = true } } |
| Прокси-форвардинг | session.proxy-support | Распаковывает реальные IP и UUID клиентов из BungeeCord или современных HMAC-рукопожатий Velocity | session { proxy-support { enabled = true; protocol = "auto" } } |
| Режим техобслуживания | session.maintenance | Ограничивает доступ игроков, оставляя его только администраторам, во время обновлений базы данных или сервера | /authcore maintenance on |
| Автоматический вайтлист | session.auto-whitelist | Автоматически добавляет игроков в стандартный вайтлист ванильного сервера после регистрации | session { auto-whitelist { enabled = true } } |
| Shadow-Ban | session.shadow-ban | Тихо изолирует злоумышленников, не сообщая им об обнаружении | session { shadow-ban { enabled = true } } |
| Автоматические бэкапы | session.backup | Периодически создаёт атомарные резервные копии учётных данных и таблиц базы данных | session { backup { interval-hours = 24; keep = 10 } } |
| Привязка Discord | session.discord-link | Связывает профили Minecraft с Discord ID для проверки ролей в сообществе | session { discord-link { enabled = true } } |
| Вебхуки и оповещения по email | session.security | Отправляет оповещения безопасности в реальном времени в каналы Discord или на почту администратора | session { security { webhook-url = "https://..." } } |
🌍 Языки
AuthCore из коробки включает 7 языков, переведённых сообществом. Активный язык задаётся параметром language = "en" в settings.conf:
| Код | Язык | Код | Язык |
|---|---|---|---|
en | English | de | Deutsch (German) |
zh | 简体中文 (Simplified Chinese) | fr | Français (French) |
es | Español (Spanish) | pt | Português (Portuguese) |
ru | Русский (Russian) |
[!TIP] Свои локализации: Положите файл `messages-.conf
вconfig/authcore/`. AuthCore автоматически подхватит ваши строки и запишет в лог все отсутствующие ключи относительно английского шаблона.
🔁 Прокси и сеть (Velocity / BungeeCord)
AuthCore изначально поддерживает современные прокси-архитектуры Minecraft — как при установке в качестве мода на бэкенде, так и прямо на прокси:
- Универсальное автоопределение IP-форвардинга: Автоматически разбирает legacy-пейлоады рукопожатия BungeeCord и Velocity (
ip\0uuid\0properties). Настоящий удалённый IP сразу используется для GeoIP-поиска, проверки сессии, ограничения частоты запросов и анализа входов. - Modern Identity Forwarding в Velocity: Защищённый HMAC-проверкой приём логина
velocity:player_infoбезопасно считывает данные, используя общийvelocity-secret, заданный вvelocity.toml. - Канал межмодового взаимодействия (
authcore:auth): Отправляет сетевые пакеты `AUTH_CHANGED|||<1|0>`, позволяя AuthCore без конфликтов работать рядом со сторонними бэкенд-плагинами авторизации. - Redis SSO при переброске хаб → игровой сервер: Игроки, авторизованные на хабе/в лимбо, сохраняют активную сессию при переброске между игровыми нодами без повторного ввода пароля.
- Fail-Closed при включённом прокси: Прямые подключения в обход прокси отклоняются сразу, если поддержка прокси активна.
⚡ Производительность
С самого начала спроектирован так, чтобы без усилий масштабироваться до 500 000+ зарегистрированных аккаунтов и тысяч одновременных входов без борьбы за потоки и скачков памяти:
- O(1) безблокировочные резолверы пользователей: События горячего пути (перехват пакетов, проверки движения, клики в инвентаре и события чата) находят игрока за O(1) через
ConcurrentHashMapс ключом по UUID (User.getUser(player)). Ноль аллокаций строк и ноль запросов к базе на горячих путях. - Многопоточность без дедлоков: Потокобезопасный канонический кэш пользователей в памяти гарантирует ровно один экземпляр
Userна аккаунт. Запросы к базе при промахе кэша сериализуются под гранулярными блокировками; фоновые операции ввода-вывода выполняются в ограниченном пуле демонов. - Плоские кривые памяти и троттлинг пакетов: Метки активности пользователя обновляются не чаще раза в минуту, а не на каждый пакет. Коррекции позиции в лимбо соблюдают минимальный интервал, предотвращая флуд пакетами позиции и убирая дрожание камеры.
- Ноль работы на тик: Плагин не выполняет циклических опросов по тикам. Вся логика жизненного цикла строго событийная — по сетевому пакету, входу, логину или отключению.
- Оптимизация кэша на высокой скорости: SQLite работает в режиме журнала
WALсsynchronous=NORMALи настроенными кэшами страниц. MySQL и PostgreSQL используют пулы соединений с автоматической подготовкой запросов.
🪶 Серверы с малыми ресурсами (≤ 250 МБ RAM / 1 ядро)
Для сверхкомпактных нод (например, VPS или дешёвых облачных контейнеров с 256 МБ RAM) добавьте эти флаги в скрипт запуска:
java -Xmx192M -Xms64M -XX:+UseSerialGC -XX:TieredStopAtLevel=1 \
-XX:-UsePerfData -XX:MaxMetaspaceSize=96M -jar fabric-server.jar noguiРекомендации по оптимизации: Оставьте cache-max-users = 5000 в settings.conf, используйте встроенное хранилище SQLite по умолчанию (это избавляет от сетевых драйверов внешней БД) и держите веб-панель отключённой.
🔮 Совместимость с несколькими версиями и загрузчиками
AuthCore поддерживает единую унифицированную кодовую базу, используя условную компиляцию Stonecutter и Stonecraft:
src/main/java/ --> Общее каноническое дерево исходников Java
├── in/potenfyr/authcore/
│ ├── api/ --> Публичный API AuthCore для разработчиков
│ ├── auth/ --> Контроллеры аутентификации и 2FA
│ ├── cache/ --> Высокопроизводительные неблокирующие кэши
│ ├── command/ --> Кроссплатформенные обработчики команд
│ ├── config/ --> Менеджер разделённой конфигурации HOCON
│ ├── database/ --> Драйверы SQLite, MySQL, PostgreSQL, Redis
│ ├── listener/ --> Кросс-загрузочные слушатели событий
│ ├── mixin/ --> Универсальные платформенные миксины
│ ├── model/ --> Модели данных пользователей и сессий
│ ├── proxy/ --> IP-форвардинг Velocity и BungeeCord
│ ├── security/ --> 7-уровневый обход детекции и ClientGuard
│ └── web/ --> REST веб-панель с HTTPS-аутентификацией по токену- Независимость от загрузчика: Тонкие точки входа (
FabricEntry,ForgeEntry,NeoForgeEntry) связывают нативные хуки загрузчиков с универсальным движком AuthCore. - Совместимость с необфусцированными 26.x: Прямая совместимость с маппингами Mojang позволяет мгновенно собирать сборки под современные и будущие версии Minecraft.
- Ненавязчивые миксины: Миксины затрагивают только этапы входа и сетевой аутентификации, обеспечивая нулевую несовместимость с модами оптимизации производительности, включая Lithium, C2ME, Krypton, ModernFix, FerriteCore и Spark.
🧑💻 Сборка из исходников
AuthCore требует JDK 25 для компиляции всех целей проекта (обеспечивается современным конвейером сборки 26.1–26.2). Если нужны портативные JDK, выполните test/install-java-and-provided-jars.sh для автоматической установки Adoptium JDK 17, 21 и 25.
# Собрать ВСЕ 6 вариантов диапазонов (jar-файлы автоматически размещаются в dist/)
./gradlew buildAll
# Собрать текущий активный вариант (1.21.11-fabric)
./gradlew build
# Собрать конкретный загрузчик и целевую версию
./gradlew :1.18.2-fabric:build # -> dist/authcore-1.16-1.18-fabric-1.0.0.jar
./gradlew :1.18.2-forge:build # -> dist/authcore-1.16-1.18-forge-1.0.0.jar
./gradlew :1.21.11-fabric:build # -> dist/authcore-1.19-1.21-fabric-1.0.0.jar
./gradlew :1.21.11-neoforge:build # -> dist/authcore-1.19-1.21-neoforge-1.0.0.jar
./gradlew :26.2-fabric:build # -> dist/authcore-26.1-26.2-fabric-1.0.0.jar
./gradlew :26.2-neoforge:build # -> dist/authcore-26.1-26.2-neoforge-1.0.0.jar🧪 Тестирование безопасности
AuthCore включает автономный стенд тестирования безопасности, расположенный в test/, с более чем 180 автоматическими модульными и криптографическими проверками:
# Скомпилировать и запустить полный набор тестов безопасности
./gradlew buildAll
test/run-security-tests.sh
# Запустить сквозную локальную валидацию (компиляция + набор тестов безопасности + дымовые тесты Docker-хоста)
./gradlew testAllПроверяемые компоненты включают:
- Алгоритмы хеширования: Argon2id, BCrypt, SCrypt, PBKDF2, SHA-256 и прозрачное автообновление устаревших хешей.
- Криптографическая безопасность: Уникальность соли CSPRNG, сравнения с постоянным временем и предотвращение утечек по времени.
- Защита от эксплойтов и злоупотреблений: Жизненный цикл конечного автомата капчи, истечение срока действия SMTP-токена, разброс паттернов движения камеры и обнаружение параллельных ботоферм.
- Движок миграции: 18 автоматических проверок, валидирующих миграцию с устаревшего единого файла на разделённую конфигурацию.
🐳 Проверка в Docker (тесты на хосте)
Чтобы гарантировать безупречную стабильность во время работы, наш тестовый стенд параллельно запускает каждый jar-файл диапазона в реальных контейнерах серверов Minecraft, используя официальные образы JRE Eclipse Temurin:
# Execute smoke matrix across all loader targets
test/docker/run-tests.sh
# Execute full matrix across all range endpoints
test/docker/run-tests.sh --all
# Run specific version brackets
test/docker/run-tests.sh --groups 1.16-1.18 --java 17
test/docker/run-tests.sh --groups 1.19-1.21 --java 21
test/docker/run-tests.sh --groups 26.1-26.2 --java 25Каждый автоматический тест проверяет:
- Чистый запуск сервера с 0 ошибок и 0 серьёзных предупреждений.
- Корректность баннера (скомпилированная строка версии, целевой загрузчик и среда Java).
- Выполнение команд из админ-консоли (
/authcore validate,/authcore reload,/authcore backup). - Генерацию конфигурации, инициализацию базы данных SQLite и привязку сетевого порта.
📚 Документация
Подробные руководства размещены на authcore.potenfyr.in:
| Руководство | Описание |
|---|---|
| 🏠 Главная страница документации | Портал проекта, скачивание релизов и переключатели версий |
| 🧭 Руководство администратора сервера | Полное пошаговое руководство по настройке: выбор jar, установка, команды и решение проблем |
| 🔀 Процессы аутентификации | Подробный разбор рукопожатий при входе, limbo-якорей, проверки TOTP и жизненных циклов сессий |
| 📖 Справочник по конфигурации | Исчерпывающий справочник параметров (~180 настроек) со значениями по умолчанию и сценариями использования |
| 🔌 API для разработчиков | Руководство по интеграции AuthCoreApi, хуки шины событий и пользовательские схемы баз данных |
| ⚙️ Разработка и архитектура | Сборочный конвейер Gradle, условная компиляция Stonecutter и тестовые стенды |
| 🌐 Веб-панель администратора | Настройка веб-панели, установка TLS/HTTPS и эндпоинты REST API |
| 🔁 Руководство по настройке прокси | Настройка modern forwarding в Velocity, BungeeCord и сетей SSO на Redis |
| 🛡️ Модель угроз безопасности | Комплексная модель угроз в соответствии с OWASP и архитектурой сетей Minecraft |
| 📦 Сборки 26.x и миграция | Руководство по необфусцированным маппингам Mojang 26.x, обратной совместимости и настройке |
| 📜 Список изменений | Полная история релизов, добавленных функций и патчей безопасности |
❓ FAQ
Могут ли офлайн- и премиум-игроки играть вместе на сервере в online-mode?
Да. В AuthCore есть встроенный гибридный режим. На серверах в online-mode убедитесь, что в
server.properties указано enable-secure-profile=false, чтобы клиенты без подписей чата Mojang могли подключаться. При allow-offline-players = true (по умолчанию в settings.conf) подключаться могут и пиратские, и премиум-игроки. Премиум-игроки проходят аутентификацию автоматически через асинхронную проверку Mojang, а пиратские — с помощью паролей. Работает ли AuthCore в LAN или офлайн-тестовых окружениях?
Да. Приватные и loopback IP-адреса (
127.0.0.1, 10.x.x.x, 192.168.x.x) никогда не передаются во внешние API Mojang или GeoIP. Сервер запускается без проблем и без необходимости активного подключения к интернету. Есть ли известные несовместимости с другими модами?
Неизвестны. AuthCore прошёл обширное тестирование с модами для оптимизации производительности и утилитами, включая C2ME, Chunky, Lithium, Krypton, Ledger, ModernFix, FerriteCore и Spark.
Могут ли несколько серверов использовать одну базу данных учётных записей игроков?
Да. Настройте общую базу данных MySQL или PostgreSQL в
database.conf и активируйте Redis в session.conf для синхронизации SSO-сессий по всей сети и шины событий безопасности между серверами. Нужно ли игрокам устанавливать клиентские моды для подключения?
Нет. AuthCore работает на 100% на стороне сервера. Игроки подключаются через ванильные клиенты Minecraft или стандартные модифицированные клиенты без установки какого-либо дополнительного клиентского ПО.
🗺️ План развития
- [x] Универсальная поддержка нескольких загрузчиков: Единая кодовая база для Fabric, Forge и NeoForge от 1.16.0 → 26.x+.
- [x] 7-уровневая эшелонированная защита: Профилирование поведения, конечные автоматы пакетов, анализ паттернов взгляда и приманки.
- [x] Многофакторная аутентификация: Приложения-аутентификаторы TOTP, резервные коды восстановления и одноразовая верификация по email через SMTP.
- [x] Движок против злоупотреблений: Блокировки при брутфорсе, динамические капчи-действия, фильтры IP по CIDR и теневые баны.
- [x] Корпоративное хранилище: Высокопроизводительный SQLite (WAL), MySQL, PostgreSQL и шины событий SSO на Redis.
- [x] Браузерная веб-панель: REST-интерфейс администрирования с аутентификацией по токену и живыми метриками.
- [x] Паритет с прокси: Современный HMAC-форвардинг Velocity, определение устаревшего BungeeCord и безопасность по принципу fail-closed.
- [x] Строгость автоматизированного тестирования: 180+ автоматических криптографических и проверок безопасности с параллельными тестами на Docker-хостах.
- [x] Раздельная архитектура конфигурации: Отдельные конфиги по доменам (
lobby.conf,session.conf,database.conf) с автоматической миграцией со старых версий.
📈 Активность, история звёзд и метрики
🌟 История звёзд в реальном времени
📈 Живой график звёзд, отрисованный через star-history.com. Обновляется в реальном времени, когда пользователи ставят звезду репозиторию.
🤝 Сообщество и участие
Мы рады вкладу сообщества, сообщениям об ошибках и предложениям по функциям!
- Нашли баг или есть идея? Создайте issue в трекере задач или начните обсуждение в Discussions.
- Хотите отправить код? Форкните репозиторий, создайте ветку с понятным названием и отправьте Pull Request, соответствующий стандартам Google Java Format.
- Нужна поддержка сообщества или прямая помощь? Присоединяйтесь к нам в Discord!
📜 Лицензия
Этот проект распространяется под лицензией CC0 1.0 Universal (Public Domain). Вы можете свободно использовать, изменять, распространять и интегрировать AuthCore в личные, коммерческие или модпак-сборки без ограничений.
Создано с любовью студией PotenFYR Studios
Поддержка и вопросы: support@potenfyr.in
Частые вопросы
Как установить AuthCore?
Установите Fabric под свою версию Minecraft, скачайте AuthCore под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть AuthCore?
У AuthCore есть сборки для Minecraft 1.16–26.3.
Нужен ли AuthCore на сервере?
Ставится только на сервер; игрокам ставить не нужно