AuthMeReloaded заставляет игроков регистрироваться и входить по паролю. Без него на сервере в offline mode любой может зайти под чужим ником. Разберём, какой jar взять под ваше ядро, как устроены пароли и что делать, если игрок свой забыл.
AuthMeReloaded защищает ники. Пока игрок не ввёл пароль, он не может ставить блоки, ходить, писать команды и открывать инвентарь. На сервере с online-mode=false без такого плагина любой зайдёт под чужим ником и заберёт чужие вещи и привилегии.
Новичок пишет /register с паролем два раза, дальше при каждом входе /login. Кто за 30 секунд не вошёл, того кикает (loginTimeout и registerTimeout). С одного IP по умолчанию заводится один аккаунт (maxRegPerIp: 1). Ещё есть сессии, восстановление по почте, двухфакторка TOTP, антибот и вход без пароля для лицензии. Версия 6.0.1 закрыла уязвимость с перехватом сессии на Paper и Folia, так что с 6.0.0 стоит обновиться.
С версии 6.0 плагин собирается отдельно под каждую платформу. В релизе 6.0.1 шесть файлов:
| Файл | Для чего по README | Метки Modrinth |
|---|---|---|
| AuthMe-6.0.1-Paper.jar | Paper 1.21+ | 1.21.11–26.3 |
| AuthMe-6.0.1-Folia.jar | Folia 1.21+ | 1.21.11–26.3 |
| AuthMe-6.0.1-Spigot-1.21.jar | Spigot 1.20–1.21 | 1.21.6–26.3 |
| AuthMe-6.0.1-Spigot-Legacy.jar | Spigot 1.16–1.19 | 1.16–1.21.5 |
| AuthMe-6.0.1-Bungee.jar | прокси BungeeCord и Waterfall | 1.21.6–26.3 |
| AuthMe-6.0.1-Velocity.jar | прокси Velocity 3.4+ | 1.21.11–26.3 |
Legacy требует Java 17, остальные файлы Java 21. Серверы на Java 8 или 11 придётся перевести на новую Java, так сказано в заметках к 6.0.0.
Есть расхождение, о котором лучше знать заранее. README обещает Paper и Folia от 1.21, но в pom.xml сборок Paper, Folia и Spigot-1.21 записано api-version 1.21.11, и Modrinth отмечает Paper и Folia только с 1.21.11. Для 1.21.11 и 26.x вопросов нет: берите Paper.jar. На более старых 1.21 сначала проверьте запуск на тестовой копии сервера. У Legacy-сборки api-version 1.16, она же нужна для 1.16.5.
PacketEvents 2.x ставится по желанию. Он нужен для защиты инвентаря до входа, запрета подсказок команд по Tab и премиум-входа без прокси. В 6.0 он заменил в этой роли ProtocolLib.
messagesLanguage: ru. При perPlayerLocale: true (так по умолчанию) игрок видит сообщения на языке своего клиента, а ru служит запасным.settings.sessions.enabled: true избавит от ввода пароля при быстром перезаходе. Сессия живёт 10 минут (timeout) и сбрасывается при смене IP./authme reload.База по умолчанию SQLite, также поддерживаются MYSQL, MARIADB и POSTGRESQL (параметр DataSource.backend). Для сети серверов заполните mySQLHost, mySQLUsername, mySQLPassword и mySQLDatabase и выполните /authme converter sqlitetosql. Если SQL-база недоступна, AuthMe останавливает сервер (Security.SQLProblem.stopServer: true). Импорт из Auth+, LibreLogin, NexAuth, LimboAuth, nLogin, OpeNLogin и tiAuth описан в разделе о конвертерах.
Если вместе с LuckPerms сервер выключается при запуске, а в консоли [AuthMe] Aborting initialization of AuthMe: [InjectorReflectionException], FAQ LuckPerms советует поставить в config.yml AuthMe forceVaultHook: true.
Пароли в открытом виде не хранятся. В базу пишется хеш: по умолчанию в файл plugins/AuthMe/authme.db, при MySQL в таблицу authme. Посмотреть пароль игрока нельзя, его можно только заменить.
Алгоритм задаёт security.passwordHash, по умолчанию SHA256. В таблице алгоритмов он рекомендуемый, как и ARGON2, ARGON2ID, BCRYPT, BCRYPT2Y, PBKDF2, PBKDF2BASE64, SALTEDSHA512, WBB4 и XFBCRYPT. CMW, CRAZYCRYPT1, PHPFUSION, ROYALAUTH и SMF авторы просят не использовать, IPB4 и TWO_FACTOR не работают. Для ARGON2 в системе нужна C-библиотека argon2.
Сменить алгоритм можно без сброса паролей: старый впишите в legacyHashes, новый в passwordHash. AuthMe проверит пароль старыми методами и перезапишет его в новом формате.
Пароль должен быть от 5 до 30 символов и не входить в список unsafePasswords (123456, password, qwerty и другие). Допустимые символы задаёт allowedPasswordCharacters: '[!-~]*', то есть видимые символы ASCII: кириллица по умолчанию не пройдёт, предупредите игроков.
У администратора три способа, все работают и из консоли.
/authme password <player> <pwd> задаёт новый пароль. Игрок потом сменит его на свой через /changepassword <oldPassword> <newPassword>./authme unregister <player> удаляет аккаунт из базы AuthMe, при следующем входе игрок зарегистрируется заново./authme disabletotp <player> отключит 2FA.Игрок восстановит доступ и сам, если привязал почту через /email add, а в разделе Email конфига заполнены mailSMTP, mailAccount и mailPassword. Порядок: /email recover <email>, в письме код из 8 символов, затем /email code <code> и /email setpassword <password>. На последний шаг даётся 2 минуты, код действует 4 часа. Если выключить коды (recoveryCode.length: 0), на почту придёт сразу новый пароль.
С 6.0 владельцы лицензии могут заходить без пароля. AuthMe проверяет аккаунт через сервер сессий Mojang, поэтому зайти так под чужим ником не выйдет. Подробности в docs/premium.md.
settings.enablePremium: true.Hooks.bungeecord: true и впишите одинаковый секрет в Hooks.proxySharedSecret и в конфиг прокси./premium, со следующего входа пароль не спросят. Обратно: /freemium. Администратор делает то же через /authme premium <player> и /authme freemium <player>.Параметр прокси premium.keepOfflineUuidCompatibility по умолчанию false, и у премиум-игрока остаётся UUID Mojang. Значение true сохраняет офлайн-UUID для плагинов, которые от него зависят. При Hooks.bungeecord: true порты игровых серверов должны быть доступны только прокси. Серверу в online mode премиум-вход AuthMe не нужен: там Mojang и так проверяет каждого.
| Команда | Что делает | Право |
|---|---|---|
/register [password] [verifyPassword] | регистрация, по умолчанию пароль вводится дважды | authme.player.register |
/login <password> | вход, короткие варианты /l и /log | authme.player.login |
/changepassword <oldPassword> <newPassword> | сменить свой пароль, короткий вариант /cp | authme.player.changepassword |
/email add <email> <verifyEmail> | привязать почту для восстановления | authme.player.email.add |
/email recover <email> | запросить восстановление пароля на почту | authme.player.email.recover |
/email setpassword <password> | новый пароль после кода из письма | authme.player.email.recover |
/premium | вход без пароля для лицензии | authme.player.premium |
/freemium | вернуть вход по паролю | authme.player.freemium |
/authme register <player> <password> | зарегистрировать игрока вручную | authme.admin.register |
/authme password <player> <pwd> | сменить пароль игроку | authme.admin.changepassword |
/authme unregister <player> | удалить аккаунт игрока | authme.admin.unregister |
/authme forcelogin [player] | впустить игрока без пароля | authme.admin.forcelogin |
/authme disabletotp <player> | отключить игроку 2FA | authme.admin.totpdisable |
/authme premium <player> | включить игроку премиум-вход | authme.admin.setpremium |
/authme freemium <player> | выключить игроку премиум-вход | authme.admin.setfreemium |
/authme converter [job] | перенос базы и импорт из других плагинов | authme.admin.converter |
/authme reload | перечитать config.yml | authme.admin.reload |
AuthMeReloaded уже стоит и настроен в готовых сборках Cloud Delight: права, меню, защита и донат собраны в одно целое. Скачали, запустили, играете.