CB-5415. Added full name header for RP (#2795)

* CB-5415. Added full name header for RP

* CB-5415. Refactor after review

* CB-5415. Refactor after review

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
This commit is contained in:
DenisSinelnikov
2024-07-25 11:22:31 +00:00
committed by GitHub
co-authored by Daria Marutkina
parent 081b0eaead
commit 5be8582bfd
5 changed files with 13 additions and 0 deletions
@@ -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";
}
@@ -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);
}
@@ -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 {
@@ -34,6 +34,7 @@
<property id="team-delimiter" label="Team delimiter symbol" type="string" description="Team delimiter symbol, default: |"/>
<property id="first-name-header" label="First name header" type="string" description="First name header name"/>
<property id="last-name-header" label="Last name header" type="string" description="Last name header name"/>
<property id="full-name-header" label="Full name header" type="string" description="Full name header name"/>
<property id="role-header" label="Role header" type="string" description="Role header name" requiredFeatures="distributed"/>
</propertyGroup>
</configuration>
@@ -49,6 +49,7 @@ public class RPAuthProvider implements SMAuthProviderExternal<SMSession>, 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<SMSession>, SMSign
Map<String, String> 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<SMSession>, 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,