Add an article about authlib-injector
BIN
source/_static/authlib-injector/launcher-jvm-options.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
source/_static/authlib-injector/server-startup-messages.png
Normal file
After Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
83
source/en/authlib-injector.rst
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
Authlib-injector
|
||||||
|
----------------
|
||||||
|
|
||||||
|
**authlib-injector** is a library that allows you to spoof authorization and session server addresses in the Authlib, without modifying the library itself. It's designed as an javaagent.
|
||||||
|
|
||||||
|
This library significantly simplifies the installation of an alternative authorization service in the game client and server, since transformation occurs during application bootstrap process.
|
||||||
|
|
||||||
|
You can download the latest version from the `releases page on GitHub <https://github.com/yushijinhun/authlib-injector/releases/latest>`_.
|
||||||
|
|
||||||
|
Here is the documentation of the key aspects of installing and using the library. For more information, see the `original documentation in Chinese <https://github.com/yushijinhun/authlib-injector/wiki>`_.
|
||||||
|
|
||||||
|
.. _client:
|
||||||
|
|
||||||
|
Installing in a game client
|
||||||
|
===========================
|
||||||
|
|
||||||
|
.. attention:: This section describes how to install the authlib-injector into the game. The game launcher still needs to implement the authorization flow itself in order to pass the ``accessToken`` to the game.
|
||||||
|
|
||||||
|
To install the library, you need to specify it as a javaagent for the game. You can do this by prepending the line ``-javaagent:/path/to/file/authlib-injector.jar=ely.by`` as a game launching param. As the result, the launch command should look like this:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
java -javaagent:/path/to/file/authlib-injector.jar=ely.by -jar minecraft.jar
|
||||||
|
|
||||||
|
If you run the game through a launcher, then in its settings you need to find a field for specifying additional JVM arguments, in which you need to insert the line above at the beginning.
|
||||||
|
|
||||||
|
.. figure:: ../_static/authlib-injector/launcher-jvm-options.png
|
||||||
|
:align: center
|
||||||
|
:alt: Editing JVM arguments
|
||||||
|
|
||||||
|
.. _server:
|
||||||
|
|
||||||
|
Installing on a server
|
||||||
|
======================
|
||||||
|
|
||||||
|
Just as in the case with the game client, the library must be specified as javaagent. `Download the library <https://github.com/yushijinhun/authlib-injector/releases/latest>`_ and put in the server's directory. Then add the javaagent call to the server launch command:
|
||||||
|
|
||||||
|
| Before: ``java -jar minecraft_server.jar``
|
||||||
|
| After: ``java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar``
|
||||||
|
|
||||||
|
During server startup you should see a message about the activation of the authlib-injector:
|
||||||
|
|
||||||
|
.. figure:: ../_static/authlib-injector/server-startup-messages.png
|
||||||
|
:align: center
|
||||||
|
:alt: Message at server startup
|
||||||
|
|
||||||
|
BungeeCord
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
The authlib-injector must be installed directly on the BungeeCord itself, as well as **on all backends** behind it. Note the configuration of the online-mode parameter:
|
||||||
|
|
||||||
|
* The BungeeCord's configuration (``config.yml``) should contain ``online_mode=true``;
|
||||||
|
* The servers behind the proxy must contain in their configuration (``server.properties``) the value ``online-mode=false``.
|
||||||
|
|
||||||
|
Using such configuration authorization will work for all logging in players and the internal servers will correctly display player skins.
|
||||||
|
|
||||||
|
LaunchHelper
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Not all game hostings allow direct modifications of launch arguments. To get around this limitation, you can use a special server that runs the game server by mixing authlib-injector into it. To install, follow these instructions:
|
||||||
|
|
||||||
|
#. Download the corresponding LaunchHelper for your operating system from the `releases page <https://github.com/Codex-in-somnio/LaunchHelper/releases/latest>`_.
|
||||||
|
|
||||||
|
#. Upload this file and the ``authlib-injector.jar`` file to the server folder on your hosting site.
|
||||||
|
|
||||||
|
#. Also create a ``launchhelper.properties`` file and put the following contents into it:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
javaAgentJarPath=authlib-injector.jar
|
||||||
|
javaAgentOptions=ely.by
|
||||||
|
execJarPath=minecraft_server.jar
|
||||||
|
|
||||||
|
Where ``javaAgentJarPath`` contains the path to the authlib-injector.jar file and ``execJarPath`` contains the name of the server file.
|
||||||
|
|
||||||
|
#. In the hosting control panel, specify the ``LaunchHelper.jar`` as the server file.
|
||||||
|
|
||||||
|
If you can't change the executable file, you should rename the ``LaunchHelper.jar`` file to match your hosting requirements (usually, ``server.jar``). In this case, you should have the following file structure:
|
||||||
|
|
||||||
|
* ``server.jar`` - the LaunchHelper file.
|
||||||
|
* ``minecraft_server.jar`` - your server core.
|
||||||
|
* ``authlib-injector.jar`` - the authlib-injector file.
|
||||||
|
* ``launchhelper.properties`` - the configuration file for the LaunchHelper.
|
83
source/ru/authlib-injector.rst
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
Authlib-injector
|
||||||
|
----------------
|
||||||
|
|
||||||
|
**authlib-injector** — это библиотека, позволяющая подменить адреса серверов авторизации и сессии в Authlib, не модифицируя непосредственно саму библиотеку. Выполнена как javaagent.
|
||||||
|
|
||||||
|
Данная библиотека значительно упрощает установку альтернативных сервисов авторизации в игровой клиент и сервер, поскольку она универсально применяет трансформацию в процессе работы программы.
|
||||||
|
|
||||||
|
Скачать последнюю версию можно со `страницы релизов на GitHub <https://github.com/yushijinhun/authlib-injector/releases/latest>`_.
|
||||||
|
|
||||||
|
Здесь приведена документация к ключевым аспектам установки и использования библиотеки. Для более подробной информации обратитесь к `оригинальной документации на китайском языке <https://github.com/yushijinhun/authlib-injector/wiki>`_.
|
||||||
|
|
||||||
|
.. _client:
|
||||||
|
|
||||||
|
Установка в игровой клиент
|
||||||
|
==========================
|
||||||
|
|
||||||
|
.. attention:: Обратите внимание, что этот раздел описывает установку authlib-injector в игру. Игровой лаунчер по-прежнему должен самостоятельно реализовать процесс авторизации, чтобы после передать ``accessToken`` в игру.
|
||||||
|
|
||||||
|
Для применения библиотеки, необходимо указать её в качестве javaagent для игры. Сделать это можно, добавив в начало команды запуска игры строку ``-javaagent:/путь/до/файла/authlib-injector.jar=ely.by``. В результате изменений строка запуска игры должна выглядеть следующим образом:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
java -javaagent:/путь/до/файла/authlib-injector.jar=ely.by -jar minecraft.jar
|
||||||
|
|
||||||
|
Если вы запускаете игру через лаунчер, то в его настройках необходимо найти поле для указания дополнительных аргументов JVM, куда необходимо в самое начало вставить строку, приведённую выше.
|
||||||
|
|
||||||
|
.. figure:: ../_static/authlib-injector/launcher-jvm-options.png
|
||||||
|
:align: center
|
||||||
|
:alt: Редактирование аргументов JVM
|
||||||
|
|
||||||
|
.. _server:
|
||||||
|
|
||||||
|
Установка на сервер
|
||||||
|
===================
|
||||||
|
|
||||||
|
Также как и в случае с игровым клиентом, библиотеку необходимо указать в качестве javaagent. `Скачайте библиотеку <https://github.com/yushijinhun/authlib-injector/releases/latest>`_ и поместите её в директорию с сервером. После этого добавьте вызов javaagent в команду запуска сервера:
|
||||||
|
|
||||||
|
| До: ``java -jar minecraft_server.jar``
|
||||||
|
| После: ``java -javaagent:authlib-injector.jar=ely.by -jar minecraft_server.jar``
|
||||||
|
|
||||||
|
При запуске сервера вы должны увидеть сообщение об активации authlib-injector:
|
||||||
|
|
||||||
|
.. figure:: ../_static/authlib-injector/server-startup-messages.png
|
||||||
|
:align: center
|
||||||
|
:alt: Сообщение при запуске сервера
|
||||||
|
|
||||||
|
BungeeCord
|
||||||
|
~~~~~~~~~~
|
||||||
|
|
||||||
|
authlib-injector должен быть установлен непосредственно на сам BungeeCord, а также **на все сервера** позади него. Обратите внимание на конфигурацию параметра online‑mode:
|
||||||
|
|
||||||
|
* В конфигурации BungeeCord (``config.yml``) должно стоять значение ``online_mode=true``.
|
||||||
|
* В конфигурации всех серверов позади прокси (``server.properties``) должно быть указано значение ``online-mode=false``.
|
||||||
|
|
||||||
|
Благодаря такой конфигурации установки, авторизация будет работать для всех входящих игроков, а на внутренних серверах будут корректно отображаться скины игроков.
|
||||||
|
|
||||||
|
LaunchHelper
|
||||||
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Не все игровые хостинги позволяют напрямую модифицировать аргументы, с которыми запускается сервер. Чтобы обойти это ограничение, можно использовать специальный сервер, который запускает игровой сервер, подмешивая туда authlib-injector. Для установки следуйте инструкции:
|
||||||
|
|
||||||
|
#. Скачайте версию LaunchHelper для вашей операционной системы со `страницы загрузок <https://github.com/Codex-in-somnio/LaunchHelper/releases/latest>`_.
|
||||||
|
|
||||||
|
#. Загрузите скачанный файл и файл ``authlib-injector.jar`` в папку сервера на вашем хостинге.
|
||||||
|
|
||||||
|
#. Там же создайте файл ``launchhelper.properties`` и поместите в него следующее содержимое:
|
||||||
|
|
||||||
|
.. code-block::
|
||||||
|
|
||||||
|
javaAgentJarPath=authlib-injector.jar
|
||||||
|
javaAgentOptions=ely.by
|
||||||
|
execJarPath=minecraft_server.jar
|
||||||
|
|
||||||
|
Где ``javaAgentJarPath`` содержит путь до файла authlib-injector.jar, а ``execJarPath`` содержит имя файла сервера.
|
||||||
|
|
||||||
|
#. В панели управления хостингом укажите ``LaunchHelper.jar`` в качестве запускаемого файла сервера.
|
||||||
|
|
||||||
|
Если возможности указать исполнимый файл явно нет, то следует переименовать файл ``LaunchHelper.jar`` в соответствие с требованиями вашего хостинга (обычно, это ``server.jar``). В этом случае у вас должна получиться следующая структура файлов:
|
||||||
|
|
||||||
|
* ``server.jar`` - файл LaunchHelper.
|
||||||
|
* ``minecraft_server.jar`` - предпочитаемое ядро сервера.
|
||||||
|
* ``authlib-injector.jar`` - файл authlib-injector.
|
||||||
|
* ``launchhelper.properties`` - файл конфигурации для LaunchHelper.
|
@ -261,6 +261,8 @@ accessToken. Вам остаётся только заменить пути вн
|
|||||||
Готовые библиотеки authlib
|
Готовые библиотеки authlib
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
|
.. attention:: Ely.by поддрживает библиотеку authlib-injector. Это наиболее простой и универсальный способ установки системы авторизации в игру и игровые сервера. За подробностями обратитесь в :doc:`соответствующий раздел документации <authlib-injector>`.
|
||||||
|
|
||||||
Поскольку самостоятельная реализация связана с трудностями поиска исходников, подключения зависимостей и в конце-концов
|
Поскольку самостоятельная реализация связана с трудностями поиска исходников, подключения зависимостей и в конце-концов
|
||||||
с процессом компиляции, на `странице загрузок нашей системы скинов <//ely.by/load>`_ вы можете загрузить уже
|
с процессом компиляции, на `странице загрузок нашей системы скинов <//ely.by/load>`_ вы можете загрузить уже
|
||||||
готовые библиотеки со всеми необходимыми изменениями. Выберите в выпадающем списке необходимую версию и следуйте
|
готовые библиотеки со всеми необходимыми изменениями. Выберите в выпадающем списке необходимую версию и следуйте
|
||||||
@ -269,9 +271,9 @@ accessToken. Вам остаётся только заменить пути вн
|
|||||||
В более ранних версиях игры система скинов находилась внутри игрового клиента, так что библиотеки ниже обеспечивают
|
В более ранних версиях игры система скинов находилась внутри игрового клиента, так что библиотеки ниже обеспечивают
|
||||||
лишь авторизацию:
|
лишь авторизацию:
|
||||||
|
|
||||||
* Minecraft 1.7.5 - :download:`authlib 1.3.1 <_static/minecraft-auth/authlib/authlib-1.3.1.jar>`
|
* Minecraft 1.7.5 - :download:`authlib 1.3.1 <../_static/minecraft-auth/authlib/authlib-1.3.1.jar>`
|
||||||
|
|
||||||
* Minecraft 1.7.2 - :download:`authlib 1.3 <_static/minecraft-auth/authlib/authlib-1.3.jar>`
|
* Minecraft 1.7.2 - :download:`authlib 1.3 <../_static/minecraft-auth/authlib/authlib-1.3.jar>`
|
||||||
|
|
||||||
Для установки вам необходимо заменить оригинальную библиотеку, располагающуюся по пути
|
Для установки вам необходимо заменить оригинальную библиотеку, располагающуюся по пути
|
||||||
``<директория установки minecraft>/libraries/com/mojang/authlib/``. Убедитесь в том, что версии скачанного и заменяемого
|
``<директория установки minecraft>/libraries/com/mojang/authlib/``. Убедитесь в том, что версии скачанного и заменяемого
|
||||||
@ -298,9 +300,9 @@ authlib для соответствующей версии сервера. Пе
|
|||||||
Вам необходимо "перетащить" из архива с authlib все файлы и папки, **за исключением директории META-INF**, и подтвердить
|
Вам необходимо "перетащить" из архива с authlib все файлы и папки, **за исключением директории META-INF**, и подтвердить
|
||||||
замену.
|
замену.
|
||||||
|
|
||||||
.. figure:: _static/minecraft-auth/authlib-install.png
|
.. figure:: ../_static/minecraft-auth/authlib-install.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Процесс установки authlib.
|
:alt: Процесс установки Authlib
|
||||||
|
|
||||||
Обратите внимание: "перетягивать" содержимое нужно ниже папок сервера (в область файлов .class).
|
Обратите внимание: "перетягивать" содержимое нужно ниже папок сервера (в область файлов .class).
|
||||||
|
|
||||||
@ -338,6 +340,8 @@ Paper (PaperSpigot)
|
|||||||
BungeeCord
|
BungeeCord
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
.. hint:: Вы можете воспользоваться библиотекой :doc:`authlib-injector <authlib-injector>` для установки системы авторизации без модификации внутренностей сервера.
|
||||||
|
|
||||||
Хотя BungeeCord и является проксирующим сервером, авторизацию игроков он выполняет самостоятельно. К сожалению, BungeeCord не опирается на использование Authlib, а реализует процесс авторизации самостоятельно, поэтому для установки системы авторизации Ely.by вам понадобится модифицировать скомпилированные ``.class`` файлы.
|
Хотя BungeeCord и является проксирующим сервером, авторизацию игроков он выполняет самостоятельно. К сожалению, BungeeCord не опирается на использование Authlib, а реализует процесс авторизации самостоятельно, поэтому для установки системы авторизации Ely.by вам понадобится модифицировать скомпилированные ``.class`` файлы.
|
||||||
|
|
||||||
Для установки следуйте инструкции ниже:
|
Для установки следуйте инструкции ниже:
|
||||||
@ -352,13 +356,13 @@ BungeeCord
|
|||||||
|
|
||||||
#. Откройте распакованный файл в программе InClassTranslator и замените в нём строку ``https://sessionserver.mojang.com/session/minecraft/hasJoined?username=`` на ``https://authserver.ely.by/session/hasJoined?username=``, как показано на рисунке ниже:
|
#. Откройте распакованный файл в программе InClassTranslator и замените в нём строку ``https://sessionserver.mojang.com/session/minecraft/hasJoined?username=`` на ``https://authserver.ely.by/session/hasJoined?username=``, как показано на рисунке ниже:
|
||||||
|
|
||||||
.. figure:: _static/minecraft-auth/bungeecord_inclasstranslator.png
|
.. figure:: ../_static/minecraft-auth/bungeecord_inclasstranslator.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Редактирование в InClassTranslator
|
:alt: Редактирование в InClassTranslator
|
||||||
|
|
||||||
#. Сохраните изменения и перетащите измененный файл обратно в архив сервера. Подтвердите замену.
|
#. Сохраните изменения и перетащите измененный файл обратно в архив сервера. Подтвердите замену.
|
||||||
|
|
||||||
.. figure:: _static/minecraft-auth/bungeecord_move.png
|
.. figure:: ../_static/minecraft-auth/bungeecord_move.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Перетаскивание отредактированного файла назад в архив
|
:alt: Перетаскивание отредактированного файла назад в архив
|
||||||
|
|
||||||
@ -404,7 +408,7 @@ Minecraft. Переписывать его сюда не имеет смысла
|
|||||||
Дальше запустите InClassTranslator и в нём откройте этот класс. Слева будет список найденных в файле строк, которые вы
|
Дальше запустите InClassTranslator и в нём откройте этот класс. Слева будет список найденных в файле строк, которые вы
|
||||||
можете изменить. Нужно заменить только строку, отвечающую за запрос на подключение к серверу:
|
можете изменить. Нужно заменить только строку, отвечающую за запрос на подключение к серверу:
|
||||||
|
|
||||||
.. figure:: _static/minecraft-auth/installing_by_inclasstranslator.png
|
.. figure:: ../_static/minecraft-auth/installing_by_inclasstranslator.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Порядок редактирования: выбрать нужную строку, изменить, сохранить.
|
:alt: Порядок редактирования: выбрать нужную строку, изменить, сохранить.
|
||||||
|
|
||||||
|