diff --git a/LaunchServer/source/auth/provider/AuthlibAuthProvider.java b/LaunchServer/source/auth/provider/AuthlibAuthProvider.java index 25184b4..ad5e1d3 100644 --- a/LaunchServer/source/auth/provider/AuthlibAuthProvider.java +++ b/LaunchServer/source/auth/provider/AuthlibAuthProvider.java @@ -41,10 +41,12 @@ @Override public AuthProviderResult auth(String login, String password, String ip) throws Throwable { + String clientToken = UUID.randomUUID().toString().replaceAll("-", ""); + // https://wiki.vg/Authentication#Payload JsonObject request = Json.object(). add("agent", Json.object().add("name", "Minecraft").add("version", 1)). - add("username", login).add("password", password); + add("username", login).add("password", password).add("clientToken", clientToken); // Verify there's no error JsonObject response = HTTPRequestHelper.makeAuthlibRequest(URL, request, "Authlib"); @@ -61,9 +63,9 @@ // Parse JSON data JsonObject selectedProfile = response.get("selectedProfile").asObject(); String username = selectedProfile.get("name").asString(); - String accessToken = response.get("clientToken").asString(); + String accessToken = response.get("accessToken").asString(); UUID uuid = UUID.fromString(UUID_REGEX.matcher(selectedProfile.get("id").asString()).replaceFirst("$1-$2-$3-$4-$5")); - String launcherToken = response.get("accessToken").asString(); + String launcherToken = response.get("clientToken").asString(); // We're done return new AuthlibAuthProviderResult(username, accessToken, uuid, launcherToken); diff --git a/LaunchServer/source/auth/provider/AuthlibInjectorAuthProvider.java b/LaunchServer/source/auth/provider/AuthlibInjectorAuthProvider.java index 4705a30..e67ea22 100644 --- a/LaunchServer/source/auth/provider/AuthlibInjectorAuthProvider.java +++ b/LaunchServer/source/auth/provider/AuthlibInjectorAuthProvider.java @@ -35,10 +35,12 @@ @Override public AuthProviderResult auth(String login, String password, String ip) throws Throwable { + String clientToken = UUID.randomUUID().toString().replaceAll("-", ""); + // https://wiki.vg/Authentication#Payload JsonObject request = Json.object(). add("agent", Json.object().add("name", "Minecraft").add("version", 1)). - add("username", login).add("password", password); + add("username", login).add("password", password).add("clientToken", clientToken); // Verify there's no error JsonObject response = HTTPRequestHelper.makeAuthlibRequest(URL, request, "Authlib-Injector"); @@ -55,9 +57,9 @@ // Parse JSON data JsonObject selectedProfile = response.get("selectedProfile").asObject(); String username = selectedProfile.get("name").asString(); - String accessToken = response.get("clientToken").asString(); + String accessToken = response.get("accessToken").asString(); UUID uuid = UUID.fromString(UUID_REGEX.matcher(selectedProfile.get("id").asString()).replaceFirst("$1-$2-$3-$4-$5")); - String launcherToken = response.get("accessToken").asString(); + String launcherToken = response.get("clientToken").asString(); // We're done return new AuthlibAuthProviderResult(username, accessToken, uuid, launcherToken); diff --git a/LaunchServer/source/texture/AuthlibInjectorTextureProvider.java b/LaunchServer/source/texture/AuthlibInjectorTextureProvider.java index 2228891..951d245 100644 --- a/LaunchServer/source/texture/AuthlibInjectorTextureProvider.java +++ b/LaunchServer/source/texture/AuthlibInjectorTextureProvider.java @@ -9,7 +9,7 @@ public class AuthlibInjectorTextureProvider extends TextureProvider { private final String urlApiInjector; - protected CacheTextureProvider cacheTextureProvider; + protected CacheTextureProvider cacheTextureProvider = new CacheTextureProvider(); public AuthlibInjectorTextureProvider(BlockConfigEntry block) { diff --git a/LaunchServer/source/texture/AuthlibTextureProvider.java b/LaunchServer/source/texture/AuthlibTextureProvider.java index 88fb22d..0cafe82 100644 --- a/LaunchServer/source/texture/AuthlibTextureProvider.java +++ b/LaunchServer/source/texture/AuthlibTextureProvider.java @@ -11,7 +11,7 @@ // Instance private final String setUuidURL; private final String setProfileURL; - protected CacheTextureProvider cacheTextureProvider; + protected CacheTextureProvider cacheTextureProvider = new CacheTextureProvider(); public AuthlibTextureProvider(BlockConfigEntry block) {