MixAuth
Гибридный мод авторизации для серверов NeoForge в офлайн-режиме, поддерживающий как онлайн-вход (премиум Mojang), так и офлайн-вход (по паролю).
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 1 тыс.
- Подписчиков на Modrinth
- 1
- версий
- 16
- Обновлён
- 28 сентября 202628 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
Offline-Mode Login Mod
Добавляет авторизацию по логину на серверы NeoForge, работающие в офлайн-режиме.
Основные возможности:
- Автоматически различает премиум- и офлайн-игроков.
- Авторизует премиум-игроков через Mojang, даже на сервере в офлайн-режиме.
- Офлайн-игроки должны зарегистрироваться или войти, прежде чем смогут двигаться, взаимодействовать, писать в чат или видеть свой настоящий инвентарь.
Возможности
1. Автоматический выбор режима входа
- Когда игрок заходит впервые, мод автоматически определяет, использовать онлайн- или офлайн-режим, и записывает результат в список известных игроков.
- При последующих входах мод выбирает режим входа на основе этого списка. Премиум-игроки проходят авторизацию во время рукопожатия, а офлайн-игроки регистрируются или входят на сервере.
- Администраторы могут использовать
auth remove <UUID|username>, чтобы удалить все сохранённые данные игрока: запись в списке известных игроков, офлайн-пароль, записи о банах и записи о входе без пароля. При следующем входе мод будет считать его новым игроком.
2. Авторизация премиум-игроков
- Во время входа мод запускает рукопожатие в онлайн-режиме и проверяет сессию игрока через Mojang.
- После проверки игрок заходит под своей авторизованной учётной записью, как на сервере в онлайн-режиме.
- Авторизованные премиум-игроки используют свой UUID из онлайн-режима вместо UUID, сгенерированного сервером в офлайн-режиме. Это позволяет корректно работать модам, которые полагаются на UUID онлайн-режима, таким как Figura и FTB Chunks, а также официальным скинам учётной записи.
3. Регистрация офлайн-игроков и вход по паролю
- Незарегистрированные офлайн-игроки могут использовать `register `, чтобы зарегистрироваться при первом входе.
- Зарегистрированные офлайн-игроки могут использовать `login `, чтобы войти.
- Игроки, уже находящиеся в игре, могут использовать `auth changepassword `, чтобы сменить свой офлайн-пароль.
4. Окно входа без пароля для офлайн-игроков
- После успешного входа зарегистрированного офлайн-игрока мод сохраняет запись о доверенном входе для комбинации UUID учётной записи и IP-адреса.
- Игрок может снова войти без ввода пароля, если использует тот же UUID и IP-адрес в течение настроенного временного окна. Установите окно в
0, чтобы отключить вход без пароля. - Защита от совпадения IP: если IP-адрес связан с несколькими UUID в течение этого окна, все эти UUID теряют право на вход без пароля и должны использовать пароль.
5. Ограничения до авторизации офлайн-игрока
Пока офлайн-игрок не зарегистрируется или не войдёт, он остаётся в состоянии ожидания авторизации. В это время мод:
- Переводит игрока в режим наблюдателя.
- Фиксирует игрока на текущей позиции и постоянно накладывает эффект слепоты.
- Отправляет пустой вид инвентаря, чтобы скрыть настоящее содержимое инвентаря.
- Блокирует чат, атаки, взаимодействие с блоками, доступ к контейнерам, выбрасывание предметов и другие игровые действия.
- Разрешает только команды авторизации
registerиlogin.
6. Механизмы безопасности
- Хранение паролей с солью через BCrypt: офлайн-пароли хранятся в базе данных в виде хешей BCrypt с солью, никогда в открытом виде. Каждый хеш использует новую случайную соль. Коэффициент сложности настраивается и по умолчанию равен 12.
- Ограничения длины пароля: регистрация, смена пароля и назначение пароля администратором применяют одинаковые проверки минимальной и максимальной длины. Пароли, превышающие 72 байта в кодировке UTF-8, также отклоняются, чтобы не выходить за предел входных данных BCrypt.
- Чёрный список паролей: распространённые слабые пароли из чёрного списка отклоняются с помощью сопоставления без учёта регистра. Файл чёрного списка создаётся автоматически при первом запуске, и администраторы могут редактировать его напрямую, указывая по одному паролю на строку.
- Ограничение попыток входа и временные баны: достижение максимального числа неверных попыток пароля в течение одной сессии ожидания входа отключает игрока и временно запрещает офлайн-вход для этой учётной записи, ограничивая повторный подбор пароля. И лимит попыток, и длительность бана настраиваются.
- Тайм-аут входа: зарегистрированные офлайн-игроки должны войти в течение настроенного времени, иначе они отключаются, что не позволяет им бесконечно оставаться в состоянии ожидания авторизации.
- Аннулирование записей о входе без пароля: смена офлайн-пароля или его сброс администратором очищает существующие доверенные записи о входе игрока, не позволяя использовать их для входа без пароля.
Конфигурация
Файл конфигурации
- Файл конфигурации сервера называется
mixauth-server.toml. - NeoForge загружает этот файл по своим правилам конфигурации SERVER.
- Рекомендуем перезапустить сервер после изменения конфигурации, чтобы все обновлённые настройки аутентификации вступили в силу.
Конфигурация по умолчанию
[database]
path = "mixauth/mixauth"
[offline_login]
max_login_attempts = 3
temporary_block_minutes = 5
trusted_login_window_hours = 24
login_timeout_minutes = 5
prompt_interval_seconds = 5
bcrypt_cost = 12
min_password_length = 1
max_password_length = 72
password_blacklist_path = "mixauth/password_blacklist.txt"
[online_validation]
connect_timeout_seconds = 10
request_timeout_seconds = 10
pending_handshake_ttl_seconds = 120
[localization]
default_language = "en_us"
auto_detect_player_language = trueКлючевые параметры конфигурации
| Параметр | Описание |
|---|---|
database.path | Базовый путь к базе данных H2. Относительные пути разрешаются относительно корневой директории сервера. По умолчанию создаётся mixauth/mixauth.mv.db. |
offline_login.max_login_attempts | Максимальное число неверных попыток ввода пароля, разрешённых каждый раз, когда игрок ожидает входа. |
offline_login.temporary_block_minutes | Длительность временной блокировки, применяемой при достижении максимального числа неверных попыток ввода пароля. |
offline_login.trusted_login_window_hours | Окно входа без пароля для того же UUID и IP-адреса. |
offline_login.login_timeout_minutes | Лимит времени для зарегистрированного офлайн-игрока на вход в ожидании аутентификации. |
offline_login.prompt_interval_seconds | Интервал между повторными запросами регистрации или входа в ожидании аутентификации. |
offline_login.bcrypt_cost | Коэффициент стоимости BCrypt, используемый для хеширования офлайн-паролей. |
offline_login.min_password_length | Минимальная длина пароля (по умолчанию 1, диапазон 1–72). Ввод BCrypt ограничен 72 байтами. |
offline_login.max_password_length | Максимальная длина пароля (по умолчанию 72, диапазон 1–72). Ввод BCrypt ограничен 72 байтами. |
offline_login.password_blacklist_path | Путь к внешнему файлу чёрного списка паролей. Используйте один пароль на строку; строки, начинающиеся с #, — комментарии. Если файл отсутствует при первом запуске, мод создаёт его автоматически из встроенных ресурсов. Относительные пути разрешаются относительно корневой директории сервера. По умолчанию создаётся mixauth/password_blacklist.txt. |
online_validation.connect_timeout_seconds | Таймаут подключения к сервисам Mojang. |
online_validation.request_timeout_seconds | Таймаут запросов к сервисам Mojang. |
online_validation.pending_handshake_ttl_seconds | Как долго сохраняется ожидающий онлайн-рукопожатие при входе. |
localization.default_language | Язык запросов по умолчанию. Поддерживаемые значения: zh_cn, en_us, es_es, pt_br, ru_ru. |
localization.auto_detect_player_language | Отображать ли запросы на языке клиента игрока после входа, если этот язык поддерживается. |
Дополнительные примечания:
- Язык игрока невозможно надёжно определить во время рукопожатия, поэтому на этом этапе всегда используется
localization.default_language. - Сервер всегда генерирует UUID офлайн-игроков из имени пользователя путём хеширования `OfflinePlayer:`, гарантируя, что одно и то же имя пользователя получает один и тот же UUID при каждом входе.
- Смена офлайн-пароля или его сброс администратором очищает существующие записи доверенного входа.
Команды
Команды игрока
| Команда | Описание |
|---|---|
| `register ` | Задать офлайн-пароль впервые. Игроки, которые уже в игре, но ещё не задали офлайн-пароль, также могут использовать эту команду, чтобы создать его. |
| `login ` | Войти с помощью офлайн-пароля. |
| `auth changepassword ` | Сменить офлайн-пароль. |
Команды администратора
| Команда | Описание |
|---|---|
| `auth setpassword <UUID|username> ` | Установить или сбросить офлайн-пароль для указанного игрока. |
auth remove <UUID|username> | Удалить все сохранённые данные указанного игрока: запись в списке известных игроков, офлайн-пароль, записи о банах и записи о входе без пароля. При следующем входе мод будет считать его новым игроком. |
Частые вопросы
Как установить MixAuth?
Установите NeoForge под свою версию Minecraft, скачайте MixAuth под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть MixAuth?
У MixAuth есть сборки для Minecraft 1.21.5, 1.21.8, 1.21.11, 26.1.2–26.3 ….
Нужен ли MixAuth на сервере?
Ставится только на сервер; игрокам ставить не нужно