You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by ja...@apache.org on 2015/08/20 20:22:57 UTC
[3/3] karaf git commit: KARAF-3946 - do not count leading and
trailing white space in role mapping
KARAF-3946 - do not count leading and trailing white space in role mapping
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/4eddb09b
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/4eddb09b
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/4eddb09b
Branch: refs/heads/master
Commit: 4eddb09bc3e2762e75239801ec243ccbf5c2641a
Parents: eaca837
Author: Jonathan Anstey <ja...@gmail.com>
Authored: Thu Aug 20 15:52:03 2015 -0230
Committer: Jonathan Anstey <ja...@gmail.com>
Committed: Thu Aug 20 15:52:38 2015 -0230
----------------------------------------------------------------------
.../jaas/modules/ldap/LDAPLoginModule.java | 4 +-
.../jaas/modules/ldap/LdapLoginModuleTest.java | 47 +++++++++++++++++++-
2 files changed, 48 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/4eddb09b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/ldap/LDAPLoginModule.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/ldap/LDAPLoginModule.java b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/ldap/LDAPLoginModule.java
index 607d02c..e115684 100644
--- a/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/ldap/LDAPLoginModule.java
+++ b/jaas/modules/src/main/java/org/apache/karaf/jaas/modules/ldap/LDAPLoginModule.java
@@ -145,14 +145,14 @@ public class LDAPLoginModule extends AbstractKarafLoginModule {
String[] mappings = option.split(";");
for (String mapping : mappings) {
String[] map = mapping.split("=", 2);
- String ldapRole = map[0];
+ String ldapRole = map[0].trim();
String[] karafRoles = map[1].split(",");
if (roleMapping.get(ldapRole) == null) {
roleMapping.put(ldapRole, new HashSet<String>());
}
final Set<String> karafRolesSet = roleMapping.get(ldapRole);
for (String karafRole : karafRoles) {
- karafRolesSet.add(karafRole);
+ karafRolesSet.add(karafRole.trim());
}
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/4eddb09b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java
----------------------------------------------------------------------
diff --git a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java
index b913f65..3207a95 100644
--- a/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java
+++ b/jaas/modules/src/test/java/org/apache/karaf/jaas/modules/ldap/LdapLoginModuleTest.java
@@ -344,5 +344,50 @@ public class LdapLoginModuleTest extends AbstractLdapTestUnit {
assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
}
+ @Test
+ public void testRoleMappingParsing() throws Exception {
+ Properties options = ldapLoginModuleOptions();
+ options.put(LDAPLoginModule.ROLE_MAPPING, "admin = karaf, test; admin = another");
+ LDAPLoginModule module = new LDAPLoginModule();
+ CallbackHandler cb = new CallbackHandler() {
+ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
+ for (Callback cb : callbacks) {
+ if (cb instanceof NameCallback) {
+ ((NameCallback) cb).setName("admin");
+ } else if (cb instanceof PasswordCallback) {
+ ((PasswordCallback) cb).setPassword("admin123".toCharArray());
+ }
+ }
+ }
+ };
+ Subject subject = new Subject();
+ module.initialize(subject, cb, null, options);
+
+ assertEquals("Precondition", 0, subject.getPrincipals().size());
+ assertTrue(module.login());
+ assertTrue(module.commit());
+
+ assertEquals(4, subject.getPrincipals().size());
+
+ final List<String> roles = new ArrayList<String>(Arrays.asList("karaf", "test", "another"));
+
+ boolean foundUser = false;
+ boolean foundRole = false;
+ for (Principal pr : subject.getPrincipals()) {
+ if (pr instanceof UserPrincipal) {
+ assertEquals("admin", pr.getName());
+ foundUser = true;
+ } else if (pr instanceof RolePrincipal) {
+ assertTrue(roles.remove(pr.getName()));
+ foundRole = true;
+ }
+ }
+ assertTrue(foundUser);
+ assertTrue(foundRole);
+ assertTrue(roles.isEmpty());
+
+ assertTrue(module.logout());
+ assertEquals("Principals should be gone as the user has logged out", 0, subject.getPrincipals().size());
+ }
}
-
\ No newline at end of file
+