Если вы когда-нибудь задумывались, что же такое authlib injector и зачем он нужен в Minecraft, то вы попали по адресу! В этом посте мы разберёмся, как эта библиотека помогает подменять серверы авторизации и сессии без изменения самой игры или её библиотек. Вы узнаете, как правильно установить authlib injector на клиент и сервер, как формировать команды запуска, а также какие нюансы стоит учитывать при работе с авторизацией через Ely.by.


Что такое authlib injector и как он работает

Authlib injector — это хитроумная библиотека, которая внедряется в процесс запуска Minecraft через механизм javaagent. Представьте, что вы — волшебник, который может подменить адреса серверов авторизации и сессии, не трогая исходный код игры или её библиотек. Вот authlib injector и есть этот волшебник!

Javaagent — что это и почему это круто

Javaagent — это специальный механизм в Java, который позволяет внедрять свой код в процесс запуска программы. В случае authlib injector он подменяет нужные части библиотеки Authlib на лету, без необходимости менять файлы игры или сервера. Это значит, что вы можете легко переключаться между разными серверами авторизации, например, использовать Ely.by вместо Mojang, просто добавив параметр запуска.


Как установить authlib injector в игровой клиент

Чтобы игра начала использовать authlib injector, нужно добавить его как javaagent при запуске клиента. Вот что для этого нужно:

  • Скачать файл authlib-injector.jar с GitHub релизов.
  • Поместить файл в удобное место на вашем компьютере.
  • В команду запуска игры добавить строку:
-javaagent:/путь/до/файла/authlib-injector.jar=ely.by

Например, если у вас Linux и файл лежит в /home/user/minecraft/, команда будет выглядеть так:

java -javaagent:/home/user/minecraft/authlib-injector.jar=ely.by -jar minecraft.jar

Если вы запускаете игру через лаунчер, то в настройках лаунчера найдите поле для дополнительных аргументов JVM и вставьте туда эту строку в самое начало.


Установка authlib injector на сервер Minecraft

Установка на сервер похожа, но с небольшими отличиями:

  • Скачайте authlib-injector.jar и положите его в папку с сервером.
  • Измените команду запуска сервера, добавив javaagent:
java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar

Обратите внимание, что обычная команда запуска:

java -jar minecraft_server.jar

превращается в команду с javaagent, которая подмешивает authlib injector.

При успешном запуске вы увидите в консоли сообщение об активации authlib injector — это знак, что всё прошло как по маслу.


Особенности настройки BungeeCord

Если у вас прокси-сервер BungeeCord, то authlib injector нужно ставить и на него, и на все внутренние сервера. Важный момент — настройка параметра online-mode:

Компонент Параметр Значение
BungeeCord online_mode true
Внутренние сервера online-mode false

Такой подход позволяет BungeeCord корректно обрабатывать авторизацию, а внутренним серверам — показывать скины игроков.


LaunchHelper — спасение для хостингов с ограничениями

Не все хостинги позволяют менять аргументы JVM напрямую. Для таких случаев существует LaunchHelper — специальный лаунчер, который запускает сервер с подмешиванием authlib injector.

Как настроить LaunchHelper

  1. Скачайте LaunchHelper для вашей ОС с GitHub релизов.
  2. Поместите LaunchHelper.jar, authlib-injector.jar и файл launchhelper.properties в папку сервера.
  3. В launchhelper.properties укажите:
javaAgentJarPath=authlib-injector.jar
javaAgentOptions=ely.by
execJarPath=minecraft_server.jar
  1. В панели управления хостингом укажите запуск LaunchHelper.jar (или переименуйте его в server.jar, если требуется).

Структура файлов на сервере с LaunchHelper

Файл Назначение
server.jar Переименованный LaunchHelper.jar
minecraft_server.jar Основной серверный jar
authlib-injector.jar Библиотека для подмены авторизации
launchhelper.properties Конфигурация LaunchHelper

Как работает авторизация через Ely.by

Ely.by — это альтернативный сервис авторизации, совместимый с протоколом Mojang, но с некоторыми улучшениями.

Основные запросы авторизации

Запрос Описание
POST /auth/authenticate Авторизация пользователя с логином и паролем (поддержка 2FA)
POST /auth/refresh Обновление accessToken без повторного ввода пароля
POST /auth/validate Проверка валидности accessToken
POST /auth/signout Выход из всех сессий пользователя
POST /auth/invalidate Инвалидация конкретного accessToken

Пример успешного ответа на /auth/authenticate

{
  "accessToken": "длинная_строка_access_token",
  "clientToken": "уникальный_client_token",
  "availableProfiles": [
    {
      "id": "UUID_без_дефисов",
      "name": "username"
    }
  ],
  "selectedProfile": {
    "id": "UUID_без_дефисов",
    "name": "username"
  },
  "user": {
    "id": "UUID_без_дефисов",
    "username": "username",
    "properties": [
      {
        "name": "preferredLanguage",
        "value": "ru"
      }
    ]
  }
}

Двухфакторная аутентификация (2FA)

Ely.by поддерживает 2FA, что не предусмотрено в оригинальном протоколе Mojang. Если аккаунт защищён 2FA, при попытке авторизации вы получите ошибку:

{
  "error": "ForbiddenOperationException",
  "errorMessage": "Account protected with two factor auth."
}

В этом случае нужно запросить у пользователя TOTP-токен и повторить запрос, передав пароль в формате:

password:token

Если токен неверен, сервер вернёт ошибку с сообщением:

{
  "error": "ForbiddenOperationException",
  "errorMessage": "Invalid credentials. Invalid email or password."
}

Практические советы по безопасности

  • Храните accessToken и clientToken на клиенте в защищённом виде.
  • Используйте OAuth 2.0 с правами minecraft_server_session для безопасного доступа.
  • При ошибках авторизации выводите пользователю понятные сообщения на английском.
  • Следите за совместимостью версий authlib и Minecraft (например, для 1.7.2 нужна authlib 1.3).

Таблица сравнения команд запуска

Сценарий Команда запуска без authlib injector Команда с authlib injector
Клиент java -jar minecraft.jar java -javaagent:/путь/authlib-injector.jar=ely.by -jar minecraft.jar
Сервер java -jar minecraft_server.jar java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar
Сервер с LaunchHelper java -jar minecraft_server.jar java -jar LaunchHelper.jar (с конфигом для authlib injector)

Возможные проблемы и отладка

  • Если авторизация не работает, проверьте правильность пути к authlib-injector.jar и параметров запуска.
  • Убедитесь, что в server.properties и config.yml BungeeCord правильно настроен online-mode.
  • Проверьте логи сервера на сообщения об активации authlib injector.
  • При ошибках 401 или 404 внимательно изучите сообщения об ошибках и корректность передаваемых данных.

Где искать актуальные версии и документацию


Итог

Authlib injector — это универсальный и удобный способ подмены серверов авторизации Minecraft без сложных модификаций игры или сервера. Он работает через javaagent, что позволяет легко интегрировать альтернативные сервисы, такие как Ely.by, обеспечивая поддержку современных функций, включая двухфакторную аутентификацию.

Правильная установка и настройка — залог успешной работы авторизации и комфортной игры для ваших пользователей. Не забывайте про безопасность токенов и совместимость версий!


Полезные ссылки


Теперь вы вооружены знаниями, чтобы смело внедрять authlib injector в свои проекты Minecraft и радовать игроков удобной и безопасной авторизацией!