Туториал – [урок] система авторизации клиента | 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 запрос.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

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

Ваш адрес email не будет опубликован.

Adblock
detector