Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Утилита Готовая система скинов и авторизации Ely.by

@Hello Eddy, я допускаю возможность установки нашего патча в клиент, загружаемый официальным лаунчером, но я не могу придумать ни одного случая, когда установка в официальный лаунчер нашей системы авторизации имела бы хоть какой-то смысл.
Потому, что тлаунчер в новой версии показывает рекламу серверов, я не могу управлять обновлением версиями лаунчера и пакета майнкрафта.
Он считает хеш манифеста и каждого файла отдельно. Думаю, что это сделано не для защиты кода, а для проверки, корректно ли загружен файл.
Есть идеи, как это можно поменять?
 
@Hello Eddy, а ты случайно не говоришь про TLauncher 2.0? Дело в том, что это паразит, прогрессирующий на имени оригинального TLauncher и в нём действительно довольно много лишней рекламы. Настоящий TLauncher можно загрузить с Ely.by, либо из официальной группы.

Касательно же измывания над официальным лаунчером, то, как я говорил, скорее всего желаемого можно добиться, найдя оригинальную SHA-256 хэш сумму и подменив её на свою, после модификации клиента. Думаю, силами того же InClassTranslator можно управиться.
 
Нашел способ обойти сверку по манифесту (пересобирать пакет).
С сервером mojang это работает, но с ely.by - нет.
Cannot contact authentication server
Лог:
[21:41:26 INFO]: Minecraft Launcher 1.6.73-j (through bootstrap 100) started on windows...
[21:41:26 INFO]: Current time is Jun 8, 2017 9:41:26 PM
[21:41:26 INFO]: System.getProperty('os.name') == 'Windows 10'
[21:41:26 INFO]: System.getProperty('os.version') == '10.0'
[21:41:26 INFO]: System.getProperty('os.arch') == 'amd64'
[21:41:26 INFO]: System.getProperty('java.version') == '1.8.0_131'
[21:41:26 INFO]: System.getProperty('java.vendor') == 'Oracle Corporation'
[21:41:26 INFO]: System.getProperty('sun.arch.data.model') == '64'
[21:41:26 INFO]: proxy == DIRECT
[21:41:26 INFO]: JFX is already initialized
[21:41:26 INFO]: Refreshing local version list...
[21:41:26 INFO]: Refreshing remote version list...
[21:41:28 INFO]: Refresh complete.
[21:41:28 INFO]: Loaded 1 profile(s); selected 'Hello_Eddy'
[21:41:28 INFO]: Refreshing auth...
[21:41:28 INFO]: Logging in with access token
[21:41:29 ERROR]: Exception whilst logging into profile
com.mojang.authlib.exceptions.AuthenticationUnavailableException: Cannot contact authentication server
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:71) ~[java.jar:1.6.73-j]
at com.mojang.authlib.yggdrasil.YggdrasilUserAuthentication.logInWithToken(YggdrasilUserAuthentication.java:132) ~[java.jar:1.6.73-j]
at com.mojang.authlib.yggdrasil.YggdrasilUserAuthentication.logIn(YggdrasilUserAuthentication.java:55) ~[java.jar:1.6.73-j]
at net.minecraft.launcher.Launcher.ensureLoggedIn(Launcher.java:260) [java.jar:1.6.73-j]
at net.minecraft.launcher.Launcher$3.run(Launcher.java:214) [java.jar:1.6.73-j]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_131]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_131]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.Handshaker.fatalSE(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.Handshaker.fatalSE(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.Handshaker.processLoop(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.Handshaker.process_record(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source) ~[?:1.8.0_131]
at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.java:73) ~[java.jar:1.6.73-j]
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:54) ~[java.jar:1.6.73-j]
... 9 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(Unknown Source) ~[?:1.8.0_131]
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) ~[?:1.8.0_131]
at sun.security.validator.Validator.validate(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.Handshaker.processLoop(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.Handshaker.process_record(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source) ~[?:1.8.0_131]
at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.java:73) ~[java.jar:1.6.73-j]
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:54) ~[java.jar:1.6.73-j]
... 9 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source) ~[?:1.8.0_131]
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) ~[?:1.8.0_131]
at java.security.cert.CertPathBuilder.build(Unknown Source) ~[?:1.8.0_131]
at sun.security.validator.PKIXValidator.doBuild(Unknown Source) ~[?:1.8.0_131]
at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) ~[?:1.8.0_131]
at sun.security.validator.Validator.validate(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.Handshaker.processLoop(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.Handshaker.process_record(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source) ~[?:1.8.0_131]
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown Source) ~[?:1.8.0_131]
at com.mojang.authlib.HttpAuthenticationService.performPostRequest(HttpAuthenticationService.java:73) ~[java.jar:1.6.73-j]
at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:54) ~[java.jar:1.6.73-j]
... 9 more

На что поменял:
upload_2017-6-8_21-47-24.png

upload_2017-6-8_21-47-52.png

upload_2017-6-8_21-48-17.png

До сервера ответ есть:
upload_2017-6-8_21-49-19.png

upload_2017-6-8_21-49-55.png

Есть какие-нибудь идеи?)

К вопросу рекламы:
upload_2017-6-8_21-47-1.png
 
@Hello Eddy, ох, я всё время забываю про наше наследие. Замени все домены на http://minecraft.ely.by (все остальные пути оставь теми же, просто домен поменяй). На authserver.ely.by используется сертификат от WoSign, который только актуальные версии Java поддерживают, так что мы вернули в строй старый домен без http.

На счёт TLauncher... Да, этот TL настоящий и такой рекламный блок с каких-то пор там есть. Но всё же, если тебе так и не удастся совладать с лицензионным лаунчером, то альтернатив не много: TL или свой лаунчер.
 
