From a237959147986fdddac630536f7952863017e906 Mon Sep 17 00:00:00 2001 From: Alexander Skoblikov Date: Wed, 30 Mar 2022 17:01:21 +0300 Subject: [PATCH] CB-1803 minor fixes (#741) --- .../cloudbeaver/model/app/WebApplication.java | 5 +++++ .../io.cloudbeaver.server/META-INF/MANIFEST.MF | 3 +-- server/bundles/io.cloudbeaver.server/plugin.xml | 12 ------------ .../io/cloudbeaver/server/CBApplication.java | 11 +++++++---- .../META-INF/MANIFEST.MF | 3 ++- .../io.cloudbeaver.service.security/plugin.xml | 12 ++++++++++++ .../auth/provider/local/LocalAuthProvider.java | 17 ++++++++++++----- .../auth/provider/local/LocalAuthSession.java | 0 .../service/security/SecurityPluginService.java | 2 +- 9 files changed, 40 insertions(+), 25 deletions(-) rename server/bundles/{io.cloudbeaver.server => io.cloudbeaver.service.security}/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java (85%) rename server/bundles/{io.cloudbeaver.server => io.cloudbeaver.service.security}/src/io/cloudbeaver/auth/provider/local/LocalAuthSession.java (100%) diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/app/WebApplication.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/app/WebApplication.java index 5f8b3f9590..304dfed326 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/app/WebApplication.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/app/WebApplication.java @@ -16,7 +16,10 @@ */ package io.cloudbeaver.model.app; +import io.cloudbeaver.model.user.WebRole; +import io.cloudbeaver.model.user.WebUser; import org.jkiss.dbeaver.model.app.DBPApplication; +import org.jkiss.dbeaver.model.security.SMController; import java.nio.file.Path; @@ -31,4 +34,6 @@ public interface WebApplication extends DBPApplication { Path getDataDirectory(boolean create); Path getHomeDirectory(); + + SMController getSecurityController(); } diff --git a/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF index ee9f6e4e36..fcd23d84a5 100644 --- a/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF +++ b/server/bundles/io.cloudbeaver.server/META-INF/MANIFEST.MF @@ -24,11 +24,10 @@ Require-Bundle: org.eclipse.core.runtime;visibility:=reexport, org.jkiss.bundle.apache.dbcp, org.jkiss.dbeaver.net.ssh, io.cloudbeaver.model;visibility:=reexport, - io.cloudbeaver.service.security + io.cloudbeaver.service.security;visibility:=reexport Export-Package: io.cloudbeaver, io.cloudbeaver.auth.provider, io.cloudbeaver.auth.provider.fa, - io.cloudbeaver.auth.provider.local, io.cloudbeaver.server, io.cloudbeaver.server.servlets, io.cloudbeaver.model, diff --git a/server/bundles/io.cloudbeaver.server/plugin.xml b/server/bundles/io.cloudbeaver.server/plugin.xml index 5b2f0ca60a..195af3a8eb 100644 --- a/server/bundles/io.cloudbeaver.server/plugin.xml +++ b/server/bundles/io.cloudbeaver.server/plugin.xml @@ -37,18 +37,6 @@ - - - - - - - - - - - - diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java index 2a793e489d..8e75cc22d7 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/CBApplication.java @@ -21,7 +21,6 @@ import com.google.gson.GsonBuilder; import com.google.gson.InstanceCreator; import com.google.gson.stream.JsonWriter; import io.cloudbeaver.model.app.WebApplication; -import io.cloudbeaver.model.session.WebSession; import io.cloudbeaver.model.user.WebRole; import io.cloudbeaver.model.user.WebUser; import io.cloudbeaver.service.security.SecurityPluginService; @@ -415,7 +414,7 @@ public class CBApplication extends BaseApplicationImpl implements WebApplication @NotNull private File getRuntimeAppConfigFile() { - return getDataDirectory(false).resolve(CBConstants.RUNTIME_APP_CONFIG_FILE_NAME).toFile(); + return getDataDirectory(true).resolve(CBConstants.RUNTIME_APP_CONFIG_FILE_NAME).toFile(); } @NotNull @@ -439,7 +438,7 @@ public class CBApplication extends BaseApplicationImpl implements WebApplication } protected SMAdminController createSecurityController() throws DBException { - return SecurityPluginService.getSecurityService(this, databaseConfiguration); + return SecurityPluginService.createSecurityService(this, databaseConfiguration); } private void loadConfiguration(String configPath) { @@ -665,7 +664,7 @@ public class CBApplication extends BaseApplicationImpl implements WebApplication } if (isConfigurationMode()) { - SecurityPluginService.finishConfiguration(adminName, adminPassword, authInfoList); + finishSecurityServiceConfiguration(adminName, adminPassword, authInfoList); } // Save runtime configuration @@ -692,6 +691,10 @@ public class CBApplication extends BaseApplicationImpl implements WebApplication configurationMode = CommonUtils.isEmpty(serverName); } + protected void finishSecurityServiceConfiguration(@NotNull String adminName, @Nullable String adminPassword, @NotNull List authInfoList) throws DBException { + SecurityPluginService.finishConfiguration(adminName, adminPassword, authInfoList); + } + public synchronized void flushConfiguration() throws DBException { saveRuntimeConfig(serverName, serverURL, maxSessionIdleTime, appConfiguration); } diff --git a/server/bundles/io.cloudbeaver.service.security/META-INF/MANIFEST.MF b/server/bundles/io.cloudbeaver.service.security/META-INF/MANIFEST.MF index 7adfccaadf..4ca2c01198 100644 --- a/server/bundles/io.cloudbeaver.service.security/META-INF/MANIFEST.MF +++ b/server/bundles/io.cloudbeaver.service.security/META-INF/MANIFEST.MF @@ -13,5 +13,6 @@ Require-Bundle: org.jkiss.dbeaver.model;visibility:=reexport, org.jkiss.dbeaver.registry;visibility:=reexport, org.jkiss.bundle.apache.dbcp, io.cloudbeaver.model -Export-Package: io.cloudbeaver.service.security +Export-Package: io.cloudbeaver.auth.provider.local, + io.cloudbeaver.service.security Automatic-Module-Name: io.cloudbeaver.service.security diff --git a/server/bundles/io.cloudbeaver.service.security/plugin.xml b/server/bundles/io.cloudbeaver.service.security/plugin.xml index aa94964420..1e3e04d989 100644 --- a/server/bundles/io.cloudbeaver.service.security/plugin.xml +++ b/server/bundles/io.cloudbeaver.service.security/plugin.xml @@ -6,4 +6,16 @@ + + + + + + + + + + + + diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java similarity index 85% rename from server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java rename to server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java index b21d041fb5..2849847ced 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java +++ b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/local/LocalAuthProvider.java @@ -16,18 +16,21 @@ */ package io.cloudbeaver.auth.provider.local; +import io.cloudbeaver.model.app.WebApplication; import io.cloudbeaver.model.session.WebSession; -import io.cloudbeaver.server.CBApplication; +import io.cloudbeaver.model.user.WebRole; +import io.cloudbeaver.model.user.WebUser; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.model.auth.AuthPropertyEncryption; import org.jkiss.dbeaver.model.auth.SMAuthProvider; import org.jkiss.dbeaver.model.auth.SMSession; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; +import org.jkiss.dbeaver.model.security.SMController; import org.jkiss.dbeaver.registry.auth.AuthProviderDescriptor; import org.jkiss.dbeaver.registry.auth.AuthProviderRegistry; +import org.jkiss.dbeaver.runtime.DBWorkbench; import org.jkiss.utils.CommonUtils; -import org.jkiss.utils.SecurityUtils; import java.util.Map; @@ -45,7 +48,7 @@ public class LocalAuthProvider implements SMAuthProvider { String userName = CommonUtils.toString(userCredentials.get(CRED_USER), null); AuthProviderDescriptor authProvider = AuthProviderRegistry.getInstance().getAuthProvider(PROVIDER_ID); - Map storedCredentials = CBApplication.getInstance().getSecurityController().getUserCredentials(userName, authProvider.getId()); + Map storedCredentials = getSecurityController().getUserCredentials(userName, authProvider.getId()); if (storedCredentials == null) { throw new DBException("Invalid user name or password"); } @@ -79,7 +82,7 @@ public class LocalAuthProvider implements SMAuthProvider { String userName = webSession.getUser().getUserId(); AuthProviderDescriptor authProvider = AuthProviderRegistry.getInstance().getAuthProvider(PROVIDER_ID); - Map storedCredentials = CBApplication.getInstance().getSecurityController().getUserCredentials(userName, authProvider.getId()); + Map storedCredentials = getSecurityController().getUserCredentials(userName, authProvider.getId()); if (storedCredentials == null) { throw new DBException("Invalid user name or password"); } @@ -98,8 +101,12 @@ public class LocalAuthProvider implements SMAuthProvider { //String newPasswordHash = WebAuthProviderPropertyEncryption.hash.encrypt(userName, newPassword); storedCredentials.put(CRED_PASSWORD, newPassword); - CBApplication.getInstance().getSecurityController().setUserCredentials(userName, authProvider.getId(), storedCredentials); + getSecurityController().setUserCredentials(userName, authProvider.getId(), storedCredentials); return true; } + private static SMController getSecurityController() { + return ((WebApplication) DBWorkbench.getPlatform().getApplication()).getSecurityController(); + } + } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthSession.java b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/local/LocalAuthSession.java similarity index 100% rename from server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/auth/provider/local/LocalAuthSession.java rename to server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/local/LocalAuthSession.java diff --git a/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/service/security/SecurityPluginService.java b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/service/security/SecurityPluginService.java index b2e78bc8ab..f97350662c 100644 --- a/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/service/security/SecurityPluginService.java +++ b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/service/security/SecurityPluginService.java @@ -49,7 +49,7 @@ public class SecurityPluginService implements IPluginService { } - public static synchronized SMAdminController getSecurityService(WebApplication application, Map databaseConfig) throws DBException { + public static synchronized SMAdminController createSecurityService(WebApplication application, Map databaseConfig) throws DBException { if (CONTROLLER_INSTANCE != null) { return CONTROLLER_INSTANCE; }