Permalink
Browse files

Merge pull request #469 from tuub/DS-1906

DS-1906: Adds configurable option to reconvert shibboleth attributes.
  • Loading branch information...
2 parents aa18bfd + c6016c8 commit ec068344914f8eeb6d43a17a207629c433cfdfc4 Hardy Pottinger committed Jul 3, 2014
@@ -26,6 +26,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.logging.Level;
import javax.servlet.http.HttpServletResponse;
@@ -1094,6 +1095,22 @@ private String findAttribute(HttpServletRequest request, String name) {
value = request.getHeader(name.toLowerCase());
if (StringUtils.isEmpty(value))
value = request.getHeader(name.toUpperCase());
+
+ boolean reconvertAttributes =
+ ConfigurationManager.getBooleanProperty(
+ "authentication-shibboleth",
+ "reconvert.attributes",
+ false);
+
+ if (!StringUtils.isEmpty(value) && 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;
}
@@ -137,6 +137,12 @@ lastname-header = SHIB-SURNAME
# If the eperson metadata field is not found, should it be automatically created?
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:

0 comments on commit ec06834

Please sign in to comment.