From ddd09969d8dc55af4cf9f6127adf81717e36961d Mon Sep 17 00:00:00 2001 From: Virtually Nick Date: Thu, 31 Oct 2024 13:30:46 -0400 Subject: [PATCH] GUACAMOLE-1239: Remove per-extension configuration for case-sensitivity, retaining only global configuration. --- .../auth/header/ConfigurationService.java | 21 ------------ .../header/HTTPHeaderGuacamoleProperties.java | 13 ------- .../auth/header/user/AuthenticatedUser.java | 28 --------------- .../auth/mysql/conf/MySQLEnvironment.java | 11 ------ .../mysql/conf/MySQLGuacamoleProperties.java | 14 -------- .../conf/PostgreSQLEnvironment.java | 22 ------------ .../sqlserver/conf/SQLServerEnvironment.java | 14 -------- .../conf/SQLServerGuacamoleProperties.java | 15 -------- .../auth/json/ConfigurationService.java | 34 ------------------- .../auth/json/user/AuthenticatedUser.java | 22 ------------ .../auth/ldap/ConnectedLDAPConfiguration.java | 5 --- .../ldap/conf/DefaultLDAPConfiguration.java | 13 ------- .../conf/EnvironmentLDAPConfiguration.java | 14 -------- .../ldap/conf/JacksonLDAPConfiguration.java | 6 ---- .../auth/ldap/conf/LDAPConfiguration.java | 16 --------- .../ldap/conf/LDAPGuacamoleProperties.java | 12 ------- .../auth/ldap/user/LDAPAuthenticatedUser.java | 24 ------------- .../radius/conf/ConfigurationService.java | 21 ------------ .../conf/RadiusGuacamoleProperties.java | 13 ------- .../auth/radius/user/AuthenticatedUser.java | 15 +------- .../auth/sso/user/SSOAuthenticatedUser.java | 32 ----------------- .../auth/cas/conf/CASEnvironment.java | 14 -------- .../auth/cas/conf/CASGuacamoleProperties.java | 13 ------- .../openid/conf/ConfigurationService.java | 13 ------- .../auth/openid/conf/OpenIDEnvironment.java | 14 -------- .../auth/saml/conf/ConfigurationService.java | 12 ------- .../auth/saml/conf/SAMLEnvironment.java | 14 -------- .../auth/ssl/conf/ConfigurationService.java | 12 ------- .../auth/ssl/conf/SSLEnvironment.java | 13 ------- .../net/auth/AbstractAuthenticatedUser.java | 31 +++++++++++++++++ .../guacamole/net/auth/DelegatingUser.java | 5 +++ 31 files changed, 37 insertions(+), 469 deletions(-) diff --git a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/ConfigurationService.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/ConfigurationService.java index d9f49813c4..2ab1350dc7 100644 --- a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/ConfigurationService.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/ConfigurationService.java @@ -53,26 +53,5 @@ public String getHttpAuthHeader() throws GuacamoleException { "REMOTE_USER" ); } - - /** - * Returns true if the usernames provided to the header authentication - * module should be treated as case-sensitive, or false if usernames - * should be treated as case-insensitive. This will default to the global - * Guacamole configuration for case-sensitivity, which defaults to true, but - * can be overridden for this extension, if desired. - * - * @return - * true if usernames should be treated as case-sensitive, otherwise - * false. - * - * @throws GuacamoleException - * If guacamole.properties cannot be parsed. - */ - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - return environment.getProperty( - HTTPHeaderGuacamoleProperties.HTTP_AUTH_CASE_SENSITIVE_USERNAMES, - environment.getCaseSensitiveUsernames() - ); - } } diff --git a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderGuacamoleProperties.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderGuacamoleProperties.java index acf514a755..bdc3dfd683 100644 --- a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderGuacamoleProperties.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderGuacamoleProperties.java @@ -19,7 +19,6 @@ package org.apache.guacamole.auth.header; -import org.apache.guacamole.properties.BooleanGuacamoleProperty; import org.apache.guacamole.properties.StringGuacamoleProperty; @@ -44,17 +43,5 @@ private HTTPHeaderGuacamoleProperties() {} public String getName() { return "http-auth-header"; } }; - - /** - * A property used to configure whether or not usernames within the header - * module should be treated as case-sensitive. - */ - public static final BooleanGuacamoleProperty HTTP_AUTH_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "http-auth-case-sensitive-usernames"; } - - }; } diff --git a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/user/AuthenticatedUser.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/user/AuthenticatedUser.java index d498c5c4da..9686eac6ac 100644 --- a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/user/AuthenticatedUser.java +++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/user/AuthenticatedUser.java @@ -20,13 +20,9 @@ package org.apache.guacamole.auth.header.user; import com.google.inject.Inject; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.auth.header.ConfigurationService; import org.apache.guacamole.net.auth.AbstractAuthenticatedUser; import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.Credentials; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * An HTTP header implementation of AuthenticatedUser, associating a @@ -34,11 +30,6 @@ * provider. */ public class AuthenticatedUser extends AbstractAuthenticatedUser { - - /** - * Logger for this class. - */ - private static final Logger LOGGER = LoggerFactory.getLogger(AuthenticatedUser.class); /** * Reference to the authentication provider associated with this @@ -46,12 +37,6 @@ public class AuthenticatedUser extends AbstractAuthenticatedUser { */ @Inject private AuthenticationProvider authProvider; - - /** - * Service for retrieving header configuration information. - */ - @Inject - private ConfigurationService confService; /** * The credentials provided when this user was authenticated. @@ -72,19 +57,6 @@ public void init(String username, Credentials credentials) { this.credentials = credentials; setIdentifier(username.toLowerCase()); } - - @Override - public boolean isCaseSensitive() { - try { - return confService.getCaseSensitiveUsernames(); - } - catch (GuacamoleException e) { - LOGGER.error("Error when trying to retrieve header configuration: {}." - + " Usernames comparison will be case-sensitive.", e); - LOGGER.debug("Exception caught when retrieving header configuration.", e); - return true; - } - } @Override public AuthenticationProvider getAuthenticationProvider() { diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLEnvironment.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLEnvironment.java index c263173322..4fb7b6c8d0 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLEnvironment.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLEnvironment.java @@ -442,16 +442,5 @@ public boolean enforceAccessWindowsForActiveSessions() throws GuacamoleException true ); } - - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - - // Return the configured value for the property, or the global value. - return getProperty( - MySQLGuacamoleProperties.MYSQL_CASE_SENSITIVE_USERNAMES, - super.getCaseSensitiveUsernames() - ); - - } } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLGuacamoleProperties.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLGuacamoleProperties.java index bbb1a29b01..c7385db817 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLGuacamoleProperties.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-mysql/src/main/java/org/apache/guacamole/auth/mysql/conf/MySQLGuacamoleProperties.java @@ -303,18 +303,4 @@ private MySQLGuacamoleProperties() {} }; - /** - * A property used to configure whether or not usernames within the MySQL - * JDBC module should be treated as case-sensitive. Be aware that MySQL's - * default database collations do not do case-sensitive comparisons, so in - * many cases they will effectively be case-insensitive. - */ - public static final BooleanGuacamoleProperty MYSQL_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "mysql-case-sensitive-usernames"; } - - }; - } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/java/org/apache/guacamole/auth/postgresql/conf/PostgreSQLEnvironment.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/java/org/apache/guacamole/auth/postgresql/conf/PostgreSQLEnvironment.java index d620521fb5..8e79168ea8 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/java/org/apache/guacamole/auth/postgresql/conf/PostgreSQLEnvironment.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-postgresql/src/main/java/org/apache/guacamole/auth/postgresql/conf/PostgreSQLEnvironment.java @@ -22,8 +22,6 @@ import java.io.File; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.auth.jdbc.JDBCEnvironment; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.apache.guacamole.auth.jdbc.security.PasswordPolicy; import org.apache.ibatis.session.SqlSession; @@ -33,11 +31,6 @@ */ public class PostgreSQLEnvironment extends JDBCEnvironment { - /** - * Logger for this class. - */ - private static final Logger logger = LoggerFactory.getLogger(PostgreSQLEnvironment.class); - /** * The default host to connect to, if POSTGRESQL_HOSTNAME is not specified. */ @@ -398,20 +391,5 @@ public boolean enforceAccessWindowsForActiveSessions() throws GuacamoleException PostgreSQLGuacamoleProperties.POSTGRESQL_ENFORCE_ACCESS_WINDOWS_FOR_ACTIVE_SESSIONS, true); } - - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - - // By default, PostgreSQL does perform case-sensitive string comparisons. - // Even though usernames are generally not case-sensitive across - // most authenticaiton systems, we've elected to maintain case- - // sensitivity in this module in order to avoid surprising anyone who - // may be relying upon it. - return getProperty( - PostgreSQLGuacamoleProperties.POSTGRESQL_CASE_SENSITIVE_USERNAMES, - super.getCaseSensitiveUsernames() - ); - - } } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerEnvironment.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerEnvironment.java index 68568d658b..498479d795 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerEnvironment.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerEnvironment.java @@ -328,19 +328,5 @@ public boolean trustAllServerCertificates() throws GuacamoleException { SQLServerGuacamoleProperties.SQLSERVER_TRUST_ALL_SERVER_CERTIFICATES, false); } - - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - - // Get the configured or default value of the property. - boolean caseSensitiveUsernames = getProperty( - SQLServerGuacamoleProperties.SQLSERVER_CASE_SENSITIVE_USERNAMES, - super.getCaseSensitiveUsernames() - ); - - // Return as configured - return caseSensitiveUsernames; - - } } diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerGuacamoleProperties.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerGuacamoleProperties.java index 8a4e1ee28f..c4df81381f 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerGuacamoleProperties.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-sqlserver/src/main/java/org/apache/guacamole/auth/sqlserver/conf/SQLServerGuacamoleProperties.java @@ -257,20 +257,5 @@ private SQLServerGuacamoleProperties() {} public String getName() { return "sqlserver-trust-all-server-certificates"; } }; - - /** - * A property used to configure whether or not usernames within the SQL - * Server JDBC module should be treated as case-sensitive. While Guacamole - * will treat usernames as case-sensitive by default, SQL Server's default - * database collations do not do case-sensitive string comparisons, so in - * many cases this will effectively result in case-insensitive usernames. - */ - public static final BooleanGuacamoleProperty SQLSERVER_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "sqlserver-case-sensitive-usernames" ; } - - }; } diff --git a/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/ConfigurationService.java b/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/ConfigurationService.java index 6fb2cd403a..fd4d5d72fc 100644 --- a/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/ConfigurationService.java +++ b/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/ConfigurationService.java @@ -24,7 +24,6 @@ import java.util.Collections; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.environment.Environment; -import org.apache.guacamole.properties.BooleanGuacamoleProperty; import org.apache.guacamole.properties.ByteArrayProperty; import org.apache.guacamole.properties.StringGuacamoleProperty; @@ -39,20 +38,6 @@ public class ConfigurationService { */ @Inject private Environment environment; - - /** - * A property used to configure whether or not usernames within the JSON - * module should be treated as case-sensitive. - */ - private static final BooleanGuacamoleProperty JSON_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { - return "json-case-sensitive-usernames"; - } - - }; /** * The encryption key to use for all decryption and signature verification. @@ -79,25 +64,6 @@ public String getName() { } }; - - /** - * Returns true if the usernames provided to the JSON authentication - * module should be treated as case-sensitive, or false if usernames - * should be treated as case-insensitive. The default will be taken from - * the global Guacamole configuration, which defaults to true, but - * can be overridden for this extension. - * - * @return - * true if usernames should be treated as case-sensitive, otherwise - * false. - * - * @throws GuacamoleException - * If guacamole.properties cannot be parsed. - */ - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - return environment.getProperty(JSON_CASE_SENSITIVE_USERNAMES, - environment.getCaseSensitiveUsernames()); - } /** * Returns the symmetric key which will be used to encrypt and sign all diff --git a/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/AuthenticatedUser.java b/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/AuthenticatedUser.java index 0eeab697a2..82d81c406a 100644 --- a/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/AuthenticatedUser.java +++ b/extensions/guacamole-auth-json/src/main/java/org/apache/guacamole/auth/json/user/AuthenticatedUser.java @@ -20,8 +20,6 @@ package org.apache.guacamole.auth.json.user; import com.google.inject.Inject; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.auth.json.ConfigurationService; import org.apache.guacamole.net.auth.AbstractAuthenticatedUser; import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.Credentials; @@ -46,13 +44,6 @@ public class AuthenticatedUser extends AbstractAuthenticatedUser { */ @Inject private AuthenticationProvider authProvider; - - /** - * Reference to the configuration service associated with this - * authentication provider. - */ - @Inject - private ConfigurationService confService; /** * The credentials provided when this user was authenticated. @@ -82,19 +73,6 @@ public void init(Credentials credentials, UserData userData) { this.userData = userData; setIdentifier(userData.getUsername()); } - - @Override - public boolean isCaseSensitive() { - try { - return confService.getCaseSensitiveUsernames(); - } - catch (GuacamoleException e) { - LOGGER.error("Error when attempting to get the JSON configuration: {}. " - + "Username comparisons will be case-sensitive.", e.getMessage()); - LOGGER.debug("Exception caught while retrieving JSON configuration.", e); - return true; - } - } @Override public AuthenticationProvider getAuthenticationProvider() { diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConnectedLDAPConfiguration.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConnectedLDAPConfiguration.java index 3f555ce5d2..c41114c027 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConnectedLDAPConfiguration.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/ConnectedLDAPConfiguration.java @@ -223,10 +223,5 @@ public String getMemberAttribute() throws GuacamoleException { public MemberAttributeType getMemberAttributeType() throws GuacamoleException { return config.getMemberAttributeType(); } - - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - return config.getCaseSensitiveUsernames(); - } } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/DefaultLDAPConfiguration.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/DefaultLDAPConfiguration.java index 63cd64ab1a..2179643821 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/DefaultLDAPConfiguration.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/DefaultLDAPConfiguration.java @@ -19,7 +19,6 @@ package org.apache.guacamole.auth.ldap.conf; -import com.google.inject.Inject; import java.util.Collections; import java.util.List; import org.apache.directory.api.ldap.model.filter.ExprNode; @@ -28,7 +27,6 @@ import org.apache.directory.api.ldap.model.name.Dn; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.GuacamoleServerException; -import org.apache.guacamole.environment.Environment; /** * LDAPConfiguration implementation that returns the default values for all @@ -36,12 +34,6 @@ * required (such as {@link #getUserBaseDN()}), an exception is thrown. */ public class DefaultLDAPConfiguration implements LDAPConfiguration { - - /** - * The environment in which Guacamole is running. - */ - @Inject - private Environment environment; @Override public String appliesTo(String username) { @@ -158,10 +150,5 @@ public MemberAttributeType getMemberAttributeType() throws GuacamoleException { return MemberAttributeType.DN; } - - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - return environment.getCaseSensitiveUsernames(); - } } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/EnvironmentLDAPConfiguration.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/EnvironmentLDAPConfiguration.java index 44a9464173..5ffeb203b8 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/EnvironmentLDAPConfiguration.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/EnvironmentLDAPConfiguration.java @@ -233,19 +233,5 @@ public MemberAttributeType getMemberAttributeType() DEFAULT.getMemberAttributeType() ); } - - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - - // Most LDAP directories do not factor in case when comparing usernames, - // however, in order to avoid surprising anyone who may rely on this - // behavior in Guacamole, this is currently defaulted the overall - // Guacamole configuration (default of true), but can be over-ridden - // for the LDAP extension specifically, if desired. - return environment.getProperty( - LDAPGuacamoleProperties.LDAP_CASE_SENSITIVE_USERNAMES, - environment.getCaseSensitiveUsernames() - ); - } } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/JacksonLDAPConfiguration.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/JacksonLDAPConfiguration.java index bb9b474ee5..d4ac0bc2e2 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/JacksonLDAPConfiguration.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/JacksonLDAPConfiguration.java @@ -446,11 +446,5 @@ public MemberAttributeType getMemberAttributeType() throws GuacamoleException { return withDefault(LDAPGuacamoleProperties.LDAP_MEMBER_ATTRIBUTE_TYPE, memberAttributeType, defaultConfig::getMemberAttributeType); } - - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - return withDefault(LDAPGuacamoleProperties.LDAP_CASE_SENSITIVE_USERNAMES, - caseSensitiveUsernames, defaultConfig::getCaseSensitiveUsernames); - } } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/LDAPConfiguration.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/LDAPConfiguration.java index 31a8475662..abbf9103a1 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/LDAPConfiguration.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/LDAPConfiguration.java @@ -333,21 +333,5 @@ public interface LDAPConfiguration { * retrieved. */ MemberAttributeType getMemberAttributeType() throws GuacamoleException; - - /** - * Returns true if the usernames provided to the LDAP authentication - * module should be treated as case-sensitive, or false if usernames - * should be treated as case-insensitive. The default is true, usernames - * will be case-sensitive in keeping with the past behavior of Guacamole - * prior to the addition of this option. - * - * @return - * true if usernames should be treated as case-sensitive, otherwise - * false. - * - * @throws GuacamoleException - * If guacamole.properties cannot be parsed. - */ - boolean getCaseSensitiveUsernames() throws GuacamoleException; } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/LDAPGuacamoleProperties.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/LDAPGuacamoleProperties.java index 072128ecfe..7349356b94 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/LDAPGuacamoleProperties.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/conf/LDAPGuacamoleProperties.java @@ -306,17 +306,5 @@ private LDAPGuacamoleProperties() {} public String getName() { return "ldap-member-attribute-type"; } }; - - /** - * A property used to configure whether or not usernames within the LDAP - * module should be treated as case-sensitive. - */ - public static final BooleanGuacamoleProperty LDAP_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "ldap-case-sensitive-usernames"; } - - }; } diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/LDAPAuthenticatedUser.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/LDAPAuthenticatedUser.java index f934afd575..24438f0ec5 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/LDAPAuthenticatedUser.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/LDAPAuthenticatedUser.java @@ -29,8 +29,6 @@ import org.apache.guacamole.net.auth.AbstractAuthenticatedUser; import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.Credentials; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * An LDAP-specific implementation of AuthenticatedUser, associating a @@ -38,11 +36,6 @@ */ public class LDAPAuthenticatedUser extends AbstractAuthenticatedUser { - /** - * The logger for this class. - */ - private static final Logger LOGGER = LoggerFactory.getLogger(LDAPAuthenticatedUser.class); - /** * Reference to the authentication provider associated with this * authenticated user. @@ -143,23 +136,6 @@ public ConnectedLDAPConfiguration getLDAPConfiguration() { return config; } - @Override - public boolean isCaseSensitive() { - try { - return config.getCaseSensitiveUsernames(); - } - catch (GuacamoleException e) { - // LDAP authentication is almost universally case-insensitive, - // however, we're maintaining case-sensitivity within Guacamole - // at the moment in order to avoid surprising anyone with this change. - // Case-sensitivity can be disabled as a configuration option. - LOGGER.error("Error retrieving configuration for username case-sensitivity: {}. " - + "Username comparisons will be done case-sensitively.", e.getMessage()); - LOGGER.debug("Caught exception when retrieving case-sensitivity configuration.", e); - return true; - } - } - @Override public AuthenticationProvider getAuthenticationProvider() { return authProvider; diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/conf/ConfigurationService.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/conf/ConfigurationService.java index 614464142c..78738ed537 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/conf/ConfigurationService.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/conf/ConfigurationService.java @@ -362,26 +362,5 @@ public InetAddress getRadiusNasIp() throws GuacamoleException { throw new GuacamoleServerException("Unknown host specified for NAS IP.", e); } } - - /** - * Returns true if the usernames provided to the RADIUS authentication - * module should be treated as case-sensitive, or false if usernames - * should be treated as case-insensitive. The default value is read from - * Guacamole's global configuration, which defaults to true, but can be - * overridden for the RADIUS extension, if desired. - * - * @return - * true if usernames should be treated as case-sensitive, otherwise - * false. - * - * @throws GuacamoleException - * If guacamole.properties cannot be parsed. - */ - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - return environment.getProperty( - RadiusGuacamoleProperties.RADIUS_CASE_SENSITIVE_USERNAMES, - environment.getCaseSensitiveUsernames() - ); - } } diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/conf/RadiusGuacamoleProperties.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/conf/RadiusGuacamoleProperties.java index 459dc5859f..19200e1c5a 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/conf/RadiusGuacamoleProperties.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/conf/RadiusGuacamoleProperties.java @@ -204,18 +204,5 @@ private RadiusGuacamoleProperties() {} public String getName() { return "radius-nas-ip"; } }; - - /** - * A property used to configure whether or not usernames within the RADIUS - * module should be treated as case-sensitive. - */ - public static final BooleanGuacamoleProperty RADIUS_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "radius-case-sensitive-usernames"; } - - }; - } diff --git a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/user/AuthenticatedUser.java b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/user/AuthenticatedUser.java index ddedb860df..95792eeddf 100644 --- a/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/user/AuthenticatedUser.java +++ b/extensions/guacamole-auth-radius/src/main/java/org/apache/guacamole/auth/radius/user/AuthenticatedUser.java @@ -63,7 +63,7 @@ public class AuthenticatedUser extends AbstractAuthenticatedUser { */ public void init(Credentials credentials) { this.credentials = credentials; - setIdentifier(credentials.getUsername().toLowerCase()); + setIdentifier(credentials.getUsername()); } @Override @@ -75,18 +75,5 @@ public AuthenticationProvider getAuthenticationProvider() { public Credentials getCredentials() { return credentials; } - - @Override - public boolean isCaseSensitive() { - try { - return confService.getCaseSensitiveUsernames(); - } - catch (GuacamoleException e) { - LOGGER.error("Error retrieving configuration for username case sensiivity. " - + "Usernames will be processed as case-sensitive."); - LOGGER.debug("Exception caught while retrieving RADIUS configuration.", e); - return true; - } - } } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/user/SSOAuthenticatedUser.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/user/SSOAuthenticatedUser.java index 5f3e5d07af..25e0fc96bd 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/user/SSOAuthenticatedUser.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/user/SSOAuthenticatedUser.java @@ -23,13 +23,9 @@ import java.util.Collections; import java.util.Map; import java.util.Set; -import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.environment.Environment; import org.apache.guacamole.net.auth.AbstractAuthenticatedUser; import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.Credentials; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * An AuthenticatedUser whose identity has been supplied by an arbitrary SSO @@ -38,11 +34,6 @@ * by that user. */ public class SSOAuthenticatedUser extends AbstractAuthenticatedUser { - - /** - * Logger for this class. - */ - private static final Logger LOGGER = LoggerFactory.getLogger(SSOAuthenticatedUser.class); /** * Reference to the authentication provider associated with this @@ -50,12 +41,6 @@ public class SSOAuthenticatedUser extends AbstractAuthenticatedUser { */ @Inject private AuthenticationProvider authProvider; - - /** - * The environment in which this instance of Guacamole is running. - */ - @Inject - private Environment environment; /** * The credentials provided when this user was authenticated. @@ -127,22 +112,5 @@ public Credentials getCredentials() { public Set getEffectiveUserGroups() { return effectiveGroups; } - - @Override - public boolean isCaseSensitive() { - try { - return environment.getCaseSensitiveUsernames(); - } - catch (GuacamoleException e) { - // Most SSO systems do not consider usernames to be case-sensitive; - // however, in order to avoid any surprises created by the introduction - // of case-sensitivity, we've opted to continue to evaluate these - // usernames in a case-sensitive manner by default. - LOGGER.error("Error occurred when trying to retrieve case-sensitivity configuration: {}. " - + "Usernames comparisons will be done in a case-sensitive manner.", e.getMessage()); - LOGGER.debug("Exception caught when trying to access the case-sensitivity property.", e); - return true; - } - } } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-cas/src/main/java/org/apache/guacamole/auth/cas/conf/CASEnvironment.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-cas/src/main/java/org/apache/guacamole/auth/cas/conf/CASEnvironment.java index 45973f3fc9..1c76d854a1 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-cas/src/main/java/org/apache/guacamole/auth/cas/conf/CASEnvironment.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-cas/src/main/java/org/apache/guacamole/auth/cas/conf/CASEnvironment.java @@ -19,7 +19,6 @@ package org.apache.guacamole.auth.cas.conf; -import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.environment.DelegatingEnvironment; import org.apache.guacamole.environment.LocalEnvironment; @@ -37,17 +36,4 @@ public CASEnvironment() { super(LocalEnvironment.getInstance()); } - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - - // While most SSO systems do not consider usernames case-sensitive, - // this defaults to the global Guacamole configuration, which defaults - // to true, in order to avoid surprising or breaking environments that - // may rely on this behavior. This can be overridden for the entire - // Guacamole instance or for this extension. - return getProperty(CASGuacamoleProperties.CAS_CASE_SENSITIVE_USERNAMES, - super.getCaseSensitiveUsernames()); - - } - } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-cas/src/main/java/org/apache/guacamole/auth/cas/conf/CASGuacamoleProperties.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-cas/src/main/java/org/apache/guacamole/auth/cas/conf/CASGuacamoleProperties.java index cb40b97405..7bb363f9c2 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-cas/src/main/java/org/apache/guacamole/auth/cas/conf/CASGuacamoleProperties.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-cas/src/main/java/org/apache/guacamole/auth/cas/conf/CASGuacamoleProperties.java @@ -20,7 +20,6 @@ package org.apache.guacamole.auth.cas.conf; import org.apache.guacamole.auth.cas.group.GroupFormat; -import org.apache.guacamole.properties.BooleanGuacamoleProperty; import org.apache.guacamole.properties.EnumGuacamoleProperty; import org.apache.guacamole.properties.URIGuacamoleProperty; import org.apache.guacamole.properties.StringGuacamoleProperty; @@ -118,17 +117,5 @@ private CASGuacamoleProperties() {} public String getName() { return "cas-group-ldap-attribute"; } }; - - /** - * A property used to configure whether or not usernames within the CAS SSO - * module should be treated as case-sensitive. - */ - public static final BooleanGuacamoleProperty CAS_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "cas-case-sensitive-usernames"; } - - }; } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/conf/ConfigurationService.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/conf/ConfigurationService.java index 58204277a8..96c6426f51 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/conf/ConfigurationService.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/conf/ConfigurationService.java @@ -26,7 +26,6 @@ import java.util.List; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.environment.Environment; -import org.apache.guacamole.properties.BooleanGuacamoleProperty; import org.apache.guacamole.properties.IntegerGuacamoleProperty; import org.apache.guacamole.properties.StringGuacamoleProperty; import org.apache.guacamole.properties.URIGuacamoleProperty; @@ -220,18 +219,6 @@ public class ConfigurationService { public String getName() { return "openid-redirect-uri"; } }; - - /** - * A property used to configure whether or not usernames within the OpenID - * SSO module should be treated as case-sensitive. - */ - public static final BooleanGuacamoleProperty OPENID_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "openid-case-sensitive-usernames"; } - - }; /** * The Guacamole server environment. diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/conf/OpenIDEnvironment.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/conf/OpenIDEnvironment.java index a8ea4d081f..4404630813 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/conf/OpenIDEnvironment.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-openid/src/main/java/org/apache/guacamole/auth/openid/conf/OpenIDEnvironment.java @@ -19,7 +19,6 @@ package org.apache.guacamole.auth.openid.conf; -import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.environment.DelegatingEnvironment; import org.apache.guacamole.environment.LocalEnvironment; @@ -37,17 +36,4 @@ public OpenIDEnvironment() { super(LocalEnvironment.getInstance()); } - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - - // While most SSO systems do not consider usernames case-sensitive, - // this defaults to the global Guacamole configuration, which defaults - // to true, in order to avoid surprising or breaking environments that - // may rely on this behavior. This can be overridden for the entire - // Guacamole instance or for this extension. - return getProperty(ConfigurationService.OPENID_CASE_SENSITIVE_USERNAMES, - super.getCaseSensitiveUsernames()); - - } - } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java index 8419658ec7..47ead88208 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java @@ -189,18 +189,6 @@ public class ConfigurationService { public String getName() { return "saml-private-key-path"; } }; - - /** - * A property used to configure whether or not usernames within the SAML SSO - * module should be treated as case-sensitive. - */ - public static final BooleanGuacamoleProperty SAML_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "saml-case-sensitive-usernames"; } - - }; /** * The Guacamole server environment. diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/SAMLEnvironment.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/SAMLEnvironment.java index b294db5289..8704069c45 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/SAMLEnvironment.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/SAMLEnvironment.java @@ -19,7 +19,6 @@ package org.apache.guacamole.auth.saml.conf; -import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.environment.DelegatingEnvironment; import org.apache.guacamole.environment.LocalEnvironment; @@ -37,17 +36,4 @@ public SAMLEnvironment() { super(LocalEnvironment.getInstance()); } - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - - // While most SSO systems do not consider usernames case-sensitive, - // this defaults to the global Guacamole configuration, which defaults - // to true, in order to avoid surprising or breaking environments that - // may rely on this behavior. This can be overridden for the entire - // Guacamole instance or for this extension. - return getProperty(ConfigurationService.SAML_CASE_SENSITIVE_USERNAMES, - super.getCaseSensitiveUsernames()); - - } - } diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/conf/ConfigurationService.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/conf/ConfigurationService.java index 9a165cbcce..9f9c4a49e5 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/conf/ConfigurationService.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/conf/ConfigurationService.java @@ -187,18 +187,6 @@ public class ConfigurationService { public String getName() { return "ssl-max-domain-validity"; } }; - - /** - * A property used to configure whether or not usernames within the SSL SSO - * module should be treated as case-sensitive. - */ - public static final BooleanGuacamoleProperty SSL_CASE_SENSITIVE_USERNAMES = - new BooleanGuacamoleProperty() { - - @Override - public String getName() { return "ssl-case-sensitive-usernames"; } - - }; /** * The Guacamole server environment. diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/conf/SSLEnvironment.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/conf/SSLEnvironment.java index bf544dd0d9..29d5d80f2d 100644 --- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/conf/SSLEnvironment.java +++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/conf/SSLEnvironment.java @@ -37,17 +37,4 @@ public SSLEnvironment() { super(LocalEnvironment.getInstance()); } - @Override - public boolean getCaseSensitiveUsernames() throws GuacamoleException { - - // While most SSO systems do not consider usernames case-sensitive, - // this defaults to the global Guacamole configuration, which defaults - // to true, in order to avoid surprising or breaking environments that - // may rely on this behavior. This can be overridden for the entire - // Guacamole instance or for this extension. - return getProperty(ConfigurationService.SSL_CASE_SENSITIVE_USERNAMES, - super.getCaseSensitiveUsernames()); - - } - } diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AbstractAuthenticatedUser.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AbstractAuthenticatedUser.java index 36c4571e04..ae9bc48eae 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AbstractAuthenticatedUser.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AbstractAuthenticatedUser.java @@ -21,6 +21,11 @@ import java.util.Collections; import java.util.Set; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.environment.Environment; +import org.apache.guacamole.environment.LocalEnvironment; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Basic implementation of an AuthenticatedUser which uses the username to @@ -29,6 +34,17 @@ public abstract class AbstractAuthenticatedUser extends AbstractIdentifiable implements AuthenticatedUser { + /** + * The logger for this class. + */ + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractAuthenticatedUser.class); + + /** + * The server environment in which this Guacamole Client instance is + * running. + */ + private final Environment environment = LocalEnvironment.getInstance(); + // Prior functionality now resides within AbstractIdentifiable @Override @@ -36,6 +52,21 @@ public Set getEffectiveUserGroups() { return Collections.emptySet(); } + @Override + public boolean isCaseSensitive() { + try { + return environment.getCaseSensitiveUsernames(); + } + catch (GuacamoleException e) { + LOGGER.warn("Exception attempting to read the Guacamole configuration, " + + "usernames will be treated as case-sensitive.", e.getMessage()); + LOGGER.debug("Received GuacamoleException attempting to retrieve the " + + "case-sensitivity setting for usernames. Defaulting to" + + "case-sensitive usernames.", e); + return true; + } + } + @Override public void invalidate() { // Nothing to invalidate diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingUser.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingUser.java index 9f2d93b23d..0777081f6c 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingUser.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/DelegatingUser.java @@ -83,6 +83,11 @@ public boolean isDisabled() { return user.isDisabled(); } + @Override + public boolean isCaseSensitive() { + return user.isCaseSensitive(); + } + @Override public void setDisabled(boolean disabled) { user.setDisabled(disabled);