Туториал – [урок] система авторизации клиента | Bukkit по-русски – свой сервер Minecraft

Авторизация в лаунчере¶

В этом разделе описана авторизация для игрового лаунчера и описывает действия, необходимые для получения accessToken для игрового клиента Minecraft. В результате авторизации будет получен JWT-токен с правами доступаminecraft_server_session.

Авторизация на сервере¶

Эти запросы выполняются непосредственно клиентом и сервером при помощи внутреннего кода или библиотеки authlib (начиная с версии 1.7.2). Они актуальны только в том случае, если вы уже произвели авторизацию и запустили игру с валидным accessToken. Вам остаётся только заменить пути внутри игры/библиотеки на приведённые ниже пути.

Поскольку непосредственно изменить что-либо в работе authlib или игры вы не можете, здесь не приводятся передаваемые значения и ответы сервера. При необходимости вы сможете найти эту информацию самостоятельно в интернете.

Через authlib

Все запросы из этой категории выполняются на подуровень /session. Перед каждым из запросов указан тип отправляемого запроса.

POST/session/join

Запрос на этот URL производится клиентом в момент подключения к серверу с online-mode=true.

GET/session/hasJoined

Запрос на этот URL выполняет сервер с online-mode=true после того, как клиент, пытающийся к нему подключится, успешно выполнит join запрос.

Для старых версий

Все запросы из этой категории выполняются на подуровень /session/legacy. Перед каждым из запросов указан тип отправляемого запроса.

Принцип обработки этих запросов такой же, как и для authlib, отличие только во входных параметрах и возвращаемых значения.

GET/session/legacy/join

Запрос на этот URL производится клиентом в момент подключения к серверу с online-mode=true.

GET/session/legacy/hasJoined

Запрос на этот URL выполняет сервер с online-mode=true после того, как клиент, пытающийся к нему подключится, успешно выполнит join запрос.

Важно не потерять GET параметр ?user= в конце обоих запросов, чтобы получились следующие URL: http://minecraft.ely.by/session/legacy/hasJoined?user=.

Для старых версий¶

Все запросы из этой категории выполняются на подуровень /session/legacy. Перед каждым из запросов указан тип отправляемого запроса.

Принцип обработки этих запросов такой же, как и для authlib, отличие только во входных параметрах и возвращаемых значения.

GET/session/legacy/join

Запрос на этот URL производится клиентом в момент подключения к серверу с online-mode=true.

GET/session/legacy/hasJoined

Запрос на этот URL выполняет сервер с online-mode=true после того, как клиент, пытающийся к нему подключится, успешно выполнит join запрос.

Как зайти на сервер minecraft?

Перед началом игры на сервере Майнкрафт, вам нужно придумать себе игровой никнейм. Ник должен состоять из букв латинского (английского) алфавита. Разрешено использование цифр и нижнего подчеркивания – «_».

Дальше идем и выбираем сервер в нашем мониторинге серверов Minecraft. Запускаем игру, переходим в раздел «сетевая игра», вводим IP-адрес найденного сервера и соединяемся с сервером.

Зайдя на сервак, вы не сможете двигаться, а в чате у вас будет спрашивать пароль, ниже смотрим что делать.

Какой вводить пароль на сервере minecraft?

Чтоб сервер знал о вас информацию, как о игроке, вам нужно зарегистрироваться, для этого пишем в ЧАТ:

/register «ваш пароль» «повтор пароля»

Вводим любой пароль, который вы помните, так как при следующем входе на сервер у вас снова запросит этот пароль!

Авторизацияна сервере при повторном заходе:

/login «ваш пароль, указанный при регистрации»

Одиночная игра¶

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

Тем не менее, описанный ниже запрос актуален только для Minecraft 1.7.6 , когда для загрузки скинов стала использоваться так же Authlib.

GET/session/profile/{uuid}

Запрос на этот URL выполняется клиентом в одиночной игре на локальном сервере (созданном посредством самой игры). В URL передаётся UUID пользователя, с которым был запущен клиент, а в ответ получается информация о текстурах игрока в таком же формате, как и при hasJoined запросе.

Туториал – [урок] система авторизации клиента

