From 1b6f0bdcc139726448a4edd60ed4040eb5fdfbdf Mon Sep 17 00:00:00 2001 From: Virtually Nick Date: Tue, 13 Aug 2019 06:31:59 -0400 Subject: [PATCH 1/3] GUACAMOLE-774: Fix deprecation issue with Java 9 and up. --- .../auth/radius/RadiusAuthenticationProviderModule.java | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java index d34b0b344..a1928ccd3 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java @@ -57,6 +57,7 @@ public class RadiusAuthenticationProviderModule extends AbstractModule { * If an error occurs while retrieving the Guacamole server * environment. */ + @SuppressWarnings("deprecation") public RadiusAuthenticationProviderModule(AuthenticationProvider authProvider) throws GuacamoleException { From f7d836da9ec6cd001c78b304bb5812703f4c086a Mon Sep 17 00:00:00 2001 From: Virtually Nick Date: Tue, 13 Aug 2019 13:44:45 -0400 Subject: [PATCH 2/3] GUACAMOLE-774: Deal with deprecated Provider constructor. --- .../RadiusAuthenticationProviderModule.java | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java index a1928ccd3..0003a4248 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java @@ -20,9 +20,12 @@ package org.apache.guacamole.auth.radius; import com.google.inject.AbstractModule; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.security.Provider; import java.security.Security; import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.GuacamoleServerException; import org.apache.guacamole.auth.radius.conf.ConfigurationService; import org.apache.guacamole.auth.radius.conf.RadiusAuthenticationProtocol; import org.apache.guacamole.auth.radius.conf.RadiusGuacamoleProperties; @@ -57,7 +60,6 @@ public class RadiusAuthenticationProviderModule extends AbstractModule { * If an error occurs while retrieving the Guacamole server * environment. */ - @SuppressWarnings("deprecation") public RadiusAuthenticationProviderModule(AuthenticationProvider authProvider) throws GuacamoleException { @@ -72,11 +74,28 @@ public class RadiusAuthenticationProviderModule extends AbstractModule { || innerProtocol == RadiusAuthenticationProtocol.MSCHAPv1 || innerProtocol == RadiusAuthenticationProtocol.MSCHAPv2) { - Security.addProvider(new Provider("MD4", 0.00, "MD4 for MSCHAPv1/2 Support") { - { - this.put("MessageDigest.MD4", org.bouncycastle.jce.provider.JDKMessageDigest.MD4.class.getName()); - } - }); + try { + Provider md4Provider; + Constructor providerConstructor = Provider.class + .getConstructor(String.class, String.class, String.class); + if (providerConstructor != null) + md4Provider = (Provider) providerConstructor + .newInstance("MD4", "0.00", "MD4 for MSCHAPv1/2 Support"); + else + md4Provider = (Provider) Provider.class + .getConstructor(String.class, Double.class, String.class) + .newInstance("MD4", 0.00, "MD4 for MSCHAPv1/2 Support"); + + assert(md4Provider != null); + md4Provider.put("MessageDigest.MD4", org.bouncycastle.jce.provider.JDKMessageDigest.MD4.class.getName()); + Security.addProvider(md4Provider); + } + catch (IllegalAccessException + | InstantiationException + | InvocationTargetException + | NoSuchMethodException e) { + throw new GuacamoleServerException("Unable to load MD4 support.", e); + } } From 95ec3c73ce7d016fe76c90fcb4bf5ca97a5a8372 Mon Sep 17 00:00:00 2001 From: Virtually Nick Date: Tue, 13 Aug 2019 14:11:38 -0400 Subject: [PATCH 3/3] GUACAMOLE-774: Different approach to loading MD4 support. --- .../RadiusAuthenticationProviderModule.java | 29 ++++--------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java index 0003a4248..4224f77f9 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/RadiusAuthenticationProviderModule.java @@ -20,18 +20,17 @@ package org.apache.guacamole.auth.radius; import com.google.inject.AbstractModule; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.security.Provider; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.security.Security; import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.GuacamoleServerException; import org.apache.guacamole.auth.radius.conf.ConfigurationService; import org.apache.guacamole.auth.radius.conf.RadiusAuthenticationProtocol; import org.apache.guacamole.auth.radius.conf.RadiusGuacamoleProperties; import org.apache.guacamole.environment.Environment; import org.apache.guacamole.environment.LocalEnvironment; import org.apache.guacamole.net.auth.AuthenticationProvider; +import org.bouncycastle.jce.provider.BouncyCastleProvider; /** * Guice module which configures RADIUS-specific injections. @@ -75,26 +74,10 @@ public class RadiusAuthenticationProviderModule extends AbstractModule { || innerProtocol == RadiusAuthenticationProtocol.MSCHAPv2) { try { - Provider md4Provider; - Constructor providerConstructor = Provider.class - .getConstructor(String.class, String.class, String.class); - if (providerConstructor != null) - md4Provider = (Provider) providerConstructor - .newInstance("MD4", "0.00", "MD4 for MSCHAPv1/2 Support"); - else - md4Provider = (Provider) Provider.class - .getConstructor(String.class, Double.class, String.class) - .newInstance("MD4", 0.00, "MD4 for MSCHAPv1/2 Support"); - - assert(md4Provider != null); - md4Provider.put("MessageDigest.MD4", org.bouncycastle.jce.provider.JDKMessageDigest.MD4.class.getName()); - Security.addProvider(md4Provider); + MessageDigest.getInstance("MD4"); } - catch (IllegalAccessException - | InstantiationException - | InvocationTargetException - | NoSuchMethodException e) { - throw new GuacamoleServerException("Unable to load MD4 support.", e); + catch (NoSuchAlgorithmException e) { + Security.addProvider(new BouncyCastleProvider()); } }