docs/ru/authlib-injector.html
2024-03-12 02:18:01 +00:00

326 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Authlib-injector — Ely.by Docs</title>
<link rel="stylesheet" href="/_static/css/theme.css" type="text/css">
<link rel="stylesheet" href="/_static/pygments.css" type="text/css">
<link rel="stylesheet" href="/_static/style.css" type="text/css">
<link rel="shortcut icon" href="/_static/favicon.ico">
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script type="text/javascript" id="documentation_options" data-url_root="./" src="/ru/_static/documentation_options.js"></script>
<script src="/_static/jquery.js"></script>
<script src="/_static/underscore.js"></script>
<script src="/_static/doctools.js"></script>
<script src="/ru/_static/translations.js"></script>
<script type="text/javascript" src="/_static/js/theme.js"></script>
<link rel="index" title="Алфавитный указатель" href="/ru/genindex.html">
<link rel="search" title="Поиск" href="/ru/search.html">
<link rel="next" title="Авторизация для Minecraft" href="/ru/minecraft-auth.html">
<link rel="prev" title="Ely.by API (симуляция Mojang API)" href="/ru/api.html">
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="/ru/index.html" class="icon icon-home"> Ely.by Documentation
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="/ru/search.html" method="get">
<input type="text" name="q" placeholder="Search docs">
<input type="hidden" name="check_keywords" value="yes">
<input type="hidden" name="area" value="default">
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">Статьи на русском:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="/ru/api.html">Ely.by API (симуляция Mojang API)</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Authlib-injector</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#client">Установка в игровой клиент</a></li>
<li class="toctree-l2"><a class="reference internal" href="#server">Установка на сервер</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#bungeecord">BungeeCord</a></li>
<li class="toctree-l3"><a class="reference internal" href="#launchhelper">LaunchHelper</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="/ru/minecraft-auth.html">Авторизация для Minecraft</a></li>
<li class="toctree-l1"><a class="reference internal" href="/ru/oauth.html">Авторизация по протоколу OAuth2</a></li>
<li class="toctree-l1"><a class="reference internal" href="/ru/skins-system.html">Система скинов</a></li>
</ul>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<p class="caption"><span class="caption-text">English articles:</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="/en/api.html">Ely.by API (Mojang API simulation)</a></li>
<li class="toctree-l1"><a class="reference internal" href="/en/authlib-injector.html">Authlib-injector</a></li>
<li class="toctree-l1"><a class="reference internal" href="/en/minecraft-auth.html">Authentication for Minecraft</a></li>
<li class="toctree-l1"><a class="reference internal" href="/en/oauth.html">Authorization via OAuth2 protocol</a></li>
<li class="toctree-l1"><a class="reference internal" href="/en/skins-system.html">Skins system</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="/ru/index.html">Ely.by Documentation</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="/ru/index.html" class="icon icon-home"></a> »</li>
<li>Authlib-injector</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="authlib-injector">
<h1>Authlib-injector<a class="headerlink" href="#authlib-injector" title="Ссылка на этот заголовок"></a></h1>
<p><strong>authlib-injector</strong> — это библиотека, позволяющая подменить адреса серверов авторизации и сессии в Authlib, не модифицируя непосредственно саму библиотеку. Выполнена как javaagent.</p>
<p>Данная библиотека значительно упрощает установку альтернативных сервисов авторизации в игровой клиент и сервер, поскольку она универсально применяет трансформацию в процессе работы программы.</p>
<p>Скачать последнюю версию можно со <a class="reference external" href="https://github.com/yushijinhun/authlib-injector/releases/latest">страницы релизов на GitHub</a>.</p>
<p>Здесь приведена документация к ключевым аспектам установки и использования библиотеки. Для более подробной информации обратитесь к <a class="reference external" href="https://github.com/yushijinhun/authlib-injector/wiki">оригинальной документации на китайском языке</a>.</p>
<div class="section" id="client">
<span id="id2"></span><h2>Установка в игровой клиент<a class="headerlink" href="#client" title="Ссылка на этот заголовок"></a></h2>
<div class="admonition attention">
<p class="admonition-title">Внимание</p>
<p>Обратите внимание, что этот раздел описывает установку authlib-injector в игру. Игровой лаунчер по-прежнему должен самостоятельно реализовать процесс авторизации, чтобы после передать <code class="docutils literal notranslate"><span class="pre">accessToken</span></code> в игру.</p>
</div>
<p>Для применения библиотеки, необходимо указать её в качестве javaagent для игры. Сделать это можно, добавив в начало команды запуска игры строку <code class="docutils literal notranslate"><span class="pre">-javaagent:/путь/до/файла/authlib-injector.jar=ely.by</span></code>. В результате изменений строка запуска игры должна выглядеть следующим образом:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">java</span> <span class="o">-</span><span class="n">javaagent</span><span class="p">:</span><span class="o">/</span><span class="n">путь</span><span class="o">/</span><span class="n">до</span><span class="o">/</span><span class="n">файла</span><span class="o">/</span><span class="n">authlib</span><span class="o">-</span><span class="n">injector</span><span class="o">.</span><span class="n">jar</span><span class="o">=</span><span class="n">ely</span><span class="o">.</span><span class="n">by</span> <span class="o">-</span><span class="n">jar</span> <span class="n">minecraft</span><span class="o">.</span><span class="n">jar</span>
</pre></div>
</div>
<p>Если вы запускаете игру через лаунчер, то в его настройках необходимо найти поле для указания дополнительных аргументов JVM, куда необходимо в самое начало вставить строку, приведённую выше.</p>
<div class="figure align-center">
<img alt="Редактирование аргументов JVM" src="/_images/launcher-jvm-options.png">
</div>
</div>
<div class="section" id="server">
<span id="id3"></span><h2>Установка на сервер<a class="headerlink" href="#server" title="Ссылка на этот заголовок"></a></h2>
<p>Также как и в случае с игровым клиентом, библиотеку необходимо указать в качестве javaagent. <a class="reference external" href="https://github.com/yushijinhun/authlib-injector/releases/latest">Скачайте библиотеку</a> и поместите её в директорию с сервером. После этого добавьте вызов javaagent в команду запуска сервера:</p>
<div class="line-block">
<div class="line">До: <code class="docutils literal notranslate"><span class="pre">java</span> <span class="pre">-jar</span> <span class="pre">minecraft_server.jar</span></code></div>
<div class="line">После: <code class="docutils literal notranslate"><span class="pre">java</span> <span class="pre">-javaagent:authlib-injector.jar=ely.by</span> <span class="pre">-jar</span> <span class="pre">minecraft_server.jar</span></code></div>
</div>
<p>При запуске сервера вы должны увидеть сообщение об активации authlib-injector:</p>
<div class="figure align-center">
<img alt="Сообщение при запуске сервера" src="/_images/server-startup-messages.png">
</div>
<div class="section" id="bungeecord">
<h3>BungeeCord<a class="headerlink" href="#bungeecord" title="Ссылка на этот заголовок"></a></h3>
<p>authlib-injector должен быть установлен непосредственно на сам BungeeCord, а также <strong>на все сервера</strong> позади него. Обратите внимание на конфигурацию параметра onlinemode:</p>
<ul class="simple">
<li><p>В конфигурации BungeeCord (<code class="docutils literal notranslate"><span class="pre">config.yml</span></code>) должно стоять значение <code class="docutils literal notranslate"><span class="pre">online_mode=true</span></code>.</p></li>
<li><p>В конфигурации всех серверов позади прокси (<code class="docutils literal notranslate"><span class="pre">server.properties</span></code>) должно быть указано значение <code class="docutils literal notranslate"><span class="pre">online-mode=false</span></code>.</p></li>
</ul>
<p>Благодаря такой конфигурации установки, авторизация будет работать для всех входящих игроков, а на внутренних серверах будут корректно отображаться скины игроков.</p>
</div>
<div class="section" id="launchhelper">
<h3>LaunchHelper<a class="headerlink" href="#launchhelper" title="Ссылка на этот заголовок"></a></h3>
<p>Не все игровые хостинги позволяют напрямую модифицировать аргументы, с которыми запускается сервер. Чтобы обойти это ограничение, можно использовать специальный сервер, который запускает игровой сервер, подмешивая туда authlib-injector. Для установки следуйте инструкции:</p>
<ol class="arabic">
<li><p>Скачайте версию LaunchHelper для вашей операционной системы со <a class="reference external" href="https://github.com/Codex-in-somnio/LaunchHelper/releases/latest">страницы загрузок</a>.</p></li>
<li><p>Загрузите скачанный файл и файл <code class="docutils literal notranslate"><span class="pre">authlib-injector.jar</span></code> в папку сервера на вашем хостинге.</p></li>
<li><p>Там же создайте файл <code class="docutils literal notranslate"><span class="pre">launchhelper.properties</span></code> и поместите в него следующее содержимое:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">javaAgentJarPath</span><span class="o">=</span><span class="n">authlib</span><span class="o">-</span><span class="n">injector</span><span class="o">.</span><span class="n">jar</span>
<span class="n">javaAgentOptions</span><span class="o">=</span><span class="n">ely</span><span class="o">.</span><span class="n">by</span>
<span class="n">execJarPath</span><span class="o">=</span><span class="n">minecraft_server</span><span class="o">.</span><span class="n">jar</span>
</pre></div>
</div>
<p>Где <code class="docutils literal notranslate"><span class="pre">javaAgentJarPath</span></code> содержит путь до файла authlib-injector.jar, а <code class="docutils literal notranslate"><span class="pre">execJarPath</span></code> содержит имя файла сервера.</p>
</li>
<li><p>В панели управления хостингом укажите <code class="docutils literal notranslate"><span class="pre">LaunchHelper.jar</span></code> в качестве запускаемого файла сервера.</p>
<p>Если возможности указать исполнимый файл явно нет, то следует переименовать файл <code class="docutils literal notranslate"><span class="pre">LaunchHelper.jar</span></code> в соответствие с требованиями вашего хостинга (обычно, это <code class="docutils literal notranslate"><span class="pre">server.jar</span></code>). В этом случае у вас должна получиться следующая структура файлов:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">server.jar</span></code> - файл LaunchHelper.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">minecraft_server.jar</span></code> - предпочитаемое ядро сервера.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">authlib-injector.jar</span></code> - файл authlib-injector.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">launchhelper.properties</span></code> - файл конфигурации для LaunchHelper.</p></li>
</ul>
</li>
</ol>
</div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="/ru/minecraft-auth.html" class="btn btn-neutral float-right" title="Авторизация для Minecraft" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="/ru/api.html" class="btn btn-neutral float-left" title="Ely.by API (симуляция Mojang API)" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
</div>
<hr>
<div role="contentinfo">
<p>
© Copyright 2024, Ely.by.
</p>
</div>
Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
<a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-45299905-2"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-45299905-2');
</script>
</body>
</html>