From 45adf2fd9392338cb100379d28ad64f5e7abff6e Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Mon, 29 May 2017 20:52:45 -0700 Subject: [PATCH] GUACAMOLE-393: Add session invalidation hooks to UserContext. --- .../auth/jdbc/sharing/user/SharedUserContext.java | 5 +++++ .../guacamole/auth/jdbc/user/ModeledUserContext.java | 5 +++++ .../org/apache/guacamole/auth/ldap/user/UserContext.java | 5 +++++ .../java/org/apache/guacamole/net/auth/UserContext.java | 7 +++++++ .../guacamole/net/auth/simple/SimpleUserContext.java | 5 +++++ .../main/java/org/apache/guacamole/GuacamoleSession.java | 4 ++++ 6 files changed, 31 insertions(+) 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 cad1bab7f..2092898ae 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.
emptyList(); } + @Override + public void invalidate() { + // Nothing to invalidate + } + } 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 d43c3c1c3..9d3ba69f2 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 + } + } 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 2c4703c70..39c32e421 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.emptyList(); } + @Override + public void invalidate() { + // Nothing to invalidate + } + } 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 5c6f97428..596c5d94f 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 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(); + } 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 1e55db92f..d87cf950b 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.emptyList(); } + @Override + public void invalidate() { + // Nothing to invalidate + } + } diff --git a/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java b/guacamole/src/main/java/org/apache/guacamole/GuacamoleSession.java index 17168afa7..e723c0a9e 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();