Details
-
Suggestion
-
Resolution: Fixed
-
None
Description
Environment
- Microsoft Active Directory
- Two or more directories defined in Crowd, each with Incremental Sync enabled
- Each directory has a Base DN of OU=Users,DC=example,DC=com
- Each directory has an empty Group DN (i.e, groups can come from anywhere below the base DN, and are available to both directories)
- The first directory has a UserDN set to OU=Finance
- The second directory has a UserDN set to OU=Marketing
- A user, test exists in Finance
- A group, SomeGroup exists in the Base DN, and is available to both directories
- The test user is a member of this group
Steps to reproduce
- Sync the directories - the test user will appear in the directory pointing to Finance
- Move the test user to the Marketing OU
- Sync the directories again
Expected Results
- The membership for SomeGroup should be present in the second directory (that points to Marketing)
Actual Results
- The membership for SomeGroup is not present in either directory
Investigation
An incremental sync against Active Directory checks the uSNChanged attribute of each object. If the object has not changed, it is not updated in an AD Sync. When a user is moved, there isn't an update to the group directly to point to that user's new location. AD is doing under-the-hood changes to that groups' membership that does not trigger an update to uSNChanged.
Impact
The loss of memberships can be painful to diagnose and is unexpected in this configuration.
Is this a bug? / Workarounds
No, because Crowd is working from what AD provides. Performing a full synchronisation, or updating the group (then performing an incremental sync) will produce the required results. This only needs to be done once after the move, subsequent incremental syncs will function correctly.
What is the suggested enhancement?
Provide an option in Crowd for it to always re-evaluate group memberships during an incremental sync. While this may be a performance hit (and it should be labelled as such) we should provide the option to ensure memberships are consistent and correct after users are moved in the directory.