diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/RPConstants.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/RPConstants.java index ec933d3ca2..0341ab59a7 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/RPConstants.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/RPConstants.java @@ -22,6 +22,7 @@ interface RPConstants { String PARAM_TEAM = "team-header"; String PARAM_FIRST_NAME = "first-name-header"; String PARAM_LAST_NAME = "last-name-header"; + String PARAM_FULL_NAME = "full-name-header"; String PARAM_ROLE_NAME = "role-header"; String PARAM_TEAM_DELIMITER = "team-delimiter"; } 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 e2bb777865..62277e7e89 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 @@ -97,6 +97,7 @@ public class RPSessionHandler implements DBWSessionHandler { String role = request.getHeader(resolveParam(paramConfigMap.get(RPConstants.PARAM_ROLE_NAME), RPAuthProvider.X_ROLE_TE)); String firstName = request.getHeader(resolveParam(paramConfigMap.get(RPConstants.PARAM_FIRST_NAME), RPAuthProvider.X_FIRST_NAME)); String lastName = request.getHeader(resolveParam(paramConfigMap.get(RPConstants.PARAM_LAST_NAME), RPAuthProvider.X_LAST_NAME)); + String fullName = request.getHeader(resolveParam(paramConfigMap.get(RPConstants.PARAM_FULL_NAME), RPAuthProvider.X_FULL_NAME)); String logoutUrl = Objects.requireNonNull(configuration).getParameter(RPConstants.PARAM_LOGOUT_URL); String teamDelimiter = JSONUtils.getString(configuration.getParameters(), RPConstants.PARAM_TEAM_DELIMITER, "\\|"); @@ -111,6 +112,9 @@ public class RPSessionHandler implements DBWSessionHandler { if (!CommonUtils.isEmpty(lastName)) { credentials.put(SMStandardMeta.META_LAST_NAME, lastName); } + if (!CommonUtils.isEmpty(fullName)) { + credentials.put("fullName", fullName); + } if (CommonUtils.isNotEmpty(logoutUrl)) { credentials.put("logoutUrl", logoutUrl); } diff --git a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/ReverseProxyConfigurator.java b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/ReverseProxyConfigurator.java index ee415c0ffc..430ff16a77 100644 --- a/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/ReverseProxyConfigurator.java +++ b/server/bundles/io.cloudbeaver.service.auth/src/io/cloudbeaver/service/auth/ReverseProxyConfigurator.java @@ -77,6 +77,7 @@ public class ReverseProxyConfigurator implements DBWServiceServerConfigurator { parameters.put(RPConstants.PARAM_TEAM, RPAuthProvider.X_TEAM); parameters.put(RPConstants.PARAM_FIRST_NAME, RPAuthProvider.X_FIRST_NAME); parameters.put(RPConstants.PARAM_LAST_NAME, RPAuthProvider.X_LAST_NAME); + parameters.put(RPConstants.PARAM_FULL_NAME, RPAuthProvider.X_FULL_NAME); smReverseProxyProviderConfiguration.setParameters(parameters); authApplication.getAuthConfiguration().addAuthProviderConfiguration(smReverseProxyProviderConfiguration ); try { diff --git a/server/bundles/io.cloudbeaver.service.security/plugin.xml b/server/bundles/io.cloudbeaver.service.security/plugin.xml index 2a079301e4..e9ef310594 100644 --- a/server/bundles/io.cloudbeaver.service.security/plugin.xml +++ b/server/bundles/io.cloudbeaver.service.security/plugin.xml @@ -34,6 +34,7 @@ + diff --git a/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/rp/RPAuthProvider.java b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/rp/RPAuthProvider.java index 14106ec3cb..0c895857d8 100644 --- a/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/rp/RPAuthProvider.java +++ b/server/bundles/io.cloudbeaver.service.security/src/io/cloudbeaver/auth/provider/rp/RPAuthProvider.java @@ -49,6 +49,7 @@ public class RPAuthProvider implements SMAuthProviderExternal, SMSign public static final String X_ROLE_TE = "X-Role-TE"; public static final String X_FIRST_NAME = "X-First-name"; public static final String X_LAST_NAME = "X-Last-name"; + public static final String X_FULL_NAME = "X-Full-name"; public static final String AUTH_PROVIDER = "reverseProxy"; public static final String LOGOUT_URL = "logout-url"; @@ -82,6 +83,7 @@ public class RPAuthProvider implements SMAuthProviderExternal, SMSign Map userMeta = new HashMap<>(); String firstName = JSONUtils.getString(authParameters, SMStandardMeta.META_FIRST_NAME); String lastName = JSONUtils.getString(authParameters, SMStandardMeta.META_LAST_NAME); + String fullName = JSONUtils.getString(authParameters, "fullName"); if (CommonUtils.isNotEmpty(firstName)) { nameBuilder.append(firstName); userMeta.put(SMStandardMeta.META_FIRST_NAME, firstName); @@ -92,6 +94,10 @@ public class RPAuthProvider implements SMAuthProviderExternal, SMSign userMeta.put(SMStandardMeta.META_LAST_NAME, lastName); } + if (CommonUtils.isNotEmpty(fullName)) { + nameBuilder = new StringBuilder(fullName); + } + return new DBWUserIdentity( userName, nameBuilder.length() > 0 ? nameBuilder.toString() : userName,