diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java index 59ed13c1c..fe3a45b2f 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/AbstractGuacamoleTunnelService.java @@ -235,7 +235,7 @@ public abstract class AbstractGuacamoleTunnelService implements GuacamoleTunnelS // Build token filter containing credential tokens TokenFilter tokenFilter = new TokenFilter(); - StandardTokens.addStandardTokens(tokenFilter, user.getCredentials()); + StandardTokens.addStandardTokens(tokenFilter, user); // Filter the configuration tokenFilter.filterValues(config.getParameters()); @@ -281,7 +281,7 @@ public abstract class AbstractGuacamoleTunnelService implements GuacamoleTunnelS // Build token filter containing credential tokens TokenFilter tokenFilter = new TokenFilter(); - StandardTokens.addStandardTokens(tokenFilter, user.getCredentials()); + StandardTokens.addStandardTokens(tokenFilter, user); // Filter the configuration tokenFilter.filterValues(config.getParameters()); diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java index d256ebb3b..eea1a95ac 100644 --- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java +++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/connection/ConnectionService.java @@ -123,7 +123,7 @@ public class ConnectionService { // Build token filter containing credential tokens TokenFilter tokenFilter = new TokenFilter(); - StandardTokens.addStandardTokens(tokenFilter, user.getCredentials()); + StandardTokens.addStandardTokens(tokenFilter, user); // Produce connections for each readable configuration Map connections = new HashMap(); diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java b/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java index c13477c4b..b1b280bee 100644 --- a/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java +++ b/guacamole-ext/src/main/java/org/apache/guacamole/token/StandardTokens.java @@ -21,6 +21,7 @@ package org.apache.guacamole.token; import java.text.SimpleDateFormat; import java.util.Date; +import org.apache.guacamole.net.auth.AuthenticatedUser; import org.apache.guacamole.net.auth.Credentials; /** @@ -138,4 +139,31 @@ public class StandardTokens { } + /** + * Adds tokens which are standardized by guacamole-ext to the given + * TokenFilter using the values from the given AuthenticatedUser object, + * including any associated credentials. These standardized tokens include + * the current username (GUAC_USERNAME), password (GUAC_PASSWORD), and the + * server date and time (GUAC_DATE and GUAC_TIME respectively). If either + * the username or password are not set within the given user or their + * provided credentials, the corresponding token(s) will remain unset. + * + * @param filter + * The TokenFilter to add standard tokens to. + * + * @param user + * The AuthenticatedUser to use when populating the GUAC_USERNAME and + * GUAC_PASSWORD tokens. + */ + public static void addStandardTokens(TokenFilter filter, AuthenticatedUser user) { + + // Default to the authenticated user's username for the GUAC_USERNAME + // token + filter.setToken(USERNAME_TOKEN, user.getIdentifier()); + + // Add tokens specific to credentials + addStandardTokens(filter, user.getCredentials()); + + } + }