Skip to content
Browse files

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

  • Loading branch information...
1 parent 93fc282 commit 7e6b805e32c5e4749d12c4f9d891644ae1d8ab7e @pnbecker pnbecker committed Feb 7, 2014
View
17 dspace-api/src/main/java/org/dspace/authenticate/ShibAuthentication.java
@@ -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 (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;
}
View
6 dspace/config/modules/authentication-shibboleth.cfg
@@ -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 7e6b805

Please sign in to comment.
Something went wrong with that request. Please try again.