Скачать Custom-Mojang-Auth — Minecraft Моды — MetaMods

Custom-Mojang-Auth

Активный

Установок

0

Последнее обновление

2 года назад

Версии

1.16 — 1.20.2
Клиент
Fabric
Библиотеки
Управление
Утилиты

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 представляет собой массив.

Безопасность и конфиденциальность

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

Участники проекта
voidxwalker

voidxwalker

Разработчик

Создан: 9 окт 2023

ID: 12480