From 3b6bfe2a4ebd7aad78ee8970d71809b4ae5e68e8 Mon Sep 17 00:00:00 2001 From: yagudin10 Date: Mon, 22 Aug 2022 13:23:18 +0300 Subject: [PATCH] CB-2365 reverse proxy anonymous access enabled fix --- .../service/auth/RPSessionHandler.java | 35 +++---------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/RPSessionHandler.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/RPSessionHandler.java index fcb178b64b..a4a87437b4 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/RPSessionHandler.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/RPSessionHandler.java @@ -16,31 +16,26 @@ */ package io.cloudbeaver.service.auth; -import io.cloudbeaver.DBWUserIdentity; import io.cloudbeaver.DBWebException; import io.cloudbeaver.auth.SMAuthProviderExternal; import io.cloudbeaver.auth.provider.rp.RPAuthProvider; -import io.cloudbeaver.model.session.WebAuthInfo; import io.cloudbeaver.model.session.WebSession; -import io.cloudbeaver.model.user.WebUser; +import io.cloudbeaver.model.session.WebSessionAuthProcessor; import io.cloudbeaver.server.CBApplication; import io.cloudbeaver.service.DBWSessionHandler; import org.jkiss.code.NotNull; import org.jkiss.dbeaver.DBException; import org.jkiss.dbeaver.Log; import org.jkiss.dbeaver.model.auth.SMAuthInfo; -import org.jkiss.dbeaver.model.auth.SMSession; import org.jkiss.dbeaver.model.security.SMConstants; import org.jkiss.dbeaver.model.security.SMController; import org.jkiss.dbeaver.model.security.exception.SMException; import org.jkiss.dbeaver.registry.auth.AuthProviderDescriptor; import org.jkiss.dbeaver.registry.auth.AuthProviderRegistry; -import org.jkiss.utils.CommonUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.time.OffsetDateTime; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -70,7 +65,6 @@ public class RPSessionHandler implements DBWSessionHandler { String userName = request.getHeader(RPAuthProvider.X_USER); String roles = request.getHeader(RPAuthProvider.X_ROLE); List userRoles = roles == null ? Collections.emptyList() : List.of(roles.split("\\|")); - SMSession authSession; if (userName != null) { try { Map credentials = new HashMap<>(); @@ -79,39 +73,18 @@ public class RPSessionHandler implements DBWSessionHandler { sessionParameters.put(SMConstants.SESSION_PARAM_TRUSTED_USER_ROLES, userRoles); Map userCredentials = authProviderExternal.authExternalUser( webSession.getProgressMonitor(), sessionParameters, credentials); + String currentSmSessionId = webSession.getUser() == null ? null : webSession.getUserContext().getSmSessionId(); try { SMAuthInfo smAuthInfo = securityController.authenticate( webSession.getSessionId(), - webSession.getUserContext().getSmSessionId(), + currentSmSessionId, sessionParameters, WebSession.CB_SESSION_TYPE, authProvider.getId(), null, userCredentials); - webSession.updateSMAuthInfo(smAuthInfo); + new WebSessionAuthProcessor(webSession, smAuthInfo, false).authenticateSession(); } catch (SMException e) { log.debug("Error during user authentication", e); throw e; } - WebUser user = webSession.getUser(); - DBWUserIdentity userIdentity = authProviderExternal.getUserIdentity( - webSession.getProgressMonitor(), sessionParameters, credentials); - - if (CommonUtils.isEmpty(user.getDisplayName())) { - user.setDisplayName(userIdentity.getDisplayName()); - } - authSession = authProviderExternal.openSession( - webSession.getProgressMonitor(), - webSession, - sessionParameters, - userCredentials); - - WebAuthInfo authInfo = new WebAuthInfo( - webSession, - user, - authProvider, - userIdentity, - authSession, - OffsetDateTime.now()); - authInfo.setMessage("Authenticated with " + authProvider.getLabel() + " provider"); - webSession.addAuthInfo(authInfo); } catch (Exception e) { throw new DBWebException("Error", e); }