Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

Expand Down Expand Up @@ -578,7 +579,7 @@ protected EPerson findEPerson(Context context, HttpServletRequest request) throw

// 2) Second, look for an email header.
if (eperson == null && emailHeader != null) {
String email = findSingleAttribute(request, emailHeader);
String email = getEmailAcceptedOrNull(findSingleAttribute(request, emailHeader));
if (StringUtils.isEmpty(email) && Objects.nonNull(clarinVerificationToken)) {
email = clarinVerificationToken.getEmail();
}
Expand Down Expand Up @@ -694,7 +695,7 @@ protected EPerson registerNewEPerson(Context context, HttpServletRequest request

// Header values
String netid = Util.formatNetId(findSingleAttribute(request, netidHeader), org);
String email = findSingleAttribute(request, emailHeader);
String email = getEmailAcceptedOrNull(findSingleAttribute(request, emailHeader));
String fname = Headers.updateValueByCharset(findSingleAttribute(request, fnameHeader));
String lname = Headers.updateValueByCharset(findSingleAttribute(request, lnameHeader));

Expand Down Expand Up @@ -816,7 +817,7 @@ protected void updateEPerson(Context context, HttpServletRequest request, EPerso
String lnameHeader = configurationService.getProperty("authentication-shibboleth.lastname-header");

String netid = Util.formatNetId(findSingleAttribute(request, netidHeader), shibheaders.get_idp());
String email = findSingleAttribute(request, emailHeader);
String email = getEmailAcceptedOrNull(findSingleAttribute(request, emailHeader));
String fname = Headers.updateValueByCharset(findSingleAttribute(request, fnameHeader));
String lname = Headers.updateValueByCharset(findSingleAttribute(request, lnameHeader));

Expand Down Expand Up @@ -1171,7 +1172,12 @@ protected String findAttribute(HttpServletRequest request, String name) {

if (!StringUtils.isEmpty(value) && reconvertAttributes) {
try {
value = new String(value.getBytes("ISO-8859-1"), "UTF-8");
String inputEncoding = configurationService.getProperty("shibboleth.name.conversion.inputEncoding",
"ISO-8859-1");
String outputEncoding = configurationService.getProperty("shibboleth.name.conversion.outputEncoding",
"UTF-8");

value = new String(value.getBytes(inputEncoding), outputEncoding);
} catch (UnsupportedEncodingException ex) {
log.warn("Failed to reconvert shibboleth attribute ("
+ name + ").", ex);
Expand Down Expand Up @@ -1324,5 +1330,13 @@ public boolean canChangePassword(Context context, EPerson ePerson, String curren
public boolean areSpecialGroupsApplicable(Context context, HttpServletRequest request) {
return true;
}

public String getEmailAcceptedOrNull(String email) {
// no whitespaces in mail
if (StringUtils.isEmpty(email) || Pattern.compile("\\s").matcher(email).find()) {
return null;
}
return email;
}
}