You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@guacamole.apache.org by vn...@apache.org on 2017/09/25 19:14:36 UTC

[1/4] incubator-guacamole-client git commit: GUACAMOLE-393: Add session invalidation hooks to AuthenticatedUser.

Repository: incubator-guacamole-client
Updated Branches:
  refs/heads/master 93e42f829 -> b64247dfb


GUACAMOLE-393: Add session invalidation hooks to AuthenticatedUser.


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/c20457f8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/c20457f8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/c20457f8

Branch: refs/heads/master
Commit: c20457f89b6d0658bbb684264e06d71fb608817f
Parents: b90a989
Author: Michael Jumper <mj...@apache.org>
Authored: Mon May 29 19:03:42 2017 -0700
Committer: Michael Jumper <mj...@apache.org>
Committed: Mon Sep 25 11:47:25 2017 -0700

----------------------------------------------------------------------
 .../guacamole/auth/jdbc/user/RemoteAuthenticatedUser.java     | 5 +++++
 .../apache/guacamole/net/auth/AbstractAuthenticatedUser.java  | 5 +++++
 .../java/org/apache/guacamole/net/auth/AuthenticatedUser.java | 7 +++++++
 .../src/main/java/org/apache/guacamole/GuacamoleSession.java  | 3 +++
 4 files changed, 20 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/c20457f8/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/RemoteAuthenticatedUser.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/RemoteAuthenticatedUser.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/RemoteAuthenticatedUser.java
index a3848f4..24118af 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/RemoteAuthenticatedUser.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/RemoteAuthenticatedUser.java
@@ -136,4 +136,9 @@ public abstract class RemoteAuthenticatedUser implements AuthenticatedUser {
         return authenticationProvider;
     }
 
+    @Override
+    public void invalidate() {
+        // Nothing to invalidate
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/c20457f8/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AbstractAuthenticatedUser.java
----------------------------------------------------------------------
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 730eec0..08b9b4e 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
@@ -29,4 +29,9 @@ public abstract class AbstractAuthenticatedUser extends AbstractIdentifiable
 
     // Prior functionality now resides within AbstractIdentifiable
 
+    @Override
+    public void invalidate() {
+        // Nothing to invalidate
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/c20457f8/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticatedUser.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticatedUser.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticatedUser.java
index 7f363f2..f6ceb3a 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticatedUser.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticatedUser.java
@@ -49,4 +49,11 @@ public interface AuthenticatedUser extends Identifiable {
      */
     Credentials getCredentials();
 
+    /**
+     * Invalidates this authenticated user and their associated token such that
+     * they are no longer logged in. This function will be automatically
+     * invoked when the user logs out, or when their session expires.
+     */
+    void invalidate();
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/c20457f8/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java
----------------------------------------------------------------------
diff --git a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java
index de81453..17168af 100644
--- a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java
+++ b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java
@@ -252,6 +252,9 @@ public class GuacamoleSession {
             }
         }
 
+        // Invalidate the authenticated user object
+        authenticatedUser.invalidate();
+
     }
     
 }


[4/4] incubator-guacamole-client git commit: GUACAMOLE-393: Merge add extension logout/shutdown hooks

Posted by vn...@apache.org.
GUACAMOLE-393: Merge add extension logout/shutdown hooks


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/b64247df
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/b64247df
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/b64247df

Branch: refs/heads/master
Commit: b64247dfb2901d009964187315b6b902f8aed4cd
Parents: 93e42f8 2c587e5
Author: Nick Couchman <vn...@apache.org>
Authored: Mon Sep 25 15:12:45 2017 -0400
Committer: Nick Couchman <vn...@apache.org>
Committed: Mon Sep 25 15:12:45 2017 -0400