P.s система скинов спеклась кстати, теперь выгоднее юзать скинрестори и получать тот же эффект.
 
Замени все домены на http://minecraft.ely.by (все остальные пути оставь теми же, просто домен поменяй).
Спасибо, заработало)))
Только теперь при входе на сервер недействительная сессия
Вывод сервера:
[22:17:04 INFO]: com.mojang.authlib.GameProfile@21e2af73[id=<null>,name=HelloEddy,properties={},legacy=false] (/37.204.34.11:54093) lost connection: Disconnected

Как сделать так, чтобы работало подключение по https? не думаю, что кому-то интересно красть аккаунты, но всё же))
 
Спасибо, заработало)))
Только теперь при входе на сервер недействительная сессия
Вывод сервера:
[22:17:04 INFO]: com.mojang.authlib.GameProfile@21e2af73[id=<null>,name=HelloEddy,properties={},legacy=false] (/37.204.34.11:54093) lost connection: Disconnected

Как сделать так, чтобы работало подключение по https? не думаю, что кому-то интересно красть аккаунты, но всё же))
А никак, нужен серт доверенный. Иначе это не безопасно.
 
Для join/hasJoined операций можно использовать новый API через сервис Аккаунты Ely.by, но пока по нему не опубликована документация, я бы воздержался от его использования. У меня есть 4 варианта, как можно заставить работать домен authserver.ely.by:
  1. Как отметил @alexandrage, необходимо добавить наш сертификат в доверенные в рамках своей системы;
  2. Обновить Java до версии, поддерживающей сертификаты вроде WoSign или Let'sEncrypt;
  3. Отключить в самой Java проверку корневых сертификатов (хотя по факту это равно использованию http);
  4. Отсыпать нам ужасающие 5$, чтобы мы купили нормальный сертификат на этот домен.
Как видишь, все эти действия предполагают совершения дополнительных действий, которые никто в здравом уме совершать не станет. Так что наиболее простым решением будет использовать домен minecraft.ely.by и ждать с моря погоды :)

Мы работаем над приведением всех сервисов проекта к единому стандарту с лёгкой интеграцией, но пока приходится использовать всё наследие, что у нас имеется.
 
Скачал спигот 1.12 и поменял адреса для авторизации, сервера и апи.
Теперь выдает такую бяку в логе:
(пробую пока с тлаунчером и аккаунтом ely.by)
[21:33:20 WARN]: Exception in thread "User Authenticator #2"
[21:33:20 WARN]: java.lang.AbstractMethodError: com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.hasJoinedServer(Lcom/mojang/authlib/GameProfile;Ljava/lang/String;Ljava/net/InetAddress;)Lcom/mojang/authlib/GameProfile;
[21:33:20 WARN]: at net.minecraft.server.v1_12_R1.LoginListener$3.run(LoginListener.java:217)
[21:33:49 INFO]: Disconnecting com.mojang.authlib.GameProfile@383eaf0f[id=<null>,name=HelloEddy,properties={},legacy=false] (/37.204.34.11:57334): Took too long to log in
[21:33:49 INFO]: com.mojang.authlib.GameProfile@383eaf0f[id=<null>,name=HelloEddy,properties={},legacy=false] (/37.204.34.11:57334) lost connection: Took too long to log in
С чего можно начать расследование?

С оригиналом и учетной записью моджанг работает
[22:01:15 INFO]: UUID of player Hello_Eddy is 33f09d1d-bb6f-4b4f-aa53-8d5ac29e0bca
[22:01:15 INFO]: Disconnecting com.mojang.authlib.GameProfile@32751248[id=33f09d1d-bb6f-4b4f-aa53-8d5ac29e0bca,name=Hello_Eddy,properties={textures=[com.mojang.authlib.properties.Property@6f39ff43]},legacy=false] (/37.204.34.11:57940): Приносим извинения. На данный момент сервер находится на тестировании.

И какой должна быть версия джавы, чтобы нормально работать с Let's Encrypt?
У меня стоит 8 up-131.
На сервере только что поставил 9 в надежде, что с ней заработает авторизация (не заработало, раньше 8 стояла.)
Задал аналогичный вопрос в группу на странице вконтакте, меня отправили сюда и предложили собрать модуль из исходников, но такого глубокого опыта с java у меня было и об этом я туда писал и, если бы он был, таких вопросов бы не было.
Как я понял, на текущий момент поддержки такой авторизации нет (так, чтобы взял, сделал по инструкции и работает). Собственно и какой тогда смысл в системе объединенной для серверов авторизации? (без обид к разработчику..)
Вопрос: в будущем она будет поддерживаться и если да - то когда?
 
Последнее редактирование:
@Hello Eddy где-то месяц назад мы заменили сертификат на authserver.ely.by на не-WoSign, который отлично работает с любой версией Java. Теперь ни у кого не должно быть никаких проблем.
 
Просто из интереса: как должна работать команда /skin для плагина Ely, если скины не привязаны к никам и могут быть сменены в один клик на сайте?
 
Просто из интереса: как должна работать команда /skin для плагина Ely, если скины не привязаны к никам и могут быть сменены в один клик на сайте?
Допустим я хочу позволять игрокам ставить скин по нику через /skin из mojang, либо же загрузить на свой ник скин в ely.by. ChangeSkin и ely.by будут конфликтовать.
 
Просто из интереса: как должна работать команда /skin для плагина Ely, если скины не привязаны к никам и могут быть сменены в один клик на сайте?
Я немного путаюсь. На ely.by можно ставить скин с ника из mojang быстро или только из ely.by, а для Mojang Нужно скачивать и ставить на свой аккаунт сам скин?
 

Поделиться этой страницей

Назад
Верх