GUACAMOLE-774: Add MD4 checks to Guice module loading.

This commit is contained in:
Virtually Nick
2019-04-17 18:40:31 -04:00
parent 931bb6f1f9
commit e09d8e0e87

View File

@@ -20,8 +20,12 @@
package org.apache.guacamole.auth.radius; package org.apache.guacamole.auth.radius;
import com.google.inject.AbstractModule; import com.google.inject.AbstractModule;
import java.security.Provider;
import java.security.Security;
import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.auth.radius.conf.ConfigurationService; 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.Environment;
import org.apache.guacamole.environment.LocalEnvironment; import org.apache.guacamole.environment.LocalEnvironment;
import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.AuthenticationProvider;
@@ -59,6 +63,24 @@ public class RadiusAuthenticationProviderModule extends AbstractModule {
// Get local environment // Get local environment
this.environment = new LocalEnvironment(); this.environment = new LocalEnvironment();
// Check for MD4 requirement
RadiusAuthenticationProtocol authProtocol = environment.getProperty(RadiusGuacamoleProperties.RADIUS_AUTH_PROTOCOL);
RadiusAuthenticationProtocol innerProtocol = environment.getProperty(RadiusGuacamoleProperties.RADIUS_EAP_TTLS_INNER_PROTOCOL);
if ((authProtocol != null
&& (authProtocol == RadiusAuthenticationProtocol.MSCHAPv1
|| authProtocol == RadiusAuthenticationProtocol.MSCHAPv2))
|| (innerProtocol != null
&& (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());
}
});
}
// Store associated auth provider // Store associated auth provider
this.authProvider = authProvider; this.authProvider = authProvider;