----------------------------------------------------------------------
 .../auth/cas/CASAuthenticationProvider.java     |  5 ++++
 .../auth/duo/DuoAuthenticationProvider.java     |  5 ++++
 .../HTTPHeaderAuthenticationProvider.java       |  5 ++++
 .../jdbc/InjectedAuthenticationProvider.java    |  5 ++++
 .../jdbc/sharing/user/SharedUserContext.java    |  5 ++++
 .../auth/jdbc/user/ModeledUserContext.java      |  5 ++++
 .../auth/jdbc/user/RemoteAuthenticatedUser.java |  5 ++++
 .../auth/ldap/LDAPAuthenticationProvider.java   |  5 ++++
 .../guacamole/auth/ldap/user/UserContext.java   |  5 ++++
 .../net/auth/AbstractAuthenticatedUser.java     |  5 ++++
 .../guacamole/net/auth/AuthenticatedUser.java   |  7 ++++++
 .../net/auth/AuthenticationProvider.java        |  7 ++++++
 .../apache/guacamole/net/auth/UserContext.java  |  7 ++++++
 .../simple/SimpleAuthenticationProvider.java    |  5 ++++
 .../net/auth/simple/SimpleUserContext.java      |  5 ++++
 .../GuacamoleServletContextListener.java        | 25 +++++++++++++++++++-
 .../org/apache/guacamole/GuacamoleSession.java  |  7 ++++++
 .../extension/AuthenticationProviderFacade.java |  6 +++++
 18 files changed, 118 insertions(+), 1 deletion(-)
----------------------------------------------------------------------



[3/4] incubator-guacamole-client git commit: GUACAMOLE-393: Add AuthenticationProvider shutdown hook.

Posted by vn...@apache.org.
GUACAMOLE-393: Add AuthenticationProvider shutdown hook.


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/2c587e5f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/2c587e5f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/2c587e5f

Branch: refs/heads/master
Commit: 2c587e5f9ffe8aa84c460b8f63cd71483bd4bc7f
Parents: 45adf2f
Author: Michael Jumper <mj...@apache.org>
Authored: Mon May 29 21:21:48 2017 -0700
Committer: Michael Jumper <mj...@apache.org>
Committed: Mon Sep 25 11:47:44 2017 -0700

----------------------------------------------------------------------
 .../auth/cas/CASAuthenticationProvider.java     |  5 ++++
 .../auth/duo/DuoAuthenticationProvider.java     |  5 ++++
 .../HTTPHeaderAuthenticationProvider.java       |  5 ++++
 .../jdbc/InjectedAuthenticationProvider.java    |  5 ++++
 .../auth/ldap/LDAPAuthenticationProvider.java   |  5 ++++
 .../net/auth/AuthenticationProvider.java        |  7 ++++++
 .../simple/SimpleAuthenticationProvider.java    |  5 ++++
 .../GuacamoleServletContextListener.java        | 25 +++++++++++++++++++-
 .../extension/AuthenticationProviderFacade.java |  6 +++++
 9 files changed, 67 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java b/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java
index 241f17a..28122f9 100644
--- a/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java
+++ b/extensions/guacamole-auth-cas/src/main/java/org/apache/guacamole/auth/cas/CASAuthenticationProvider.java
@@ -107,4 +107,9 @@ public class CASAuthenticationProvider implements AuthenticationProvider {
 
     }
 
+    @Override
+    public void shutdown() {
+        // Do nothing
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java b/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java
index f998996..1c84046 100644
--- a/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java
+++ b/extensions/guacamole-auth-duo/src/main/java/org/apache/guacamole/auth/duo/DuoAuthenticationProvider.java
@@ -102,4 +102,9 @@ public class DuoAuthenticationProvider implements AuthenticationProvider {
         return context;
     }
 
+    @Override
+    public void shutdown() {
+        // Do nothing
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java
index 1721f16..b3385b1 100644
--- a/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java
+++ b/extensions/guacamole-auth-header/src/main/java/org/apache/guacamole/auth/header/HTTPHeaderAuthenticationProvider.java
@@ -107,4 +107,9 @@ public class HTTPHeaderAuthenticationProvider implements AuthenticationProvider
 
     }
 
+    @Override
+    public void shutdown() {
+        // Do nothing
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java
index d06d6ed..e73b3df 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/InjectedAuthenticationProvider.java
@@ -104,4 +104,9 @@ public abstract class InjectedAuthenticationProvider implements AuthenticationPr
                 authenticatedUser, credentials);
     }
 
