diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionAuthProcessor.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionAuthProcessor.java index 4012483108..17c8634da0 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionAuthProcessor.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/model/session/WebSessionAuthProcessor.java @@ -82,9 +82,15 @@ public class WebSessionAuthProcessor { @SuppressWarnings("unchecked") private List finishWebSessionAuthorization(SMAuthInfo authInfo) throws DBException { boolean configMode = WebAppUtils.getWebApplication().isConfigurationMode(); - boolean resetUserStateOnError = webSession.getUser() == null; + boolean alreadyLoggedIn = webSession.getUser() != null; + boolean resetUserStateOnError = !alreadyLoggedIn; try { + if (configMode && alreadyLoggedIn) { + for (String providerId : authInfo.getAuthData().keySet()) { + webSession.removeAuthInfo(providerId); + } + } webSession.updateSMAuthInfo(authInfo); WebUser curUser = webSession.getUser(); if (curUser == null) { @@ -117,18 +123,11 @@ public class WebSessionAuthProcessor { } SMSession authSession; - if (configMode) { - if (webSession.getUser() != null) { - // Already logged in - remove auth token - webSession.removeAuthInfo(providerId); - webSession.resetAuthToken(); - } - } else { - if (authProviderExternal != null) { - // We may need to associate new credentials with active user - if (linkWithActiveUser) { - securityController.setUserCredentials(userId, authProviderDescriptor.getId(), userCredentials); - } + + if (authProviderExternal != null && !configMode && !alreadyLoggedIn) { + // We may need to associate new credentials with active user + if (linkWithActiveUser) { + securityController.setUserCredentials(userId, authProviderDescriptor.getId(), userCredentials); } } diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java index 19563f811a..a16e7bbb41 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/impl/WebServiceAuthImpl.java @@ -66,7 +66,10 @@ public class WebServiceAuthImpl implements DBWServiceAuth { authParameters = Map.of(); } SMController securityController = webSession.getSecurityController(); - String currentSmSessionId = webSession.getUser() == null ? null : webSession.getUserContext().getSmSessionId(); + String currentSmSessionId = (webSession.getUser() == null || CBApplication.getInstance().isConfigurationMode()) + ? null + : webSession.getUserContext().getSmSessionId(); + try { var smAuthInfo = securityController.authenticate( webSession.getSessionId(),