diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/auth/AuthenticationProvider.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/auth/AuthenticationProvider.java index baf2db9d2..aeeb35045 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/auth/AuthenticationProvider.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/auth/AuthenticationProvider.java @@ -3,8 +3,8 @@ package net.sourceforge.guacamole.net.auth; import net.sourceforge.guacamole.GuacamoleException; -public interface AuthenticationProvider { +public interface AuthenticationProvider { - public UserConfiguration getUserConfiguration(String username, String password) throws GuacamoleException; + public UserConfiguration getUserConfiguration(CredentialType credentials) throws GuacamoleException; } diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/auth/UsernamePassword.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/auth/UsernamePassword.java new file mode 100644 index 000000000..0322bb20c --- /dev/null +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/auth/UsernamePassword.java @@ -0,0 +1,24 @@ +package net.sourceforge.guacamole.net.auth; + +public class UsernamePassword { + + private String username; + private String password; + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + +} diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java index 1d4010706..85975955c 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicFileAuthenticationProvider.java @@ -29,6 +29,7 @@ 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.auth.UsernamePassword; import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties; import net.sourceforge.guacamole.properties.GuacamoleProperties; import net.sourceforge.guacamole.protocol.GuacamoleConfiguration; @@ -40,7 +41,7 @@ import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; import org.xml.sax.helpers.XMLReaderFactory; -public class BasicFileAuthenticationProvider implements AuthenticationProvider { +public class BasicFileAuthenticationProvider implements AuthenticationProvider { private Logger logger = LoggerFactory.getLogger(BasicFileAuthenticationProvider.class); @@ -86,7 +87,7 @@ public class BasicFileAuthenticationProvider implements AuthenticationProvider { } @Override - public UserConfiguration getUserConfiguration(String username, String password) throws GuacamoleException { + public UserConfiguration getUserConfiguration(UsernamePassword credentials) throws GuacamoleException { // Check mapping file mod time File userMappingFile = getUserMappingFile(); @@ -107,8 +108,8 @@ public class BasicFileAuthenticationProvider implements AuthenticationProvider { throw new GuacamoleException("User mapping could not be read."); // Validate and return info for given user and pass - AuthInfo info = mapping.get(username); - if (info != null && info.validate(username, password)) + AuthInfo info = mapping.get(credentials.getUsername()); + if (info != null && info.validate(credentials.getUsername(), credentials.getPassword())) return info.getUserConfiguration(); return null; diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java index 669c7de43..6574d02bc 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicLogin.java @@ -27,6 +27,7 @@ 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.auth.UsernamePassword; import net.sourceforge.guacamole.properties.GuacamoleProperties; import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties; import org.slf4j.Logger; @@ -62,10 +63,14 @@ public class BasicLogin extends HttpServlet { String username = request.getParameter("username"); String password = request.getParameter("password"); + UsernamePassword credentials = new UsernamePassword(); + credentials.setUsername(username); + credentials.setPassword(password); + // Get authorized configs UserConfiguration config; try { - config = authProvider.getUserConfiguration(username, password); + config = authProvider.getUserConfiguration(credentials); } catch (GuacamoleException e) { logger.error("Error retrieving configuration for user {}.", username); diff --git a/guacamole/src/main/webapp/index.xhtml b/guacamole/src/main/webapp/index.xhtml index 5468b7f72..2640d0545 100644 --- a/guacamole/src/main/webapp/index.xhtml +++ b/guacamole/src/main/webapp/index.xhtml @@ -140,6 +140,12 @@ } + // If only one connection, redirect to that. + if (configs.length == 1) { + window.location.href = "client.xhtml?" + encodeURIComponent(configs[0].id); + return; + } + // Remove all rows from connections list var tbody = document.getElementById("connections-tbody"); tbody.innerHTML = "";