From 2131abb4807b55949912af0af81605645fa9c655 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Fri, 15 Jul 2016 13:29:39 -0700 Subject: [PATCH] GUACAMOLE-5: Bring JDBC authentication up to date with sharing profile API changes. --- .../TrackedActiveConnection.java | 31 +++++++++++++++++-- .../jdbc/connection/ModeledConnection.java | 7 +++++ .../connection/ModeledConnectionRecord.java | 10 ++++++ .../jdbc/tunnel/ActiveConnectionRecord.java | 10 ++++++ .../guacamole/auth/jdbc/user/ModeledUser.java | 7 +++++ .../guacamole/auth/jdbc/user/UserContext.java | 14 +++++++++ 6 files changed, 76 insertions(+), 3 deletions(-) diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/activeconnection/TrackedActiveConnection.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/activeconnection/TrackedActiveConnection.java index c02e54d87..d4a23ffbc 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/activeconnection/TrackedActiveConnection.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/activeconnection/TrackedActiveConnection.java @@ -20,11 +20,14 @@ package org.apache.guacamole.auth.jdbc.activeconnection; import java.util.Date; +import org.apache.guacamole.GuacamoleException; +import org.apache.guacamole.GuacamoleSecurityException; import org.apache.guacamole.auth.jdbc.base.RestrictedObject; import org.apache.guacamole.auth.jdbc.tunnel.ActiveConnectionRecord; import org.apache.guacamole.auth.jdbc.user.AuthenticatedUser; import org.apache.guacamole.net.GuacamoleTunnel; import org.apache.guacamole.net.auth.ActiveConnection; +import org.apache.guacamole.net.auth.credentials.UserCredentials; /** * An implementation of the ActiveConnection object which has an associated @@ -44,6 +47,11 @@ public class TrackedActiveConnection extends RestrictedObject implements ActiveC */ private String connectionIdentifier; + /** + * The identifier of the associated sharing profile. + */ + private String sharingProfileIdentifier; + /** * The date and time this active connection began. */ @@ -90,9 +98,10 @@ public class TrackedActiveConnection extends RestrictedObject implements ActiveC super.init(currentUser); // Copy all non-sensitive data from given record - this.connectionIdentifier = activeConnectionRecord.getConnection().getIdentifier(); - this.identifier = activeConnectionRecord.getUUID().toString(); - this.startDate = activeConnectionRecord.getStartDate(); + this.connectionIdentifier = activeConnectionRecord.getConnectionIdentifier(); + this.sharingProfileIdentifier = activeConnectionRecord.getSharingProfileIdentifier(); + this.identifier = activeConnectionRecord.getUUID().toString(); + this.startDate = activeConnectionRecord.getStartDate(); // Include sensitive data, too, if requested if (includeSensitiveInformation) { @@ -123,6 +132,22 @@ public class TrackedActiveConnection extends RestrictedObject implements ActiveC this.connectionIdentifier = connnectionIdentifier; } + @Override + public String getSharingProfileIdentifier() { + return sharingProfileIdentifier; + } + + @Override + public void setSharingProfileIdentifier(String sharingProfileIdentifier) { + this.sharingProfileIdentifier = sharingProfileIdentifier; + } + + @Override + public UserCredentials getSharingCredentials(String identifier) + throws GuacamoleException { + throw new GuacamoleSecurityException("Permission denied"); + } + @Override public Date getStartDate() { return startDate; diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java index caa9675d0..6cd30d4bb 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnection.java @@ -27,6 +27,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.guacamole.auth.jdbc.tunnel.GuacamoleTunnelService; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.auth.jdbc.JDBCEnvironment; @@ -156,6 +157,12 @@ public class ModeledConnection extends ModeledGroupedDirectoryObject getSharingProfileIdentifiers() + throws GuacamoleException { + return Collections.emptySet(); + } + @Override public List getHistory() throws GuacamoleException { return connectionService.retrieveHistory(getCurrentUser(), this); diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnectionRecord.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnectionRecord.java index 4296b6d97..41a5fdb34 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnectionRecord.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/connection/ModeledConnectionRecord.java @@ -58,6 +58,16 @@ public class ModeledConnectionRecord implements ConnectionRecord { return model.getConnectionName(); } + @Override + public String getSharingProfileIdentifier() { + return null; + } + + @Override + public String getSharingProfileName() { + return null; + } + @Override public Date getStartDate() { return model.getStartDate(); diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/ActiveConnectionRecord.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/ActiveConnectionRecord.java index 45122cd61..a34e339c3 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/ActiveConnectionRecord.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/tunnel/ActiveConnectionRecord.java @@ -171,6 +171,16 @@ public class ActiveConnectionRecord implements ConnectionRecord { return connection.getName(); } + @Override + public String getSharingProfileIdentifier() { + return null; + } + + @Override + public String getSharingProfileName() { + return null; + } + @Override public Date getStartDate() { return startDate; diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java index 8b17523f7..26bdbcfc2 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/ModeledUser.java @@ -49,6 +49,7 @@ import org.apache.guacamole.net.auth.User; import org.apache.guacamole.net.auth.permission.ObjectPermissionSet; import org.apache.guacamole.net.auth.permission.SystemPermission; import org.apache.guacamole.net.auth.permission.SystemPermissionSet; +import org.apache.guacamole.net.auth.simple.SimpleObjectPermissionSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -251,6 +252,12 @@ public class ModeledUser extends ModeledDirectoryObject implements Us return connectionGroupPermissionService.getPermissionSet(getCurrentUser(), this); } + @Override + public ObjectPermissionSet getSharingProfilePermissions() + throws GuacamoleException { + return new SimpleObjectPermissionSet(); + } + @Override public ObjectPermissionSet getActiveConnectionPermissions() throws GuacamoleException { diff --git a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserContext.java b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserContext.java index 8df1d3c2b..7cb52f07e 100644 --- a/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserContext.java +++ b/extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/user/UserContext.java @@ -26,6 +26,7 @@ import org.apache.guacamole.auth.jdbc.connection.ConnectionDirectory; import com.google.inject.Inject; import com.google.inject.Provider; import java.util.Collection; +import java.util.Collections; import org.apache.guacamole.GuacamoleException; import org.apache.guacamole.auth.jdbc.base.RestrictedObject; import org.apache.guacamole.auth.jdbc.activeconnection.ActiveConnectionDirectory; @@ -38,7 +39,9 @@ import org.apache.guacamole.net.auth.AuthenticationProvider; import org.apache.guacamole.net.auth.Connection; import org.apache.guacamole.net.auth.ConnectionGroup; import org.apache.guacamole.net.auth.Directory; +import org.apache.guacamole.net.auth.SharingProfile; import org.apache.guacamole.net.auth.User; +import org.apache.guacamole.net.auth.simple.SimpleDirectory; /** * UserContext implementation which is driven by an arbitrary, underlying @@ -134,6 +137,12 @@ public class UserContext extends RestrictedObject return connectionGroupDirectory; } + @Override + public Directory getSharingProfileDirectory() + throws GuacamoleException { + return new SimpleDirectory(); + } + @Override public Directory getActiveConnectionDirectory() throws GuacamoleException { @@ -173,4 +182,9 @@ public class UserContext extends RestrictedObject return ModeledConnectionGroup.ATTRIBUTES; } + @Override + public Collection
getSharingProfileAttributes() { + return Collections.emptyList(); + } + }