--- /dev/null
+
+package net.sourceforge.guacamole.net.auth;
+
+import net.sourceforge.guacamole.GuacamoleException;
+
+public interface AuthenticationProvider {
+
+ public UserConfiguration getUserConfiguration(String username, String password) throws GuacamoleException;
+
+}
--- /dev/null
+
+package net.sourceforge.guacamole.net.auth;
+
+import java.util.Collection;
+import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
+
+public interface UserConfiguration {
+
+ public GuacamoleConfiguration getConfiguration(String id);
+
+ public Collection<String> listConfigurations();
+
+}
+++ /dev/null
-
-package net.sourceforge.guacamole.net.basic;
-
-import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
-
-public interface AuthenticationProvider {
-
- public GuacamoleConfiguration getAuthorizedConfiguration(String username, String password) throws GuacamoleException;
-
-}
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+import net.sourceforge.guacamole.net.auth.AuthenticationProvider;
import java.io.File;
import java.io.IOException;
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
import net.sourceforge.guacamole.GuacamoleException;
+import net.sourceforge.guacamole.net.auth.UserConfiguration;
import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties;
-import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
import net.sourceforge.guacamole.properties.GuacamoleProperties;
+import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xml.sax.Attributes;
}
@Override
- public GuacamoleConfiguration getAuthorizedConfiguration(String username, String password) throws GuacamoleException {
+ public UserConfiguration getUserConfiguration(String username, String password) throws GuacamoleException {
// Check mapping file mod time
File userMappingFile = getUserMappingFile();
// Validate and return info for given user and pass
AuthInfo info = mapping.get(username);
if (info != null && info.validate(username, password))
- return info.getConfiguration();
+ return info.getUserConfiguration();
return null;
public static class AuthInfo {
+ protected static final String CONFIG_ID = "DEFAULT";
+
public static enum Encoding {
PLAIN_TEXT,
MD5
private String auth_password;
private Encoding auth_encoding;
- private GuacamoleConfiguration config;
+ private BasicUserConfiguration userConfig;
public AuthInfo(String auth_username, String auth_password, Encoding auth_encoding) {
this.auth_username = auth_username;
this.auth_password = auth_password;
this.auth_encoding = auth_encoding;
- config = new GuacamoleConfiguration();
+ userConfig = new BasicUserConfiguration();
+ userConfig.setConfiguration(CONFIG_ID, new GuacamoleConfiguration());
+
}
private static final char HEX_CHARS[] = {
}
- public GuacamoleConfiguration getConfiguration() {
- return config;
+ public BasicUserConfiguration getUserConfiguration() {
+ return userConfig;
}
}
switch (state) {
case PROTOCOL:
- current.getConfiguration().setProtocol(str);
+ current.getUserConfiguration().getConfiguration(AuthInfo.CONFIG_ID)
+ .setProtocol(str);
return;
case PARAMETER:
- current.getConfiguration().setParameter(currentParameter, str);
+ current.getUserConfiguration().getConfiguration(AuthInfo.CONFIG_ID)
+ .setParameter(currentParameter, str);
return;
}
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-import java.util.Map;
+import net.sourceforge.guacamole.net.auth.AuthenticationProvider;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sourceforge.guacamole.GuacamoleException;
import net.sourceforge.guacamole.net.InetGuacamoleSocket;
import net.sourceforge.guacamole.net.GuacamoleSocket;
import net.sourceforge.guacamole.servlet.GuacamoleSession;
import net.sourceforge.guacamole.net.GuacamoleTunnel;
+import net.sourceforge.guacamole.net.auth.UserConfiguration;
import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties;
import net.sourceforge.guacamole.protocol.ConfiguredGuacamoleSocket;
import net.sourceforge.guacamole.servlet.GuacamoleTunnelServlet;
String id = request.getParameter("id");
// Get authorized configs
- Map<String, GuacamoleConfiguration> configs =
- (Map<String, GuacamoleConfiguration>)
- httpSession.getAttribute("GUAC_AUTH_CONFIGS");
+ UserConfiguration userConfig = (UserConfiguration)
+ httpSession.getAttribute("GUAC_USER_CONFIG");
// If no configs in session, not authorized
- if (configs == null)
+ if (userConfig == null)
throw new GuacamoleException("No authorized configurations.");
// Get authorized config
- GuacamoleConfiguration config = configs.get(id);
+ GuacamoleConfiguration config = userConfig.getConfiguration(id);
if (config == null) {
logger.error("Error retrieving authorized configuration id={}.", id);
throw new GuacamoleException("Unknown configuration ID.");
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+import net.sourceforge.guacamole.net.auth.UserConfiguration;
+import net.sourceforge.guacamole.net.auth.AuthenticationProvider;
import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
import net.sourceforge.guacamole.properties.GuacamoleProperties;
import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties;
import org.slf4j.Logger;
String username = request.getParameter("username");
String password = request.getParameter("password");
- // Get authorized config
- GuacamoleConfiguration config;
+ // Get authorized configs
+ UserConfiguration config;
try {
- config = authProvider.getAuthorizedConfiguration(username, password);
+ config = authProvider.getUserConfiguration(username, password);
}
catch (GuacamoleException e) {
- logger.error("Error retrieving authorized configuration for user {}.", username);
+ logger.error("Error retrieving configuration for user {}.", username);
response.sendError(HttpServletResponse.SC_FORBIDDEN);
return;
}
logger.info("Successful login from {} for user \"{}\".", request.getRemoteAddr(), username);
- // Build map of authorized configs
- Map<String, GuacamoleConfiguration> configs = new HashMap<String, GuacamoleConfiguration>();
- configs.put("TEST-UID", config);
-
- httpSession.setAttribute("GUAC_AUTH_CONFIGS", configs);
+ // Associate configs with session
+ httpSession.setAttribute("GUAC_USER_CONFIG", config);
}
--- /dev/null
+
+package net.sourceforge.guacamole.net.basic;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+import net.sourceforge.guacamole.net.auth.UserConfiguration;
+import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
+
+public class BasicUserConfiguration implements UserConfiguration {
+
+ private Map<String, GuacamoleConfiguration> configs =
+ new HashMap<String, GuacamoleConfiguration>();
+
+ @Override
+ public GuacamoleConfiguration getConfiguration(String id) {
+ return configs.get(id);
+ }
+
+ @Override
+ public Collection<String> listConfigurations() {
+ return configs.keySet();
+ }
+
+ protected void setConfiguration(String id, GuacamoleConfiguration config) {
+ configs.put(id, config);
+ }
+
+}
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import net.sourceforge.guacamole.net.auth.UserConfiguration;
import net.sourceforge.guacamole.protocol.GuacamoleConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
HttpSession httpSession = request.getSession(true);
- // Get authorized configs
- Map<String, GuacamoleConfiguration> configs =
- (Map<String, GuacamoleConfiguration>)
- httpSession.getAttribute("GUAC_AUTH_CONFIGS");
+ // Get user configuration
+ UserConfiguration userConfig = (UserConfiguration)
+ httpSession.getAttribute("GUAC_USER_CONFIG");
- // If no configs in session, not authorized
- if (configs == null) {
+ // If no userConfig in session, not authorized
+ if (userConfig == null) {
response.sendError(HttpServletResponse.SC_FORBIDDEN);
return;
}
PrintWriter out = response.getWriter();
out.println("<configs>");
- for (Entry<String, GuacamoleConfiguration> entry : configs.entrySet()) {
+ for (String id : userConfig.listConfigurations()) {
- GuacamoleConfiguration config = entry.getValue();
+ GuacamoleConfiguration config = userConfig.getConfiguration(id);
// Write config
out.print("<config id=\"");
- out.print(entry.getKey());
+ out.print(id);
out.print("\" protocol=\"");
out.print(config.getProtocol());
out.println("\"/>");
import java.lang.reflect.InvocationTargetException;
import net.sourceforge.guacamole.GuacamoleException;
-import net.sourceforge.guacamole.net.basic.AuthenticationProvider;
+import net.sourceforge.guacamole.net.auth.AuthenticationProvider;
import net.sourceforge.guacamole.properties.GuacamoleProperty;
public abstract class AuthenticationProviderProperty implements GuacamoleProperty<AuthenticationProvider> {