+    @Override
+    public void shutdown() {
+        // Do nothing
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java
index 1db4ee9..f9c4a7d 100644
--- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java
+++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/LDAPAuthenticationProvider.java
@@ -103,5 +103,10 @@ public class LDAPAuthenticationProvider implements AuthenticationProvider {
         return context;
     }
 
+    @Override
+    public void shutdown() {
+        // Do nothing
+    }
+
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java
index 3acc512..448f495 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationProvider.java
@@ -167,5 +167,12 @@ public interface AuthenticationProvider {
     UserContext updateUserContext(UserContext context,
             AuthenticatedUser authenticatedUser,
             Credentials credentials) throws GuacamoleException;
+
+    /**
+     * Frees all resources associated with this AuthenticationProvider. This
+     * function will be automatically invoked when the Guacamole server is
+     * shutting down.
+     */
+    void shutdown();
     
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java
index 96766cb..83ac794 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleAuthenticationProvider.java
@@ -260,4 +260,9 @@ public abstract class SimpleAuthenticationProvider
         
     }
 
+    @Override
+    public void shutdown() {
+        // Do nothing
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java
----------------------------------------------------------------------
diff --git a/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java b/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java
index 72fe273..e8ad6a8 100644
--- a/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java
+++ b/guacamole/src/main/java/org/apache/guacamole/GuacamoleServletContextListener.java
@@ -21,14 +21,17 @@ package org.apache.guacamole;
 
 import org.apache.guacamole.tunnel.TunnelModule;
 import com.google.inject.Guice;
+import com.google.inject.Inject;
 import com.google.inject.Injector;
 import com.google.inject.Stage;
 import com.google.inject.servlet.GuiceServletContextListener;
+import java.util.List;
 import javax.servlet.ServletContextEvent;
 import org.apache.guacamole.environment.Environment;
 import org.apache.guacamole.environment.LocalEnvironment;
 import org.apache.guacamole.extension.ExtensionModule;
 import org.apache.guacamole.log.LogModule;
+import org.apache.guacamole.net.auth.AuthenticationProvider;
 import org.apache.guacamole.rest.RESTServiceModule;
 import org.apache.guacamole.rest.auth.HashTokenSessionMap;
 import org.apache.guacamole.rest.auth.TokenSessionMap;
@@ -56,6 +59,12 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener
      */
     private TokenSessionMap sessionMap;
 
+    /**
+     * List of all authentication providers from all loaded extensions.
+     */
+    @Inject
+    private List<AuthenticationProvider> authProviders;
+
     @Override
     public void contextInitialized(ServletContextEvent servletContextEvent) {
 
@@ -75,13 +84,21 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener
 
     @Override
     protected Injector getInjector() {
-        return Guice.createInjector(Stage.PRODUCTION,
+
+        // Create injector
+        Injector injector = Guice.createInjector(Stage.PRODUCTION,
             new EnvironmentModule(environment),
             new LogModule(environment),
             new ExtensionModule(environment),
             new RESTServiceModule(sessionMap),
             new TunnelModule()
         );
+
+        // Inject any annotated members of this class
+        injector.injectMembers(this);
+
+        return injector;
+
     }
 
     @Override
@@ -93,6 +110,12 @@ public class GuacamoleServletContextListener extends GuiceServletContextListener
         if (sessionMap != null)
             sessionMap.shutdown();
 
+        // Unload all extensions
+        if (authProviders != null) {
+            for (AuthenticationProvider authProvider : authProviders)
+                authProvider.shutdown();
+        }
+
     }
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/2c587e5f/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java
----------------------------------------------------------------------
diff --git a/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java b/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java
index e1ed5ff..c1e2765 100644
--- a/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java
+++ b/guacamole/src/main/java/org/apache/guacamole/extension/AuthenticationProviderFacade.java
@@ -209,4 +209,10 @@ public class AuthenticationProviderFacade implements AuthenticationProvider {
         
     }
 
+    @Override
+    public void shutdown() {
+        if (authProvider != null)
+            authProvider.shutdown();
+    }
+
 }


[2/4] incubator-guacamole-client git commit: GUACAMOLE-393: Add session invalidation hooks to UserContext.

Posted by vn...@apache.org.
GUACAMOLE-393: Add session invalidation hooks to UserContext.


Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/commit/45adf2fd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/tree/45adf2fd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/diff/45adf2fd

Branch: refs/heads/master
Commit: 45adf2fd9392338cb100379d28ad64f5e7abff6e
Parents: c20457f
Author: Michael Jumper <mj...@apache.org>
Authored: Mon May 29 20:52:45 2017 -0700
Committer: Michael Jumper <mj...@apache.org>
Committed: Mon Sep 25 11:47:37 2017 -0700

----------------------------------------------------------------------
 .../guacamole/auth/jdbc/sharing/user/SharedUserContext.java   | 5 +++++
 .../apache/guacamole/auth/jdbc/user/ModeledUserContext.java   | 5 +++++
 .../java/org/apache/guacamole/auth/ldap/user/UserContext.java | 5 +++++
 .../main/java/org/apache/guacamole/net/auth/UserContext.java  | 7 +++++++
 .../apache/guacamole/net/auth/simple/SimpleUserContext.java   | 5 +++++
 .../src/main/java/org/apache/guacamole/GuacamoleSession.java  | 4 ++++
 6 files changed, 31 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/45adf2fd/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUserContext.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUserContext.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUserContext.java
index cad1bab..2092898 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUserContext.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/sharing/user/SharedUserContext.java
@@ -204,4 +204,9 @@ public class SharedUserContext implements UserContext {
         return Collections.<Form>emptyList();
     }
 
+    @Override
+    public void invalidate() {
+        // Nothing to invalidate
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/45adf2fd/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java
index d43c3c1..9d3ba69 100644
--- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java
+++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUserContext.java
@@ -191,4 +191,9 @@ public class ModeledUserContext extends RestrictedObject
         return ModeledSharingProfile.ATTRIBUTES;
     }
 
+    @Override
+    public void invalidate() {
+        // Nothing to invalidate
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/45adf2fd/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserContext.java
----------------------------------------------------------------------
diff --git a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserContext.java b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserContext.java
index 2c4703c..39c32e4 100644
--- a/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserContext.java
+++ b/extensions/guacamole-auth-ldap/src/main/java/org/apache/guacamole/auth/ldap/user/UserContext.java
@@ -229,4 +229,9 @@ public class UserContext implements org.apache.guacamole.net.auth.UserContext {
         return Collections.<Form>emptyList();
     }
 
+    @Override
+    public void invalidate() {
+        // Nothing to invalidate
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/45adf2fd/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java
index 5c6f974..596c5d9 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/UserContext.java
@@ -212,4 +212,11 @@ public interface UserContext {
      */
     Collection<Form> getSharingProfileAttributes();
 
+    /**
+     * Invalidates this user context, releasing all associated resources. This
+     * function will be invoked when the user logs out, or when their session
+     * is automatically invalidated.
+     */
+    void invalidate();
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/45adf2fd/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUserContext.java
----------------------------------------------------------------------
diff --git a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUserContext.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUserContext.java
index 1e55db9..d87cf95 100644
--- a/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUserContext.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/simple/SimpleUserContext.java
@@ -234,4 +234,9 @@ public class SimpleUserContext implements UserContext {
         return Collections.<Form>emptyList();
     }
 
+    @Override
+    public void invalidate() {
+        // Nothing to invalidate
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-guacamole-client/blob/45adf2fd/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java
----------------------------------------------------------------------
diff --git a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java
index 17168af..e723c0a 100644
--- a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java
+++ b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java
@@ -252,6 +252,10 @@ public class GuacamoleSession {
             }
         }
 
+        // Invalidate all user contextx
+        for (UserContext userContext : userContexts)
+            userContext.invalidate();
+
         // Invalidate the authenticated user object
         authenticatedUser.invalidate();