From 7be306f1f4504f2a1551f2b7f9b626a80ae94768 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 7 Aug 2013 16:15:54 -0700 Subject: [PATCH] Add hasNewCredentials() function to avoid uselessly hammering on auth logic. --- .../net/basic/AuthenticatingHttpServlet.java | 13 ++++++++++++- .../net/basic/BasicGuacamoleTunnelServlet.java | 12 ++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/AuthenticatingHttpServlet.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/AuthenticatingHttpServlet.java index b38dec8b8..aa2f27fb7 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/AuthenticatingHttpServlet.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/AuthenticatingHttpServlet.java @@ -200,6 +200,17 @@ public abstract class AuthenticatingHttpServlet extends HttpServlet { return (UserContext) session.getAttribute(CONTEXT_ATTRIBUTE); } + /** + * Returns whether the request given has updated credentials. If this + * function returns false, the UserContext will not be updated. + * + * @param request The request to check for credentials. + * @return true if the request contains credentials, false otherwise. + */ + protected boolean hasNewCredentials(HttpServletRequest request) { + return true; + } + @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { @@ -247,7 +258,7 @@ public abstract class AuthenticatingHttpServlet extends HttpServlet { } // Otherwise, update existing context - else + else if (hasNewCredentials(request)) context = authProvider.updateUserContext(context, credentials); // If no context, fail authentication, notify listeners diff --git a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java index f02aaacda..363658b17 100644 --- a/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java +++ b/guacamole/src/main/java/net/sourceforge/guacamole/net/basic/BasicGuacamoleTunnelServlet.java @@ -251,5 +251,17 @@ public class BasicGuacamoleTunnelServlet extends AuthenticatingHttpServlet { }; + @Override + protected boolean hasNewCredentials(HttpServletRequest request) { + + String query = request.getQueryString(); + if (query == null) + return false; + + // Only connections are given new credentials + return query.equals("connect"); + + } + }