Своя аутентификация

tox1cozZ

aka Agravaine
8,455
598
2,892
Появилась необходимость написать свою аутентификацию для майна.
Плохо разбираюсь в данной теме, поэтому хочу услышать советы.
У меня идея такая: человек логинится в лаунчере - генерируется токен и записывается в БД - передается аргументом при запуске игры.
При заходе на сервер клиент отсылает ник и токен, сервер сверяет данные с БД и если такая пара есть - пропускает на сервер.
Есть ли проблемы в этом подходе? Покопавшись в коде майна увидел кучу оверхеда, не совсем понимаю для чего он.
Знатоки, объясните.
 
3,005
192
592
человек логинится в лаунчере - генерируется токен и записывается в БД - передается аргументом при запуске игры.
При заходе на сервер клиент отсылает ник и токен, сервер сверяет данные с БД и если такая пара есть - пропускает на сервер.

Потом меняешь клиент, добавляем м@диков, пишешь токен в аргументы и заходишь на сервер с другого лаунчера, с м@диками.
 
145
7
31
У меня тоже была идея сделать подобное. Когда игрок авторизуется в лаунчере, лаунчсервер отправляет пакет на сервер с сессией игрока, вроде можно и без бд делать.
 

tox1cozZ

aka Agravaine
8,455
598
2,892
Потом меняешь клиент, добавляем м@диков, пишешь токен в аргументы и заходишь на сервер с другого лаунчера, с м@диками.
А в каком месте тогда yggdrasil авторизация защищает от этого?
 
145
7
31
Вроде никаким. Можно легко стащить сессию и запустить свой клиент и зайти на сервер
 
Последнее редактирование:
808
3
124
Майновская пляска с публичными и приватными ключами решает проблему того, что в обычной майновской аутентификации участвует три стороны: моджанг, сервер (которому нельзя доверять данные, которые позволили бы владельцу сервера получить доступ к аккаунту игрока на другом сервере) и клиент. Именно из-за соображений безопасности клиент не может отдать серверу токен, который прокинут в него лаунчером. Поэтому там трехсторонняя схема, в которой (если упрощенно, а целиком я и сам не помню):
  • лаунчер получает у моджанга токен по паролю
  • токен прокидывается в клиент
  • клиент начинает подключение к серверу, узнает его serverId
  • клиент сообщает serverId и свой токен моджангу (запрос joinserver)
  • клиент говорит серверу "я готов, чекай мою аутентификацию"
  • сервер сообщает serverId и ююид игрока моджангу (запрос checkserver)
  • моджанг отвечает, правда ли игрок с таким ююид прошел аутентификации на вашем serverId
Если трех сторон нет (есть только игрок, твой сервер и твой же сервер аутентификации), то смысла от всей этой пляски никакой, и теоретически можно передавать auth токен от игрока серверу, а сервер сам уже проверит токен. Я делаю так, но для этого нужно сильнее патчить майн, поэтому чаще просто подменяют адреса checkserver и joinserver запросов и воспроизводят в своем лаунчере такую же логику аутентификации, как моджанг.
 
Последнее редактирование:

tox1cozZ

aka Agravaine
8,455
598
2,892
Огромное спасибо за объяснение ключей. А что скажешь по поводу проблемы, которую написали выше? По сути если вытащить токен, то можно будет запускаться и играть в обход лаунчеру.

но для этого нужно сильнее патчить майн
Пофиг вообще, у меня отсутствует фордж и есть полный контроль над кодом.
 
808
3
124
Возможность запустить игру без лаунчера считают проблемой только те кто пытается делать защиту от читов через лаунчер, я же считаю это большой глупостью, поэтому сказать мне нечего.
 
808
3
124
Можно и хуками, но там просто строчку заменить же, народ с рубаккита уже вечность как делает это через in class translator
 

Icosider

Kotliner
Администратор
3,603
99
664
@GloomyFolken, в новых версиях надо аутхлибу патчить. Моджанги сделали проверку url адреса, если не их домены, то не сработает(в 1.7 тоже)
 

CumingSoon

Местный стендапер
1,634
12
269
На самом деле, можно просто заменить строчки с ссылками на свои, а самому сделать аналогичную аутентификацию на сайте. Для 1.7.10 я делал вот по этому ресу. Не знаю, что в новых версиях добавили, но я думаю, что можно обойтись просто заменой строк; без всяких хуков.
 

Icosider

Kotliner
Администратор
3,603
99
664
@CumingSoon, без патча новой аутхлибы просто так не заменить ссылки, так как проверка на домены моджангов идёт
 
329
13
Можно сделать авторизацию без лаунчера

GVEnn.gif
 
Сверху