Система авторизации клиента позволяет зайти на сервер только игрокам использующим ваш лаунчер и клиент. Соответственно отпадает надобность в плагинах авторизации.
Для использования этой системы нужно скачать исходники лаунчера(смотрите прикрепленные файлы), написанный мною скрипт(смотрите прикрепленные файлы), а также mcp44 для редактирования клиента и официального сервера или In Class Translator(смотрите прикрепленные файлы) для редактирования bukkit сервера.
Заливаем скрипты на свой сайт, все в одну папку и настраиваем connect.php под свою базу данных. Если у вас уже есть таблица с аккаунтами, то нужно добавить в нее колонки server и session. Если нет, то импортируйте файл accounts.sql в свою MySQL базу. Также обязательно нужно импортировать файл data.sql
Описание полей в таблице data:
launcher-version : версия лаунчера(если не знаете зачем оно, не трогайте)
last-game-build : версия клиента(любое значение, указывать без точек), это нужно изменять когда вы заливаете новую версию клиента

Теперь открываем исходники лаунчера в eclipse или NetBeans. В файле GameUpdater.java заменяем http://s3.amazonaws.com/MinecraftDownload/ на ссылку откуда будет качаться клиент, в файле LauncherFrame.java заменяем https://login.minecraft.net/ на ссылку к файлу auth.php , в файле LoginForm.java заменяем http://www.minecraft.net/register.jsp на ссылку к своей регистрации и http://www.minecraft.net/download.jsp на ссылку загрузок на своем сайте(не обязательно) и компилируем(как это сделать: ссылка).
Теперь откройте папку куда распаковали mcp44 и закиньте клиентскую папку bin и чистый minecraft_server.jar(если у вас официальный сервер) в папку jars. Декомпилируйте. Откройте srcminecraftnetminecraftsrcNetClientHandler.java в любом текстовом редакторе и замените http://session.minecraft.net/game/joinserver.jsp?user=на ссылку к файлу joinserver.php и обязательно оставьте ?user= в конце. Потом откройтеsrcminecraft_servernetminecraftsrcThreadLoginVerifier.java в любом текстовом редакторе и замените http://session.minecraft.net/game/checkserver.jsp?user= на ссылку к файлу checkserver.php и обязательно оставьте ?user= в конце. Рекомпилируйте и запустите файл reobfuscate.bat. Теперь закинте файл в папке reobfminecraft в minecraft.jar и файл в папке reobfminecraft_server в minecraft_serer.jar. Все, запускайте сервер c параметром onlinemode=true и пробуйте.
Если используете bukkit сервер, то извлеките из craftbukkit-0.0.1-SNAPSHOT.jar файл netminecraftserverThreadLoginVerifier.class, откройте его в In Class Translator и замените http://session.minecraft.net/game/checkserver.jsp?user= на ссылку к файлу checkserver.php и обязательно оставьте ?user= в конце. Закинте файл ThreadLoginVerifier.class обратно в craftbukkit-0.0.1-SNAPSHOT.jar. Все, запускайте сервер c параметром onlinemode=true и пробуйте.
Скрипт поддерживает md5 хеш и хеш плагина xauth. Т.е. если у вас стоял плагин авторизации, вы без труда можете перейти на эту систему.

скрипты для проверки
простая регистрация с мд5 хэшем

Файлы, которые нужно редактировать In Class Translator‘ом в версии 1.0.0
в клиенте:

vanilla server:
bukkit:

Установка authlib на сервер¶

Сервер также использует authlib для выполнения авторизации игрока, поэтому соответствующие изменения должны быть также применены и к нему. Ниже приведены инструкции по установки authlib для различных реализаций сервера Minecraft.

Установка на версии ниже 1.7.2¶

Для более старых версий существует достаточно большое многообразие различных случаев, раскрыть которые в этой документации не представляется возможным. Вся установка заключается в замене определённых строк в определённых классах через InClassTranslator.

На форуме RuBukkit есть отличный пост, в котором собрана вся нужна информация по именам классов на различных версиях Minecraft. Переписывать его сюда не имеет смысла, так что просто перейдите на его страницу и найдите нужную версию.

RuBukkit –
Список классов и клиентов для MCP.

Через authlib¶

Все запросы из этой категории выполняются на подуровень /session. Перед каждым из запросов указан тип отправляемого запроса.

POST/session/join

Запрос на этот URL производится клиентом в момент подключения к серверу с online-mode=true.

GET/session/hasJoined

Запрос на этот URL выполняет сервер с online-mode=true после того, как клиент, пытающийся к нему подключится, успешно выполнит join запрос.

Похожее:  Внешние скрипты с доступом к вашим кредиткам и личному кабинету / Хабр

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *