From aac9ca51888a515abcd93e05cfd4d7b9bffdad88 Mon Sep 17 00:00:00 2001 From: Ntdi Date: Mon, 26 Jun 2023 17:30:19 -0400 Subject: [PATCH] trying to not bash my head through a window --- pom.xml | 2 +- .../menu/altmanager/panels/LoginPanel.java | 27 +- .../altmanager/panels/auth/AthenaAuth.java | 175 ++++++++++ .../altmanager/panels/auth/HttpClient.java | 216 ++++++++++++ .../altmanager/panels/auth/LoginFrame.java | 95 ++++++ .../panels/auth/MicrosoftAuthResult.java | 91 +++++ workspace/logs/2023-06-26-1.log.gz | Bin 6968 -> 2512 bytes workspace/logs/2023-06-26-2.log.gz | Bin 15250 -> 2515 bytes workspace/logs/2023-06-26-3.log.gz | Bin 18001 -> 2504 bytes workspace/logs/2023-06-26-4.log.gz | Bin 5038 -> 2518 bytes workspace/logs/2023-06-26-5.log.gz | Bin 2520 -> 2546 bytes workspace/logs/2023-06-26-6.log.gz | Bin 3097 -> 2508 bytes workspace/logs/2023-06-26-7.log.gz | Bin 3031 -> 2509 bytes workspace/logs/latest.log | 313 ++++++++---------- workspace/usercache.json | 2 +- 15 files changed, 732 insertions(+), 189 deletions(-) create mode 100644 src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/AthenaAuth.java create mode 100644 src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/HttpClient.java create mode 100644 src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/LoginFrame.java create mode 100644 src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/MicrosoftAuthResult.java diff --git a/pom.xml b/pom.xml index 58c26ea2..475bd7c7 100644 --- a/pom.xml +++ b/pom.xml @@ -29,7 +29,7 @@ fr.litarvan openauth - 1.1.3 + 1.1.6 net.minecraft diff --git a/src/main/java/rip/athena/client/gui/menu/altmanager/panels/LoginPanel.java b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/LoginPanel.java index 1c46687a..81550eed 100644 --- a/src/main/java/rip/athena/client/gui/menu/altmanager/panels/LoginPanel.java +++ b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/LoginPanel.java @@ -1,25 +1,16 @@ package rip.athena.client.gui.menu.altmanager.panels; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import fr.litarvan.openauth.microsoft.LoginFrame; -import fr.litarvan.openauth.microsoft.MicrosoftAuthResult; -import fr.litarvan.openauth.microsoft.MicrosoftAuthenticationException; -import fr.litarvan.openauth.microsoft.MicrosoftAuthenticator; -import javafx.embed.swing.JFXPanel; -import javafx.scene.Scene; -import javafx.scene.web.WebView; +import fr.litarvan.openauth.microsoft.*; import net.minecraft.client.Minecraft; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.Session; -import org.apache.commons.io.IOUtils; import org.lwjgl.input.Keyboard; import rip.athena.client.Athena; import rip.athena.client.account.Account; import rip.athena.client.account.AccountType; import rip.athena.client.gui.menu.altmanager.Panel; import rip.athena.client.gui.menu.altmanager.button.AltButton; -import rip.athena.client.gui.menu.altmanager.helpers.AltManagerUtils; +import rip.athena.client.gui.menu.altmanager.panels.auth.AthenaAuth; +import rip.athena.client.gui.menu.altmanager.panels.auth.MicrosoftAuthResult; import rip.athena.client.utils.animations.Animation; import rip.athena.client.utils.animations.Direction; import rip.athena.client.utils.animations.impl.DecelerateAnimation; @@ -28,9 +19,6 @@ import rip.athena.client.utils.render.*; import rip.athena.client.utils.render.TextField; import java.awt.*; -import java.io.IOException; -import java.net.HttpURLConnection; -import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -154,10 +142,9 @@ public class LoginPanel extends Panel { if (hoveringMicrosoft && button == 0) { new Thread(() -> { - MicrosoftAuthenticator authenticator = new MicrosoftAuthenticator(); + AthenaAuth authenticator = new AthenaAuth(); - TextField username = textFields.get(0); - String email = username.getText(); + String email = textFields.get(0).getText(); String password = textFields.get(1).getText(); if (email.contains(":")) { String[] split = email.split(":"); @@ -169,7 +156,7 @@ public class LoginPanel extends Panel { try { Athena.INSTANCE.getLog().info(email + password); - MicrosoftAuthResult acc = authenticator.loginWithCredentials(email, password); + MicrosoftAuthResult acc = authenticator.loginWithWebview(); Minecraft.getMinecraft().session = new Session(acc.getProfile().getName(), acc.getProfile().getId(), acc.getAccessToken(), "legacy"); @@ -181,7 +168,7 @@ public class LoginPanel extends Panel { Athena.INSTANCE.getLog().info("Success: Logged into " + acc.getProfile().getName()); } catch (MicrosoftAuthenticationException e) { - e.printStackTrace(); + throw new RuntimeException(e); } resetTextFields(); diff --git a/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/AthenaAuth.java b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/AthenaAuth.java new file mode 100644 index 00000000..4987f017 --- /dev/null +++ b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/AthenaAuth.java @@ -0,0 +1,175 @@ +package rip.athena.client.gui.menu.altmanager.panels.auth; + +import fr.litarvan.openauth.microsoft.*; +import fr.litarvan.openauth.microsoft.model.request.MinecraftLoginRequest; +import fr.litarvan.openauth.microsoft.model.request.XSTSAuthorizationProperties; +import fr.litarvan.openauth.microsoft.model.request.XboxLiveLoginProperties; +import fr.litarvan.openauth.microsoft.model.request.XboxLoginRequest; +import fr.litarvan.openauth.microsoft.model.response.MinecraftLoginResponse; +import fr.litarvan.openauth.microsoft.model.response.MinecraftProfile; +import fr.litarvan.openauth.microsoft.model.response.MinecraftStoreResponse; +import fr.litarvan.openauth.microsoft.model.response.XboxLoginResponse; + +import java.io.UnsupportedEncodingException; +import java.net.CookieHandler; +import java.net.CookieManager; +import java.net.URLDecoder; +import java.util.Arrays; +import java.util.Base64; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionException; +import java.util.concurrent.ExecutionException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + + +public class AthenaAuth { + public static final String MICROSOFT_AUTHORIZATION_ENDPOINT = "https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize"; + public static final String MICROSOFT_TOKEN_ENDPOINT = "https://login.live.com/oauth20_token.srf"; + public static final String MICROSOFT_REDIRECTION_ENDPOINT = "https://login.live.com/oauth20_desktop.srf"; + + public static final String XBOX_LIVE_AUTH_HOST = "user.auth.xboxlive.com"; + public static final String XBOX_LIVE_CLIENT_ID = "000000004C12AE6F"; + public static final String XBOX_LIVE_SERVICE_SCOPE = "service::user.auth.xboxlive.com::MBI_SSL"; + + public static final String XBOX_LIVE_AUTHORIZATION_ENDPOINT = "https://user.auth.xboxlive.com/user/authenticate"; + public static final String XSTS_AUTHORIZATION_ENDPOINT = "https://xsts.auth.xboxlive.com/xsts/authorize"; + public static final String MINECRAFT_AUTH_ENDPOINT = "https://api.minecraftservices.com/authentication/login_with_xbox"; + + public static final String XBOX_LIVE_AUTH_RELAY = "http://auth.xboxlive.com"; + public static final String MINECRAFT_AUTH_RELAY = "rp://api.minecraftservices.com/"; + + public static final String MINECRAFT_STORE_ENDPOINT = "https://api.minecraftservices.com/entitlements/mcstore"; + public static final String MINECRAFT_PROFILE_ENDPOINT = "https://api.minecraftservices.com/minecraft/profile"; + + public static final String MINECRAFT_STORE_IDENTIFIER = "game_minecraft"; + private final HttpClient http; + + public AthenaAuth() { + this.http = new HttpClient(); + } + + public MicrosoftAuthResult loginWithWebview() throws MicrosoftAuthenticationException { + try { + return loginWithAsyncWebview().get(); + } catch (InterruptedException | ExecutionException e) { + throw new MicrosoftAuthenticationException(e); + } + } + + private CompletableFuture loginWithAsyncWebview() { + if(!System.getProperty("java.version").startsWith("1.")) + CookieHandler.setDefault(new CookieManager()); + + String url = String.format("%s?%s", MICROSOFT_AUTHORIZATION_ENDPOINT, http.buildParams(getLoginParams())); + LoginFrame frame = new LoginFrame(); + + return frame.start(url).thenApplyAsync(result -> { + try { + if(result != null) + return loginWithTokens(extractTokens(result),true); + else return null; + } catch (MicrosoftAuthenticationException e) { + throw new CompletionException(e); + } + }); + } + + private MicrosoftAuthResult loginWithTokens(AuthTokens tokens) throws MicrosoftAuthenticationException { + return loginWithTokens(tokens,true); + } + + public MicrosoftAuthResult loginWithTokens(AuthTokens tokens, boolean retrieveProfile) throws MicrosoftAuthenticationException { + XboxLoginResponse xboxLiveResponse = xboxLiveLogin(tokens.getAccessToken()); + XboxLoginResponse xstsResponse = xstsLogin(xboxLiveResponse.getToken()); + + String userHash = xstsResponse.getDisplayClaims().getUsers()[0].getUserHash(); + MinecraftLoginResponse minecraftResponse = minecraftLogin(userHash, xstsResponse.getToken()); + MinecraftStoreResponse storeResponse = http.getJson( + MINECRAFT_STORE_ENDPOINT, + minecraftResponse.getAccessToken(), + MinecraftStoreResponse.class + ); + + if (Arrays.stream(storeResponse.getItems()).noneMatch(item -> item.getName().equals(MINECRAFT_STORE_IDENTIFIER))) { + throw new MicrosoftAuthenticationException("Player didn't buy Minecraft Java Edition or did not migrate its account"); + } + MinecraftProfile profile = null; + if (retrieveProfile) { + profile = http.getJson( + MINECRAFT_PROFILE_ENDPOINT, + minecraftResponse.getAccessToken(), + MinecraftProfile.class + ); + } + + return new MicrosoftAuthResult( + profile, + minecraftResponse.getAccessToken(), + tokens.getRefreshToken(), + xboxLiveResponse.getDisplayClaims().getUsers()[0].getUserHash(), + Base64.getEncoder().encodeToString(minecraftResponse.getUsername().getBytes()) + ); + } + + protected XboxLoginResponse xboxLiveLogin(String accessToken) throws MicrosoftAuthenticationException { + XboxLiveLoginProperties properties = new XboxLiveLoginProperties("RPS", XBOX_LIVE_AUTH_HOST, accessToken); + XboxLoginRequest request = new XboxLoginRequest<>( + properties, XBOX_LIVE_AUTH_RELAY, "JWT" + ); + + return http.postJson(XBOX_LIVE_AUTHORIZATION_ENDPOINT, request, XboxLoginResponse.class); + } + + protected XboxLoginResponse xstsLogin(String xboxLiveToken) throws MicrosoftAuthenticationException { + XSTSAuthorizationProperties properties = new XSTSAuthorizationProperties("RETAIL", new String[]{xboxLiveToken}); + XboxLoginRequest request = new XboxLoginRequest<>( + properties, MINECRAFT_AUTH_RELAY, "JWT" + ); + + return http.postJson(XSTS_AUTHORIZATION_ENDPOINT, request, XboxLoginResponse.class); + } + + protected MinecraftLoginResponse minecraftLogin(String userHash, String xstsToken) throws MicrosoftAuthenticationException { + MinecraftLoginRequest request = new MinecraftLoginRequest(String.format("XBL3.0 x=%s;%s", userHash, xstsToken)); + return http.postJson(MINECRAFT_AUTH_ENDPOINT, request, MinecraftLoginResponse.class); + } + + protected Map getLoginParams() { + Map params = new HashMap<>(); + params.put("client_id", XBOX_LIVE_CLIENT_ID); + params.put("redirect_uri", MICROSOFT_REDIRECTION_ENDPOINT); + params.put("scope", XBOX_LIVE_SERVICE_SCOPE); + params.put("response_type", "token"); + + return params; + } + + protected AuthTokens extractTokens(String url) throws MicrosoftAuthenticationException { + return new AuthTokens(extractValue(url, "access_token"), extractValue(url, "refresh_token")); + } + + protected String extractValue(String url, String key) throws MicrosoftAuthenticationException { + String matched = match(key + "=([^&]*)", url); + if (matched == null) { + throw new MicrosoftAuthenticationException("Invalid credentials or tokens"); + } + + try { + return URLDecoder.decode(matched, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new MicrosoftAuthenticationException(e); + } + } + + protected String match(String regex, String content) { + Matcher matcher = Pattern.compile(regex).matcher(content); + if (!matcher.find()) { + return null; + } + + return matcher.group(1); + } +} diff --git a/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/HttpClient.java b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/HttpClient.java new file mode 100644 index 00000000..fb8f3935 --- /dev/null +++ b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/HttpClient.java @@ -0,0 +1,216 @@ +/* + * Copyright 2015-2021 Adrien 'Litarvan' Navratil + * + * This file is part of OpenAuth. + + * OpenAuth is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenAuth is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with OpenAuth. If not, see . + */ +package rip.athena.client.gui.menu.altmanager.panels.auth; + +import com.google.gson.Gson; +import fr.litarvan.openauth.microsoft.MicrosoftAuthenticationException; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.Proxy; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.Map; + +public class HttpClient +{ + public static final String MIME_TYPE_JSON = "application/json"; + public static final String MIME_TYPE_URLENCODED_FORM = "application/x-www-form-urlencoded"; + + private final Gson gson; + private final Proxy proxy; + + public HttpClient() + { + this(Proxy.NO_PROXY); + } + public HttpClient(Proxy proxy) + { + this.gson = new Gson(); + this.proxy = proxy; + } + + + public String getText(String url, Map params) throws MicrosoftAuthenticationException + { + return readResponse(createConnection(url + '?' + buildParams(params))); + } + + public T getJson(String url, String token, Class responseClass) throws MicrosoftAuthenticationException + { + HttpURLConnection connection = createConnection(url); + connection.addRequestProperty("Authorization", "Bearer " + token); + connection.addRequestProperty("Accept", MIME_TYPE_JSON); + + return readJson(connection, responseClass); + } + + public HttpURLConnection postForm(String url, Map params) throws MicrosoftAuthenticationException + { + return post(url, MIME_TYPE_URLENCODED_FORM, "*/*", buildParams(params)); + } + + public T postJson(String url, Object request, Class responseClass) throws MicrosoftAuthenticationException + { + HttpURLConnection connection = post(url, MIME_TYPE_JSON, MIME_TYPE_JSON, gson.toJson(request)); + return readJson(connection, responseClass); + } + + public T postFormGetJson(String url, Map params, Class responseClass) throws MicrosoftAuthenticationException + { + return readJson(postForm(url, params), responseClass); + } + + + protected HttpURLConnection post(String url, String contentType, String accept, String data) throws MicrosoftAuthenticationException + { + HttpURLConnection connection = createConnection(url); + connection.setDoOutput(true); + connection.addRequestProperty("Content-Type", contentType); + connection.addRequestProperty("Accept", accept); + + try { + connection.setRequestMethod("POST"); + connection.getOutputStream().write(data.getBytes(StandardCharsets.UTF_8)); + } catch (IOException e) { + throw new MicrosoftAuthenticationException(e); + } + + return connection; + } + + protected T readJson(HttpURLConnection connection, Class responseType) throws MicrosoftAuthenticationException + { + return gson.fromJson(readResponse(connection), responseType); + } + + protected String readResponse(HttpURLConnection connection) throws MicrosoftAuthenticationException + { + String redirection = connection.getHeaderField("Location"); + if (redirection != null) { + return readResponse(createConnection(redirection)); + } + + StringBuilder response = new StringBuilder(); + + try + { + InputStream inputStream = connection.getInputStream(); + + // check if the url corresponds to a related authentication url + if(this.checkUrl(connection.getURL())) + { + // then patch the input stream like in the old MicrosoftPatchedHttpURLConnection class. + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + int n; + byte[] data = new byte[8192]; + + while ((n = inputStream.read(data, 0, data.length)) != -1) { + buffer.write(data, 0, n); + } + + byte[] patched = buffer + .toString("UTF-8") + .replaceAll("integrity ?=", "integrity.disabled=") + .replaceAll("setAttribute\\(\"integrity\"", "setAttribute(\"integrity.disabled\"") + .getBytes(StandardCharsets.UTF_8); + + inputStream = new ByteArrayInputStream(patched); + } + + try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) { + String line; + while ((line = br.readLine()) != null) { + response.append(line).append('\n'); + } + } catch (IOException e) { + throw new MicrosoftAuthenticationException(e); + } + } catch (IOException e) + { + throw new RuntimeException(e); + } + + return response.toString(); + } + + private boolean checkUrl(URL url) + { + return (("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/oauth2/authorize")) + || ("login.live.com".equals(url.getHost()) && "/oauth20_authorize.srf".equals(url.getPath())) + || ("login.live.com".equals(url.getHost()) && "/ppsecure/post.srf".equals(url.getPath())) + || ("login.microsoftonline.com".equals(url.getHost()) && "/login.srf".equals(url.getPath())) + || ("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/login")) + || ("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/SAS/ProcessAuth")) + || ("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/federation/oauth2")) + || ("login.microsoftonline.com".equals(url.getHost()) && url.getPath().endsWith("/oauth2/v2.0/authorize"))); + } + + protected HttpURLConnection followRedirects(HttpURLConnection connection) throws MicrosoftAuthenticationException + { + String redirection = connection.getHeaderField("Location"); + if (redirection != null) { + connection = followRedirects(createConnection(redirection)); + } + + return connection; + } + + protected String buildParams(Map params) + { + StringBuilder query = new StringBuilder(); + params.forEach((key, value) -> { + if (query.length() > 0) { + query.append('&'); + } + + try { + query.append(key).append('=').append(URLEncoder.encode(value, StandardCharsets.UTF_8.name())); + } catch (UnsupportedEncodingException ignored) { + // Can't happen + } + }); + + return query.toString(); + } + + protected HttpURLConnection createConnection(String url) throws MicrosoftAuthenticationException + { + HttpURLConnection connection; + try { + connection = (HttpURLConnection) new URL(url).openConnection(proxy); + } catch (IOException e) { + throw new MicrosoftAuthenticationException(e); + } + + String userAgent = "Mozilla/5.0 (XboxReplay; XboxLiveAuth/3.0) " + + "AppleWebKit/537.36 (KHTML, like Gecko) " + + "Chrome/71.0.3578.98 " + + "Safari/537.36"; + + connection.setConnectTimeout(30 * 1000); // 30s + connection.setReadTimeout(60 * 1000); // 60s + connection.setRequestProperty("Accept-Language", "en-US"); + connection.setRequestProperty("Accept-Charset", "UTF-8"); + connection.setRequestProperty("User-Agent", userAgent); + + return connection; + } +} diff --git a/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/LoginFrame.java b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/LoginFrame.java new file mode 100644 index 00000000..0301b49c --- /dev/null +++ b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/LoginFrame.java @@ -0,0 +1,95 @@ +/* + * Copyright 2015-2021 Adrien 'Litarvan' Navratil + * + * This file is part of OpenAuth. + + * OpenAuth is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenAuth is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with OpenAuth. If not, see . + */ +package rip.athena.client.gui.menu.altmanager.panels.auth; + +import javafx.application.Platform; +import javafx.embed.swing.JFXPanel; +import javafx.scene.Scene; +import javafx.scene.layout.VBox; +import javafx.scene.web.WebView; +import org.apache.http.protocol.RequestUserAgent; + +import javax.swing.*; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.util.concurrent.CompletableFuture; + +/* + * Had to use Swing here, JavaFX is meant to have an 'Application' but only one can exist. + * Creating one would break compatibility with JavaFX apps (which already have their own + * class), and letting the user do so would break compatibility with Swing apps. + * + * This method makes the frame compatible with pretty much everything. + */ + +public class LoginFrame extends JFrame +{ + private CompletableFuture future; + private boolean completed; + + public LoginFrame() + { + this.setTitle("Microsoft Authentication"); + this.setSize(750, 750); + this.setLocationRelativeTo(null); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + this.setContentPane(new JFXPanel()); + } + + public CompletableFuture start(String url) + { + if (this.future != null) { + return this.future; + } + + this.future = new CompletableFuture<>(); + this.addWindowListener(new WindowAdapter() { + @Override + public void windowClosing(WindowEvent e) { + if(!completed) + future.complete(null); + } + }); + + Platform.runLater(() -> this.init(url)); + return this.future; + } + + protected void init(String url) { + WebView webView = new WebView(); + JFXPanel content = (JFXPanel) this.getContentPane(); + + content.setScene(new Scene(webView, this.getWidth(), this.getHeight())); + + webView.getEngine().locationProperty().addListener((observable, oldValue, newValue) -> { + if (newValue.contains("access_token")) { + this.future.complete(newValue); + completed = true; + this.dispose(); + } + }); + + webView.getEngine().setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"); + webView.getEngine().load("github.com"); + System.out.println(url); + + this.setVisible(true); + } +} diff --git a/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/MicrosoftAuthResult.java b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/MicrosoftAuthResult.java new file mode 100644 index 00000000..1ef29d3c --- /dev/null +++ b/src/main/java/rip/athena/client/gui/menu/altmanager/panels/auth/MicrosoftAuthResult.java @@ -0,0 +1,91 @@ +/* + * Copyright 2015-2021 Adrien 'Litarvan' Navratil + * + * This file is part of OpenAuth. + + * OpenAuth is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenAuth is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with OpenAuth. If not, see . + */ +package rip.athena.client.gui.menu.altmanager.panels.auth; + +import fr.litarvan.openauth.microsoft.model.response.MinecraftProfile; + +/** + * Microsoft authentication result + * + *

+ * This class contains the result of a successful Microsoft authentication: a player profile and its tokens (both + * access and refresh token). + *

+ * + * @author Litarvan + * @version 1.1.5 + */ +public class MicrosoftAuthResult +{ + private final MinecraftProfile profile; + private final String accessToken; + private final String refreshToken; + private final String xuid; + private final String clientId; + + public MicrosoftAuthResult(MinecraftProfile profile, String accessToken, String refreshToken, String xuid, String clientId) + { + this.profile = profile; + this.accessToken = accessToken; + this.refreshToken = refreshToken; + this.xuid = xuid; + this.clientId = clientId; + } + + /** + * @return The player Minecraft profile (contains its UUID and username) + */ + public MinecraftProfile getProfile() + { + return profile; + } + + /** + * @return The Minecraft access token + */ + public String getAccessToken() + { + return accessToken; + } + + /** + * @return The Microsoft refresh token that can be used to log the user back silently using + * + */ + public String getRefreshToken() + { + return refreshToken; + } + + /** + * @return The XUID of the player + */ + public String getXuid() + { + return this.xuid; + } + + /** + * @return The client ID of the player + */ + public String getClientId() + { + return this.clientId; + } +} diff --git a/workspace/logs/2023-06-26-1.log.gz b/workspace/logs/2023-06-26-1.log.gz index 575620384301f671633e0a526ab4256f2d8a0f24..b5800fa0cd402399630ebeb23b898aa71fcfb089 100644 GIT binary patch literal 2512 zcmV;>2`}~^iwFP!000000L@$LQX9Dv{=ZfG4%(`%T1XLL3<2U_2j9S3HgG%!QWa7z zG1IoSo{{EA8f@o<&U>6EJ1x!F#tBJmoEgH8VJ=dCeN%Vq;*ST%m80WIx%7#Atc4te zA!ek21^cbb=GCVP@xT}^h9uFTD&#t3Gf+qGkADB{B1lc-$+H8QVqer+l~ajom6l zfT0mK^c5SJfrX&HqevqeKuFJwQT!n>pnobX64&$r6%A@2L(Z14Rrj))zD!Z_7I+Ya z)R$2t1!X#-MlqrBO9V>OYRItlu(y1dH#hKT)i9AN3}|hXi18gW{-|N!{&^$ZLlFv5 z5VA!0BT%#^6?A0KVFFE(yZo6Y>O2Br2UAh7sr#kcKTo*lD*%zIy{_2g>GQRMUy2>6 za~~rs{4|8&W_HVA(ghKKO4+C}932d!XA=Jc+%)B|CPS%yZru8Q^l5o0bOzwl#X(4sVW~ZIfzeqJvpaCqj zyW1MN17;+H?_g)?>4D1#Xw_cNK~$LrIs}6$3X~gr9kf1=5ja;~9;}_Ivo>WxPzP<4 zoHYgmq_D*R*ckYNn}R`oCTd93BnrHkO+Uo!VM&7j|bqMQVy^-D+(Q5 zy9z;_E9{MRNrABQh_+=g+YEQabdQISX4j%Xxjy5Cxf9oD&qBePQf`qBHwCmq#lwkI zt}=r2kE{rDk%7CwfH{EqTL|0a5N-q<+b~$iB4CT~`!djAOVmx3tVc2lgLwqL#xkLB zY-?kW=U&>S1-@JPa1~{f+1^`3qm3#`hkGIAIQKGoUOX-Uw_W)7v01r+h_>tn6HGl( z?16`9U}T}rbsVx>L;ebQ$1XG#gC<4l#@;07x?u^K4wxECG;{&}lkoUV@QCGIL98$^ zS=zVCa!s!b*e>`|1=hUj9Zm&hqWt{VO`Z&0bgY^bhGC0bg^s1QCcSq5(kTFD-x})N z@JF!P$P?XQk(R~iWxcj6(W?kD&e_|aXTjOtu^APZGFEuIT3W1CE8oaE~V&ofYL zw$3t%%EW!1r@1n0q_^wI*emLEf-MKN zP$oeU0p=U{-gx$k=y$*jj?nEn*m$k=JmHw)+q|&dk9144<<>SKsIoBx|4!Hz)9aTl zaJPzI;m#D$O08Vb+V-l}y@)B}B;Inuu$jbIy*a!N=#kx*R@;P_A3@V}&vl|$jHae- z_f)8wV;)0@-)Wl2R3WXd$=~w9@;wj3a!!YUUe6aeIiYUGtqz;NkWvDsBGzq$i!%@dWpc$ zfD==Evs0_w-)K^>!*VrLI;vnN#a*ipQv z_sBRHeZMeB*7Sau@OzyeP1H0N!(I9hdt_6}Bb@bcNn5R}#?*({E<#mEjfuYuvGNfv z;>3^v%Jj$g)Nps!y?m;Lp5mwk=KJNWg<91lCw(I3>tKK>z=YaJ!hRbg6 z11Xn|OT@dmZglsrYc1IKyauXguIVFsOiS}_?+%Y?`EYOk_+mLyZkE36KsF=MVN)I@ z5iu~eJHABo&loTc%O}UDQ+Hh@*K>5k1M_BWz;i`9};74kxhE$GbGlGb*hji_UMOgFsJ?whZZS-56v-3v(=CalEtkZ5p$|kv|{+4FDB(>^ViR(+R#Z)L<`St*= zz=B|p*e#mO>^41Oa(f8Z%!>>1my&3AkA>7YqfFNxm)Rh|VVMZbA+3`&u)APU>|ma6 zZ)S(pE2N%Q1AF8Tf`9+}@58k;11sdaF`LoPJl-t+q-FFREsH{WwT@ng&YVwTb%fr( z9(SJA32E~O#ndbQ9%dKb`k$Va1H|DE`^@O^Xd1 zj?UWO@3zw$LDu|%yIn;h2U$-_?2lwH`(c3QV&L{g(4>1;C6Ib^4CzA;cC;tpX ziu0V^?_;G@kyOU%iaVYDNH6Xih#~5oXse{BXU*QPVJk0I+$>YgW}Q1cj#!L!=p%$^ z=XV?Swg-1JFRPFNPIqAq0`4p-;NU5jj!vicvhdWm%;1b{LF4e7KcV`j&-;lsGJ4+i z*CJPQ1ibN#WDDso{6~Ja!?>@4!#FIF&N_tyG&TY$|DN-vhJ;i_;<|5z{jNf=@pt`O!kpR;}l>=E=H7GcUC zEuI3V#(l}gix>YSVi>~W@#!ZWtHhsw${0JTl*`LP?BMXL#ji!XqbIAz-Y7AFoCwle ak;F4Hj&13n-TKJyzx^Ni)L|?7Jpce*!1Njb literal 6968 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 SW7zU3kD#*tgYOzw&-??brOc@S diff --git a/workspace/logs/2023-06-26-3.log.gz b/workspace/logs/2023-06-26-3.log.gz index 3bac1fcf78fc4fd8d7e4d385bb77b5651711aca1..c5cc5880fd588db7b76c153299e86abada73c3fd 100644 GIT binary patch literal 2504 zcmV;(2{-m1iwFP!000000L@$Ja@#l({y$ao4w$N`8aw6CI($XHR;R5g$@Yq}ovJvc zg2|SIhy=I*Xi0gYeUE*zZGeT`v-pf%$o5-X4uavjh)$WrO}_uoGKsOO#wN-@DnyFr*DT1HvdKDndX8#m3{KX15w$U`9# z0vdB~4AQ9!30>iLDMyoJE`Mr?1`C0k!IT$l;(m$t&tv9#5`ZUaZ%8_Q`g|?nmtse# z%*V(YKTWQgp5HQ<_JI2!6E^A;M+e2|8ArbWH!U%$i$KVq8@FDL9+sam<$i#p#+M^A_A%BPIIP>ANaLEcoSDso%vw3T1Z^7)$JtoFA`1UXaECk z?{O2%IS|55~@pwYEcjzX3{1 zF>elsNMVNour=@n(>a5Bl-H4{jwQGeo$?%UlTh2{9aGxoh3gAYF7v@YB^+RFmKQp@ zb`AUnlh_;Uk{n?d5pBm{wjJ)6sy+)K$*y^UGF4@{xf4@p&s@P;LhO(Zw*@pq#l?wK zrZR%{kF*H0k%8I3fH{DAI|$oi5Nrh;nK0PEB4CH``#Mm6N7QYVti~b^{6z%5#xfyy zY-3}WWnS7P1-@PRuoY#Cn%+A^qpd1Ri+dr&B=a(QQ9LdIcU}1Sv00gh&}o|sCYVMn z=>rSUz{o;_sVJbChWs_~u32cx2TkzAjooR+b;AlW88CGkE9e3ICuUKVvyf(8L98(_ zUD>xrGfl5c*dBO7`o_G;9Zm&BEWPa4O`Z&0bga7InqrGgg^q-=rgLroB~t**zID{O zW{+UBktMpuA}x*4t9or!qSp{)lCifx&w{nRWkJN;M;2;gmOmF*#7PYY$3NN?7Yv0Y?pCpxX|w!EAjfBsuA_XtwM%(=DyFr;AEZUzvVrL889 z!y9GxEmF<>dVC3`vt}$=2D-CX4@bGS_G7zj7HtQLG3FYiy?3!Y%AFJPwG@x02sRwl z0}=aq1eovOyOa4FqTd14I6`;lVC%Kk^O#|Z@37oiR}Kj#hZv@kcL=?bd} zobD$(cIiWZ9_6`dCSim@T+W^4ntm^R^9D*WBfiaBl7^7W7Va}Fbl4;6;BC$tJi|fW z#|yq?!HvLUG*G{QHdd_Upq3|N#Er1W7z?ivw$FS)^64QYTk$2rn@F|G8Ma%>SrE{l zeu_c+&4f?w21B_V=o$-BV_jp`2;(Cc%MF@q9>N( zy>pL@gI4!TgQQLGM=`rs$j7k7iAbLN~4E*gWI!Nu8jG-@#me2iyt5NrwVR>&RWzL+Xf zERa1K`X@*Gy*jvqFq0g+ZxMIv`h)dI6BSkdct^0wV*SIIeGeU0I= z*Z)XLg_8ntZ?2oY!|Qq*4qdm2>RD*|$T@Kei*Co|6Q@)@SUkR3j)a?)FI$l9NOb9p zg>gtU%*>82QS2)QjB@Gp*V^D&im76DAmW{ne}*ri3v0BbRqhRz|nX4amQw& zpgxoI24@e8?#4_@_6nSDmZgpxWlfYT zW#1h%KlWcqtB+l8dd)$*TRm?MZZ6w>*EsD~q)d`~>TgN5ixaClukl(;h1`~J4`2%{ z@DGUDqDjqe(jz9fhhQx)Zb1H05M}SNkeZ~F|3Tq}ahVPR9F{T19MV4B0J{eU#SG@f z_GWrmy+RsEHE=-wAo%yc|2|v`Jv2fdPw3qF%A!p~`)3)wKue>LTC1ZsqO;(W7#*Sa zZ^oT#bV54pK~gzS${xA=wTz}R`MFF)Y&&Tb%N=aQQ+V_ zXa8lagesCsIsL|+Uet^I27H8iC(0=4$yu}V@dmbXBgynC)oj{QGnb{OzNZ>zWGfmcTl>5hD=otBxc(;O>Xv{z znUi!O-G=|rOLrI#)ntBXC%gr7TXa^fvcxIngj3!fr$YK^^<#o}8Yh?2)QScvDdPsr zA`Vo{hXIvPGPBhzWjlI1*@{`qcKmj-m9v)Zm0TyA>8!w-HDklR$ zC(9RKVm=CB`S|pcie&69J}ntLdNO@3mcLp2O52qy#Sbe1+;OaZG3BJcCW)&>6q(XN S+4Yg%fBQeg-APXRJpcfSV$LG~ literal 18001 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 diff --git a/workspace/logs/2023-06-26-4.log.gz b/workspace/logs/2023-06-26-4.log.gz index a4c78c818e382d50673d250523bef4e1b90bc949..6c8991383abc264c69c4761cff3eb5d4086f9a8b 100644 GIT binary patch literal 2518 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 literal 5038 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 E0Hj{zXaE2J diff --git a/workspace/logs/2023-06-26-5.log.gz b/workspace/logs/2023-06-26-5.log.gz index a7f2c68b49bb1770f55ee784077ec06a9759d416..5ea54fc8bd0dde371549b5408f61357c5305c5ea 100644 GIT binary patch literal 2546 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 IGKW3@0JHAGF6i) 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 X#<49Ov|Atf{kQ)En~leJ`aJ*uwBqk! literal 3031 zcmV;|3n=s-iwFP!000000L@(MQscN1{=ZfG4%(`%8rWh?E|7%$I=Mo&65zxEwrZeK z!d4PZY{^HG3Cs)ad+d{)mh9YSxx{#EW`1OB$K7Aw)M~X9z7&t^g>wDqa`J-Nbxyg^+J8c zVt>WsxbPB>FBgHLUCPKE`s0s3(2z_#;wUaqmy0RU&yq3OTXEP&Ee}hH7*{9|L;_hI zF`_IVUUUSWsELNK9K+G_xl25&p_HKap(65!!UA(?-GiZtm~fBcHEh#7>_!hGl&lq= z_@3o(-{;K2(zlerOu{!l5z=aU7~Y|x}YVdi=; zYK#~k3f>GqR{7tDM224Wp&8)^f(JyXC#&-tdIpRjCw#WLqw9O0G^&&#BEan)KHh?2)oQ^DU(?;+!>Z5>XB%6%?p&u2F)#;s04rJ3fAR3#dMey zP!AOw7E+n&NKAahMVQG9)FcL&1F(}q*)AnsBH%!$!8Q~DDbnxzK;4w6NsTOLJoMaU z2EK$cA$M%;W1D7P+C>Gv>3o=qvWqo!ifojqqBOW?oX;~aqnE|w3NUTs<88N6MSQEL zKVX7shXUVI4;&04w5bd{oN3D60w3r`Q$A>%MPY0&GOioekkNo?;ZTwxA^!_$&|uWZ zSyvES0xZ`4ZQ@L)*A?uLI9#~ez0nmc1$ii(?E5AgLl*+8#hJqJMy5&!Tzk{HH2+0Q z0GNGSU~@$uh_*(S=n9IoI7hGRwRMT!1dw^g(f+&$#`i`99x@k1X!6JWrGPTFi)AcH zwsG*h0Qt_=@k}COb)T1MX$+m|bw3&23v}&-7tM6-ZDmDKwdvE_a~xwuqW3l_D3Zp^0xqg)yP(KMSy$v`2;ToPffZ6F7|b3(op z{6QDNT7s6xLpP5E^8&s-fBHc58-f*#(DV`{?zNtV6sGt-&29H1+7j)V-X?LIcuw5^ zhB(FY`h5-VUj7~K*Z{rA%Q^M7x2eJ~=UBUF6Q*;lOPct_0md@Lt`J6V`GPen>KF4m(8{BbW zu1C`aR1>h=k9O?ho6%E{=cbt;Q%K_C$y)XFhw+mSFp3`WJ=PW2C%J6lJ|jY(K7b8A z=B&Xp66Afn;NK$H0dXky281%tI9eIU1OBIk++w}JK-_Vp36+lYOH9p8M8 z@4(P=!|~R-1;L4uw=0Lluij2WdMl%&iP8$#bl>`lAMm3^eOUESZuNQ>okxcRx(QWB zEzCYCr1e9T1))L{(CN3=%y82fo^M)VBq$gGJB~in$fjU$_L)3FR@OH#dxajU11&5& zlW;Y2or@gKCUlBiGQpvz(1NNN^2kIX4igZH)r`2K#f&;LeV&qOhp;KU5K7`&KU^6H z2ifVOnZHYwqB327N{!=a#Fg__&ztNC)-r&+DF$A+a{h$)`_(~0()HAVaz6bdwDf3S~aUSK5LJ!#%Hx;Jenc(T*zmk=OqNU z>*$6umoFqL7SJB{-OABEdWf`#M^+&j!#`nY){$1FFfJ8J2k1gz$0Ml4MZm>(-Tz$} zUJvSqDLUiI4!GJI4favx=yQ`QWD}ty?RtRreEJ9xscXyq^q3|D-sSp>fG|yZe%)*L z8t9ZjeGTbyIQk2f3Y7w~uP!^o!^>8W9NKmV%(JxgkyWt@OS0o~#VVB#mbdTLBa&tv z%LXJFivfP5e&{1b9`%kdlJpxSjB=@3sXdy{ZFVEW=X3QLPOTYnbUz-!!~`?%VyXHr z^4K%IP>^>hzJS%kl3cs#$SRf+v3b@o+tyFS?;5HlF6!u=9$WEQ_L6oEphVmuKSrBj zlt_@Z1S-Qv5uviaDqAH4hA8ZmzE(U>`{P05uW@_WxEVLEy4}tYGRjWb>w6Zhi~hxM z+!&1-t+PSrd}NP1e~sSBYXqcM!_K%jXq%aFkw(yQ)( zJtP`M59a0eW_(z^j@nT*aDaY8@b90$?=QKUXeE#5_{sW4gJk(9Dx;TZaTb!>b@VQL zmU1F(BZ&Upq_ee6P@molES{pWN34D=qp*m6E)yX0p8X{CCb0Fq>1#{69#qV*j-uZ* zZB%UNbkyj-PPR9ik@)p{YIYS7pTv|F(m#@c*$)ylWfQY60xms(8jPTsQbGOjaIsie z-s0=jvtXUG|2kI06=oJZo0o!B=)5s9H}o$%qFu@Nocj z=mYV<&&LU=^}*dZ%IatW%U!Yq19KLYz~Ctrj%ttkV-=~Nv4R!Zn#XbCn0G>{xc@@v z@4~KS7})bC6gSdM`uCl9hw)I(pAOA}x1cYJ*7~h1aY{Mil+)wX(I~Edbn=e#Vt(w1T_xv$yt!nve z<>OX^gNh`>j*p8p?K^O{6ORZ6k)=d zt?pbb=3|cMs|R00HucErcJnJ4h|pPn6$^G$FX)C;+|bw-Y*lDdrpQ$2N@HzbDDe!* zs$-*@NINh+C5-5$46vP(rvR^heDE64r62*;yHrtKhxGQ9SviQP-a>^Pn6zeC*M?K{ zK*<8R6j(8^v*M_BfF=S;o#FP+`(SGQ^&4bELWV$9jtz)Q=(hHQ9F{D zV^xT{sCtaBLVMN9iB&08E9K*Ip;WGw027{6i`DAMQK43-)G7z)s9d#5wPK-qR5_`Y zi`7DPe@B7PR}PMGb^jJk@v1=_lRY1Ht+U4H4mC_meG1FBsBW&zQLu8bSGfI3r$QoQRPJ?$GOs_=RePZ3Jbf?bhx$M*NdIscGz05(#r|tZ6m!&oXkk6*nMZDRJ^`7 z(s4C~k=`UuW~5Z?zB5uPUfV`Gu9qwCHqs8nNsN?|-IkG3^4d01rG9+!ZX@kLoWw{e z*=-pqC9iEGRl(>lrF~oRAOLp1?eOku2hg5{(Vn7fCb7*^ORr+ByK_ixvRJzW$X^bQ zSk$=G+Jz#rRAB!6joh8USTVu-NuneryR9fm$?IQHQh8~|xe=