Uploaded image for project: 'Crowd Data Center'
  1. Crowd Data Center
  2. CWD-4174

Gracefully handle errors when syncing with LDAP directories containing CNF attributes

    XMLWordPrintable

Details

    • Our product teams collect and evaluate feedback from a number of different sources. To learn more about how we use customer feedback in the planning process, check out our new feature policy.

    Description

      Crowd throws an error when syncing with LDAP directories containing CNF attributes.

      [atlassian.crowd.directory.DbCachingDirectoryPoller] Error occurred while refreshing the cache for directory [ XXXXX ].
      org.springframework.ldap.InvalidNameException: cn=XXXXXXXXXXXXX
      cnf:XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX,ou=XXXXX,ou=XXXX,dc=XXXXX,dc=XXXXXX: [LDAP: error code 34 - 0000208F: NameErr: DSID-031001F7, problem 2006 (BAD_NAME), data 8349
      

      According to this Microsoft KB:

      Active Directory supports multimaster replication of directory objects between all domain controllers in the domain. When replication of objects results in name conflicts (two objects have the same name within the same container), the system automatically renames one of these accounts to a unique name. For example, object ABC is renamed to be CNF:guid, where "" represents a reserved character, "CNF" is a constant that indicates a conflict resolution, and "guid" represents a printable representation of the objectGuid attribute value.

      So the CNF is created when there is a conflict in the replication of the domain controllers and there are duplicated objects.

      Crowd should gracefully handle this error.

      NOTE this also propagates to other Atlassian Apps that uses Crowd embedded such as JIRA and Confluence.

      Workaround

      I can see two options in this situation:

      1) Ask the LDAP administrator to remove the duplicated groups or users from the LDAP and make sure there are no other conflicts before syncing.

      2) Create a filter for the users and groups objects to avoid syncing with objects that have cnf attributes.

      Should become something like:
      
      (&(objectClass=group)(!(cnf:*)))
      
      OR 
      
      (&(objectCategory=Group)(!(cn=*cnf:*)))
      

      Check here for additional details on LDAP filters.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              rgadami Rodrigo Girardi Adami
              Votes:
              29 Vote for this issue
              Watchers:
              33 Start watching this issue

              Dates

                Created:
                Updated: