From 18da9ce0a4029a2c20763f20d3c31650cbfaf80d Mon Sep 17 00:00:00 2001 From: felmer <franz-josef.elmer@id.ethz.ch> Date: Wed, 20 May 2020 08:15:41 +0200 Subject: [PATCH] SSDM-9734: use user id *and* password to cache session token --- .../openbis/dss/generic/server/ftp/FtpUserManager.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpUserManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpUserManager.java index bd9fc37dd54..54de33d309f 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpUserManager.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/ftp/FtpUserManager.java @@ -45,7 +45,7 @@ public class FtpUserManager implements UserManager FtpUserManager.class); private final IServiceForDataStoreServer service; - + private final Map<String, String> sessionTokensByUser = Collections.synchronizedMap(new HashMap<>()); public FtpUserManager(IServiceForDataStoreServer service) @@ -60,7 +60,8 @@ public class FtpUserManager implements UserManager { UsernamePasswordAuthentication upa = (UsernamePasswordAuthentication) authentication; String user = upa.getUsername(); - String sessionToken = sessionTokensByUser.get(user); + String key = String.format("%s:%s", upa.getUsername(), upa.getPassword()); + String sessionToken = sessionTokensByUser.get(key); if (sessionToken != null) { SessionContextDTO session = service.tryGetSession(sessionToken); @@ -71,7 +72,7 @@ public class FtpUserManager implements UserManager String password = upa.getPassword(); SessionContextDTO session = service.tryAuthenticate(user, password); sessionToken = session == null ? null : session.getSessionToken(); - sessionTokensByUser.put(user, sessionToken); + sessionTokensByUser.put(key, sessionToken); } if (sessionToken != null) { -- GitLab