
Custom-Mojang-Auth
Активный0.0
Установок
Последнее обновление
Версии
Custom-Mojang-Auth
Эта библиотека предоставляет удобный способ автоматической авторизации пользователей на пользовательских серверах с использованием их Mojang-аккаунтов. Решение работает с любыми версиями Minecraft и обеспечивает надежную идентификацию игроков, что помогает предотвратить кражу личности и эффективно применять баны. Библиотека успешно используется в проекте MCSR Ranked.
Как использовать
Клиентская часть
Для начала работы с библиотекой необходимо инициализировать аутентификатор в вашем моде:
String accessToken;
UUID uuid;
java.net.Proxy proxy;
String messagePrefix //необязательный параметр
ClientAuth.initialize(accessToken, uuid, proxy, messagePrefix);
Получение accessToken, uuid и proxy зависит от версии Minecraft. UUID игрока обычно можно получить следующими способами:
UUID uuid = net.minecraft.client.MinecraftClient.getInstance().getSession().getProfile().getId(); //для версии 1.16.1
или
UUID uuid = net.minecraft.client.MinecraftClient.getInstance().getSession().getUuidOrNull(); //для версии 1.20.2
Получение accessToken также достаточно просто:
String accessToken = net.minecraft.client.MinecraftClient.getInstance().getSession().getAccessToken();
Получение proxy может быть немного сложнее. В большинстве версий он инициализируется в net.minecraft.client.main.Main.main(String args[]). Проследите за объектом Proxy оттуда - обычно он передается в конструктор net.minecraft.client.MinecraftClient, и найдите способ получить его через вызов метода, рефлексию, миксины или другие подходы.
Для версии 1.20.2 proxy можно получить так:
Field field = net.minecraft.client.MinecraftClient.class.getField("authenticationService");
field.setAccessible(true);
java.net.Proxy proxy = ((com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService)field.get(net.minecraft.client.MinecraftClient.getInstance())).getProxy();
Для версии 1.16.1 используйте следующий подход:
java.net.Proxy proxy = ((com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService)net.minecraft.client.MinecraftClient.getInstance().getSessionService()).getAuthenticationService().getProxy();
Серверная часть
Установите библиотеку:
npm install custom-mojang-auth
Используйте следующую функцию для проверки подписи данных клиентом:
function isValid(uuid, randomLong, data, date, publicKeyString, signatureBytes, payload)
где payload представляет собой массив.
Безопасность и конфиденциальность
Клиент просто подписывает сообщения с использованием своего приватного ключа, которые затем могут быть отправлены на сервер. Никакая информация для входа или другие конфиденциальные данные никогда не покидают устройство клиента.