Repository: cxf Updated Branches: refs/heads/master e00159949 -> af100a919
[CXF-6372] Distinct claim values (if no delimiter is set) Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/39ac2b4e Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/39ac2b4e Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/39ac2b4e Branch: refs/heads/master Commit: 39ac2b4eb848be0142d4f3e3da2bb6eb00ea55e5 Parents: e001599 Author: Jan Bernhardt <[email protected]> Authored: Tue Apr 28 06:49:37 2015 +0200 Committer: Jan Bernhardt <[email protected]> Committed: Tue Apr 28 08:58:55 2015 +0200 ---------------------------------------------------------------------- .../apache/cxf/sts/claims/LdapClaimsHandler.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/39ac2b4e/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java ---------------------------------------------------------------------- diff --git a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java index 9572edc..5c2c7fa 100644 --- a/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java +++ b/services/sts/sts-core/src/main/java/org/apache/cxf/sts/claims/LdapClaimsHandler.java @@ -52,7 +52,7 @@ public class LdapClaimsHandler implements ClaimsHandler, RealmSupport { private Map<String, String> claimMapping; private String userBaseDn; private List<String> userBaseDNs; - private String delimiter = ";"; + private String delimiter; private boolean x500FilterEnabled = true; private String objectClass = "person"; private String userNameAttribute = "cn"; @@ -240,7 +240,6 @@ public class LdapClaimsHandler implements ClaimsHandler, RealmSupport { c.setClaimType(claimType); c.setPrincipal(principal); - StringBuilder claimValue = new StringBuilder(); try { NamingEnumeration<?> list = (NamingEnumeration<?>)attr.getAll(); while (list.hasMore()) { @@ -257,9 +256,16 @@ public class LdapClaimsHandler implements ClaimsHandler, RealmSupport { //Ignore, not X500 compliant thus use the whole string as the value } } - claimValue.append(itemValue); - if (list.hasMore()) { - claimValue.append(this.getDelimiter()); + if (delimiter != null) { + StringBuilder claimValue = new StringBuilder(); + claimValue.append(itemValue); + if (list.hasMore()) { + claimValue.append(this.getDelimiter()); + } else if (claimValue.length() > 0) { + c.addValue(claimValue.toString()); + } + } else { + c.addValue(itemValue); } } else if (obj instanceof byte[]) { // Just store byte[] @@ -274,9 +280,6 @@ public class LdapClaimsHandler implements ClaimsHandler, RealmSupport { LOG.warning("Failed to read value of LDAP attribute '" + ldapAttribute + "'"); } - if (claimValue.length() > 0) { - c.addValue(claimValue.toString()); - } // c.setIssuer(issuer); // c.setOriginalIssuer(originalIssuer); // c.setNamespace(namespace);
