AuthMe Reloaded: установка, пароли и премиум-вход на сервере

AuthMeReloaded заставляет игроков регистрироваться и входить по паролю. Без него на сервере в offline mode любой может зайти под чужим ником. Разберём, какой jar взять под ваше ядро, как устроены пароли и что делать, если игрок свой забыл.

Что делает AuthMe и кому он нужен

AuthMeReloaded защищает ники. Пока игрок не ввёл пароль, он не может ставить блоки, ходить, писать команды и открывать инвентарь. На сервере с online-mode=false без такого плагина любой зайдёт под чужим ником и заберёт чужие вещи и привилегии.

Новичок пишет /register с паролем два раза, дальше при каждом входе /login. Кто за 30 секунд не вошёл, того кикает (loginTimeout и registerTimeout). С одного IP по умолчанию заводится один аккаунт (maxRegPerIp: 1). Ещё есть сессии, восстановление по почте, двухфакторка TOTP, антибот и вход без пароля для лицензии. Версия 6.0.1 закрыла уязвимость с перехватом сессии на Paper и Folia, так что с 6.0.0 стоит обновиться.

Какой jar AuthMe скачать под свой сервер

С версии 6.0 плагин собирается отдельно под каждую платформу. В релизе 6.0.1 шесть файлов:

ФайлДля чего по READMEМетки Modrinth
AuthMe-6.0.1-Paper.jarPaper 1.21+1.21.11–26.3
AuthMe-6.0.1-Folia.jarFolia 1.21+1.21.11–26.3
AuthMe-6.0.1-Spigot-1.21.jarSpigot 1.20–1.211.21.6–26.3
AuthMe-6.0.1-Spigot-Legacy.jarSpigot 1.16–1.191.16–1.21.5
AuthMe-6.0.1-Bungee.jarпрокси BungeeCord и Waterfall1.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.

Установка и первая настройка

  1. Положите нужный jar в plugins. Bungee.jar и Velocity.jar ставятся на прокси и не заменяют основную сборку: на игровых серверах всё равно нужен AuthMe под их ядро.
  2. Запустите сервер. Появится папка plugins/AuthMe с config.yml, а при базе по умолчанию ещё файл authme.db.
  3. Язык: messagesLanguage: ru. При perPlayerLocale: true (так по умолчанию) игрок видит сообщения на языке своего клиента, а ru служит запасным.
  4. Сессии: settings.sessions.enabled: true избавит от ввода пароля при быстром перезаходе. Сессия живёт 10 минут (timeout) и сбрасывается при смене IP.
  5. После правок выполните /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.

Где хранятся пароли AuthMe и какой хеш выбрать

Пароли в открытом виде не хранятся. В базу пишется хеш: по умолчанию в файл 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.

  1. Включите settings.enablePremium: true.
  2. Без прокси сервер работает в offline mode, а в plugins нужен PacketEvents 2.x. Без него премиум-вход отключается и все входят по паролю.
  3. За прокси поставьте на него authme-velocity или authme-bungee, на серверах включите Hooks.bungeecord: true и впишите одинаковый секрет в Hooks.proxySharedSecret и в конфиг прокси.
  4. Игрок входит по паролю и пишет /premium, со следующего входа пароль не спросят. Обратно: /freemium. Администратор делает то же через /authme premium <player> и /authme freemium <player>.

Параметр прокси premium.keepOfflineUuidCompatibility по умолчанию false, и у премиум-игрока остаётся UUID Mojang. Значение true сохраняет офлайн-UUID для плагинов, которые от него зависят. При Hooks.bungeecord: true порты игровых серверов должны быть доступны только прокси. Серверу в online mode премиум-вход AuthMe не нужен: там Mojang и так проверяет каждого.

Команды и права AuthMeReloaded

КомандаЧто делаетПраво
/register [password] [verifyPassword]регистрация, по умолчанию пароль вводится дваждыauthme.player.register
/login <password>вход, короткие варианты /l и /logauthme.player.login
/changepassword <oldPassword> <newPassword>сменить свой пароль, короткий вариант /cpauthme.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>отключить игроку 2FAauthme.admin.totpdisable
/authme premium <player>включить игроку премиум-входauthme.admin.setpremium
/authme freemium <player>выключить игроку премиум-входauthme.admin.setfreemium
/authme converter [job]перенос базы и импорт из других плагиновauthme.admin.converter
/authme reloadперечитать config.ymlauthme.admin.reload

Частые вопросы про AuthMeReloaded

Где скачать плагин AuthMe Reloaded?
На Modrinth или в релизах AuthMe/AuthMeReloaded на GitHub. Актуальная версия 6.0.1, файлы разделены по ядрам и отдельно для прокси.
Какой AuthMe скачать для 1.21 и 1.21.11?
Для Paper 1.21.11 и 26.x нужен AuthMe-6.0.1-Paper.jar, для Spigot AuthMe-6.0.1-Spigot-1.21.jar, обоим нужна Java 21. У этих сборок api-version 1.21.11, так что на ранних 1.21 проверьте запуск на тестовом сервере.
Где хранятся пароли AuthMe?
По умолчанию в файле plugins/AuthMe/authme.db, при MySQL в таблице authme. Хранится только хеш, поэтому узнать пароль нельзя, можно задать новый.
Как сбросить пароль игроку в AuthMe?
Командой /authme password <player> <pwd> с правом authme.admin.changepassword или из консоли. Либо /authme unregister <player>, и игрок зарегистрируется заново.
Нужен ли AuthMe на сервере с лицензией?
В online mode Mojang сам проверяет игроков. AuthMe рассчитан на offline mode, где он защищает ники паролем, а владельцы лицензии могут входить без пароля через /premium.
Как поставить AuthMe на сервер?
Положите jar под своё ядро в plugins и перезапустите сервер. В plugins/AuthMe появится config.yml: поставьте messagesLanguage: ru и выполните /authme reload.

Не хочется настраивать самому

AuthMeReloaded уже стоит и настроен в готовых сборках Cloud Delight: права, меню, защита и донат собраны в одно целое. Скачали, запустили, играете.