Skip to content
Snippets Groups Projects
Commit 42c520d6 authored by Benjamin Sousa's avatar Benjamin Sousa
Browse files

Merge branch 'set_federated_username' into 'master'

Define userName variable distinct from eppn in federated mapper

This change is motivated by the need to set userName to a value other than default value of eppn for federated preauthenticated users.  The intended use case is UW Digital ID, where we plan to use SPVI as the username for the purposes of the RequestOnBehalfOfFilter.  

@paul.erickson @bkeen @npblair 

See merge request !16
parents ecc6a276 96c3622a
No related branches found
No related tags found
1 merge request!16Define userName variable distinct from eppn in federated mapper
......@@ -27,10 +27,10 @@ import java.util.Enumeration;
public class FederatedPreauthenticatedUserDetailsAttributeMapper implements PreauthenticatedUserDetailsAttributeMapper {
private String eppnHeader = "eppn";
private String pviHeader = "eduwisconsinspvi";
private String pviHeader = "eduWisconsinSPVI";
private String usernameHeader = "eppn";
private String fullNameHeader = "cn";
private String uddsHeader = "eduwisconsinudds";
private String uddsHeader = "eduWisconsinUDDS";
private String emailAddressHeader = "mail";
private String firstNameHeader = "givenName";
private String lastNameHeader = "sn";
......@@ -49,6 +49,7 @@ public class FederatedPreauthenticatedUserDetailsAttributeMapper implements Prea
*/
@Override
public UWUserDetails mapUser(HttpServletRequest request) {
logger.debug("enter mapUser, available headers: {}", request.getHeaderNames());
String eppn = request.getHeader(eppnHeader);
logger.debug("enter mapUser, eppnHeader {} was {}", eppnHeader, eppn);
if(StringUtils.isBlank(eppn)) {
......@@ -57,13 +58,15 @@ public class FederatedPreauthenticatedUserDetailsAttributeMapper implements Prea
}
String pvi = request.getHeader(pviHeader);
String cn = request.getHeader(fullNameHeader);
String userName = request.getHeader(usernameHeader);
Collection<String> uddsMembership = new ArrayList<>();
Enumeration<String> uddsHeaders = request.getHeaders(uddsHeader);
if(uddsHeaders != null) {
uddsMembership = Collections.list(uddsHeaders);
}
String email = request.getHeader(emailAddressHeader);
UWUserDetailsImpl result = new UWUserDetailsImpl(pvi, eppn, "", cn, email, uddsMembership);
UWUserDetailsImpl result = new UWUserDetailsImpl(pvi, userName, "", cn, email, uddsMembership);
result.setSource("edu.wisc.uwss.preauth.federation");
result.setEppn(eppn);
result.setFirstName(request.getHeader(firstNameHeader));
......
......@@ -35,10 +35,10 @@ public class FederatedPreauthenticatedUserDetailsAttributeMapperTest {
List<String> uddsMembership = Collections.singletonList("udds1234");
request.addHeader("eppn", eppn);
request.addHeader("eduwisconsinspvi", pvi);
request.addHeader("eduWisconsinSPVI", pvi);
request.addHeader("cn", name);
request.addHeader("mail", email);
request.addHeader("eduwisconsinudds", uddsMembership);
request.addHeader("eduWisconsinUDDS", uddsMembership);
request.addHeader("Shib-Identity-Provider", "https://logintest.wisc.edu/idp/shibboleth");
UWUserDetails result = federatedFilter.mapUser(request);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment