Explorar el Código

AMBARI-6838. Admin view: LDAP sync doesn't work when group contains users in upper case.

Siddharth Wagle hace 11 años
padre
commit
f2114d8c9e

+ 5 - 3
ambari-server/src/main/java/org/apache/ambari/server/security/authorization/AmbariLdapDataPopulator.java

@@ -227,13 +227,15 @@ public class AmbariLdapDataPopulator {
         if (!user.isLdapUser()) {
           users.setUserLdap(externalMember);
         }
-        internalUsers.remove(externalMember);
+        if (!internalMembers.containsKey(externalMember)) {
+          users.addMemberToGroup(groupName, externalMember);
+        }
         internalMembers.remove(externalMember);
+        internalUsers.remove(externalMember);
       } else {
         users.createUser(externalMember, "", true, false);
         users.setUserLdap(externalMember);
       }
-      users.addMemberToGroup(groupName, externalMember);
     }
     for (Entry<String, User> userToBeUnsynced: internalMembers.entrySet()) {
       final User user = userToBeUnsynced.getValue();
@@ -331,7 +333,7 @@ public class AmbariLdapDataPopulator {
         final DirContextAdapter adapter  = (DirContextAdapter) ctx;
         for (String uniqueMember: adapter.getStringAttributes(ldapServerProperties.getGroupMembershipAttr())) {
           final DirContextAdapter userAdapter = (DirContextAdapter) ldapTemplate.lookup(uniqueMember);
-          members.add(userAdapter.getStringAttribute(ldapServerProperties.getUsernameAttribute().toLowerCase()));
+          members.add(userAdapter.getStringAttribute(ldapServerProperties.getUsernameAttribute()).toLowerCase());
         }
         return null;
       }