Add an article about authlib-injector

This commit is contained in:
ErickSkrauch 2021-03-12 12:23:53 +01:00
parent aee48912b1
commit b40d38a91e
No known key found for this signature in database
GPG Key ID: 669339FCBB30EE0E
11 changed files with 177 additions and 7 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View 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.

View 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, а также **на все сервера** позади него. Обратите внимание на конфигурацию параметра onlinemode:
* В конфигурации 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.

View File

@ -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: Порядок редактирования: выбрать нужную строку, изменить, сохранить.