DS-1906: Adds configurable option to reconvert shibboleth attributes.

This commit is contained in:
Pascal-Nicolas Becker
2014-02-07 18:03:24 +01:00
parent 93fc28277e
commit 7e6b805e32
2 changed files with 23 additions and 0 deletions

View File

@@ -26,6 +26,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.logging.Level;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -1094,6 +1095,22 @@ public class ShibAuthentication implements AuthenticationMethod
value = request.getHeader(name.toLowerCase()); value = request.getHeader(name.toLowerCase());
if (StringUtils.isEmpty(value)) if (StringUtils.isEmpty(value))
value = request.getHeader(name.toUpperCase()); value = request.getHeader(name.toUpperCase());
boolean reconvertAttributes =
ConfigurationManager.getBooleanProperty(
"authentication-shibboleth",
"reconvert.attributes",
false);
if (reconvertAttributes)
{
try {
value = new String(value.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException ex) {
log.warn("Failed to reconvert shibboleth attribute ("
+ name + ").", ex);
}
}
return value; return value;
} }

View File

@@ -137,6 +137,12 @@ lastname-header = SHIB-SURNAME
# If the eperson metadata field is not found, should it be automatically created? # If the eperson metadata field is not found, should it be automatically created?
eperson.metadata.autocreate = true; eperson.metadata.autocreate = true;
# Shibboleth attributes are by default UTF-8 encoded. Some servlet container
# automatically converts the attributes from ISO-8859-1 (latin-1) to UTF-8.
# As the attributes already were UTF-8 encoded it may be necessary to reconvert
# them. If you detect problems with special characters in shibboleth attributes
# set this to true (default to false).
reconvert.attributes = false
## ##
## Role-based Groups: ## Role-based Groups: