Skip to Content.
Sympa Menu

grouper-users - Re: [grouper-users] [PSPNG] Not deleting groups in LDAP

Subject: Grouper Users - Open Discussion List

List archive

Re: [grouper-users] [PSPNG] Not deleting groups in LDAP


Chronological Thread 
  • From: Yoann Delattre <>
  • To: "Bee-Lindgren, Bert" <>
  • Cc: "" <>
  • Subject: Re: [grouper-users] [PSPNG] Not deleting groups in LDAP
  • Date: Mon, 5 Feb 2018 10:33:33 +0100
  • Dkim-filter: OpenDKIM Filter v2.11.0 webmail.ac-lille.fr E94E8CEE07
  • Ironport-phdr: 9a23:eqs0fh9nRU2zJ/9uRHKM819IXTAuvvDOBiVQ1KB32+wcTK2v8tzYMVDF4r011RmVBdyds6oMotGVmpioYXYH75eFvSJKW713fDhBt/8rmRc9CtWOE0zxIa2iRSU7GMNfSA0tpCnjYgBaF8nkelLdvGC54yIMFRXjLwp1Ifn+FpLPg8it2O2+54Dfbx9UiDahfLh/MAi4oQLNu8cMnIBsMLwxyhzHontJf+RZ22ZlLk+Nkhj/+8m94odt/zxftPw9+cFAV776f7kjQrxDEDsmKWE169b1uhTFUACC+2ETUmQSkhpPHgjF8BT3VYr/vyfmquZw3jSRMNboRr4oRzut86ZrSAfpiCgZMT457HrXgdF0gK5CvR6tuwBzz4vSbYqINvRxY7ndcMsHS2RfUMZfVy9PDI2yYIQADeUOIf1VoJPhq1YUtxayGQehCeHpxzRVhnH2x6o60+E5HA7E2wwvBdQOsHLJp9v7KqgSVfq6zLXUzTXZcfxdxDDw6YjPch87p/GMW6h8ftfPxkkrDQzFkkmQqZb7MD6OzOsCr3GX7+5hVeKrj24otRt9oja1xso1jITCm4wbylfB9SpjwYY1I8W1SE99Yd64DpRQrSeaOJVqQs88WW1npjs1yqAetZ6/eygKx5snyADFa/CdbYeH/w/jWeCMKjl7nHJoYK+zihK9/ES61+HxUs253ExIoydBiNXAq20B2h/V58OaUPVy5F2h1iyK1w3L6uFLP0Q0la3DJpE73L49l4Afvl7fESPvnEX2jauWdkE69eSy5eTneK3qpp6aN4BqlgHzKrkil8iwDOgiLwQDW2yW9f6+2bDn50H1XahGg/4unqncqp/aJMAbpqCjAw9S14Yu8xa+DzC839Qem3kLNk9KdwyDj4fzJ1HOPOr4Aumkjlu2jDhn3vTGPrzlApXJMHfPirnhfaxl505G1AUz1cxf545TCrwZL/LzQEjxtMHADhAnKQy42vvnCM5j2YMEQmKCGauZMKLJsV+U/eIjPfOAZI4TuDbhNfcl/fjugmElmVMDZ6Wmw4YYaG3rVshhdg+zbHepptYHHWgQswx6BMbnkkHIGWpZamyuGagx63Q/CYSqAp3OQKiqgaDH0y6nE5ZWIG1KFwbfP23vctC1XP4Kbmq+L8tojiAeWPD1Wogo0xfouAL+wqZ7NOf88yZdsZPn0NUz6feFxkJ6ziB9E8nIizLFdGpzhG5dAmZuhK0=

Hello Bert,


thanks for your answer and your help :)


I set this lines in log4j.properties :


log4j.logger.edu.internet2.middleware.grouper.pspng=DEBUG
log4j.logger.edu.internet2.middleware.grouper.changeLog=DEBUG


and this is what i get in the log :


2018-02-05 10:17:50,033: [DefaultQuartzScheduler_Worker-1] DEBUG ChangeLogTempToEntity.processMembershipDelete(880) -  - Processing change: ChangeLogEntry: changeLogTypeId: '82b47b347a834450825cdce3795f280a', contextId: '112ef6ce7c3447e0a2aa5d3f09ef4b71', createdOnDb: '1517822220016000', hibernateVersionNumber: '-1', string01: 'db39f38333094a6fafb5f00f7a6c3c1b', string02: 'members', string03: 'cdupond', string04: 'ldapPerso', string05: 'immediate', string06: 'a8d8b1ce1bca4278a2a18b4f2f3f2d0d', string07: 'services:test', string08: '00b264a2fcff48a5a2c53caec921c4c7', string09: '80cc7f6e67374253ae0a0cde3b99b894', string11: 'cdupond'
2018-02-05 10:17:50,104: [DefaultQuartzScheduler_Worker-1] DEBUG ChangeLogTempToEntity.processMembershipDelete(880) -  - Processing change: ChangeLogEntry: changeLogTypeId: '82b47b347a834450825cdce3795f280a', contextId: '112ef6ce7c3447e0a2aa5d3f09ef4b71', createdOnDb: '1517822220038000', hibernateVersionNumber: '-1', string01: '3dbaae0a4efa4ea888e49def1d5ab608', string02: 'members', string03: '
ydupont2', string04: 'ldapPerso', string05: 'immediate', string06: 'a8d8b1ce1bca4278a2a18b4f2f3f2d0d', string07: 'services:test', string08: '14f6604a977f406fb2ffe18faed1374e', string09: '80cc7f6e67374253ae0a0cde3b99b894', string11: 'ydupont2'
2018-02-05 10:17:50,132: [DefaultQuartzScheduler_Worker-1] DEBUG ChangeLogTempToEntity.processPrivilegeDelete(982) -  - Processing change: ChangeLogEntry: changeLogTypeId: '710fdd8d82604e4787af9058465d345c', contextId: '112ef6ce7c3447e0a2aa5d3f09ef4b71', createdOnDb: '1517822220125000', hibernateVersionNumber: '-1', string01: '54821537ab6c4b8fbdc17021c4a56959', string02: 'admin', string03: '
ydupont2', string04: 'ldapPerso', string05: 'access', string06: 'group', string07: 'a8d8b1ce1bca4278a2a18b4f2f3f2d0d', string08: 'services:test', string09: '14f6604a977f406fb2ffe18faed1374e', string10: '395e9f04269f4e2e978caff68aa41498', string11: 'immediate'
2018-02-05 10:17:50,154: [DefaultQuartzScheduler_Worker-1] DEBUG ChangeLogTempToEntity.processGroupDelete(320) -  - Processing change: ChangeLogEntry: changeLogTypeId: '72b2df94eee047a7a6c0f29bf4509543', contextId: '112ef6ce7c3447e0a2aa5d3f09ef4b71', createdOnDb: '1517822220271000', hibernateVersionNumber: '-1', string01: 'a8d8b1ce1bca4278a2a18b4f2f3f2d0d', string02: 'services:test', string03: 'cbfa1ca0e04f4de39687b95d9c7a0556', string04: 'Services:test', string06: '100000022368'
2018-02-05 10:18:00,038: [DefaultQuartzScheduler_Worker-2] DEBUG RuleConsumer.processChangeLogEntries(199) -  - Processing event number 3922284, membership, deleteMembership
2018-02-05 10:18:00,046: [DefaultQuartzScheduler_Worker-2] DEBUG RuleConsumer.processChangeLogEntries(199) -  - Processing event number 3922285, membership, deleteMembership
2018-02-05 10:18:00,051: [DefaultQuartzScheduler_Worker-2] DEBUG RuleConsumer.processChangeLogEntries(199) -  - Processing event number 3922286, privilege, deletePrivilege
2018-02-05 10:18:00,051: [DefaultQuartzScheduler_Worker-2] DEBUG RuleConsumer.processChangeLogEntries(234) -  - Unsupported event privilege, deletePrivilege, 3922286
2018-02-05 10:18:00,051: [DefaultQuartzScheduler_Worker-2] DEBUG RuleConsumer.processChangeLogEntries(199) -  - Processing event number 3922287, group, deleteGroup
2018-02-05 10:18:00,051: [DefaultQuartzScheduler_Worker-2] DEBUG RuleConsumer.processChangeLogEntries(234) -  - Unsupported event group, deleteGroup, 3922287
2018-02-05 10:18:00,070: [DefaultQuartzScheduler_Worker-2] DEBUG ChangeLogHelper.processRecords(314) -  - consumerName: grouperRules, last sequence processed: 3922283, 0: number of records found to process: 4, 0: processed to record number: 3922287, totalRecordsProcessed: 4
2018-02-05 10:18:00,125: [DefaultQuartzScheduler_Worker-3] DEBUG PspChangelogConsumerShim.<init>(42) -  - Constructing PspngChangelogConsumerShim
2018-02-05 10:18:00,135: [DefaultQuartzScheduler_Worker-3] INFO  PspChangelogConsumerShim.processChangeLogEntries(52) -  - pspng_brancheGrouper: +processChangeLogEntries(4)
2018-02-05 10:18:00,136: [DefaultQuartzScheduler_Worker-3] INFO  Provisioner.flushCachesIfNecessary(1434) -  - pspng_brancheGrouper: Keeping caches in tact for provisioning batch
2018-02-05 10:18:00,136: [DefaultQuartzScheduler_Worker-3] DEBUG Provisioner.filterWorkItems(428) -  - Filtering provisioning batch of 4 items
2018-02-05 10:18:00,153: [DefaultQuartzScheduler_Worker-3] INFO  ProvisioningWorkItem.setStatus(143) -  - Work item handled: ProvisioningWorkItem[successful=true,msg=Ignoring work item because group is not provisioned,clog=clog #3922284 /
ChangeLog type: membership: deleteMembership,group=services:test,subject=cdupond@ldapPerso]
2018-02-05 10:18:00,154: [DefaultQuartzScheduler_Worker-3] INFO  ProvisioningWorkItem.setStatus(143) -  - Work item handled: ProvisioningWorkItem[successful=true,msg=Ignoring work item because group is not provisioned,clog=clog #3922285 /
ChangeLog type: membership: deleteMembership,group=services:test,subject=ydupont2@ldapPerso]
2018-02-05 10:18:00,154: [DefaultQuartzScheduler_Worker-3] DEBUG ProvisioningWorkItem.getGroupName(206) -  - Not a supported change for finding group (ChangeLog type: privilege: deletePrivilege is not GROUP_ADD, GROUP_DELETE, MEMBERSHIP_ADD, nor MEMBERSHIP_DELETE): 3922286
2018-02-05 10:18:00,154: [DefaultQuartzScheduler_Worker-3] INFO  ProvisioningWorkItem.setStatus(143) -  - Work item handled: ProvisioningWorkItem[successful=true,msg=Ignoring work item because group is not provisioned,clog=clog #3922287 /
ChangeLog type: group: deleteGroup,group=services:test]
2018-02-05 10:18:00,155: [DefaultQuartzScheduler_Worker-3] INFO  Provisioner.provisionBatchOfItems(1362) -  - pspng_brancheGrouper: 1 work items need to be processed further
2018-02-05 10:18:00,155: [DefaultQuartzScheduler_Worker-3] DEBUG Provisioner.startProvisioningBatch(455) -  - Starting provisioning batch of 1 items
2018-02-05 10:18:00,155: [DefaultQuartzScheduler_Worker-3] DEBUG ProvisioningWorkItem.getGroupName(206) -  - Not a supported change for finding group (ChangeLog type: privilege: deletePrivilege is not GROUP_ADD, GROUP_DELETE, MEMBERSHIP_ADD, nor MEMBERSHIP_DELETE): 3922286
2018-02-05 10:18:00,155: [DefaultQuartzScheduler_Worker-3] DEBUG Provisioner.prepareGroupCache(692) -  - Starting to cache group information for 0 items
2018-02-05 10:18:00,156: [DefaultQuartzScheduler_Worker-3] DEBUG Provisioner.prepareUserCache(609) -  - Starting to cache user information for 0 items
2018-02-05 10:18:00,156: [DefaultQuartzScheduler_Worker-3] DEBUG Provisioner.provisionItem(911) -  - Starting provisioning of item: ProvisioningWorkItem[clog=clog #3922286 / ChangeLog type: privilege: deletePrivilege]
2018-02-05 10:18:00,157: [DefaultQuartzScheduler_Worker-3] INFO  ProvisioningWorkItem.setStatus(143) -  - Work item handled: ProvisioningWorkItem[successful=true,msg=Nothing to do (not a supported change),clog=clog #3922286 / ChangeLog type: privilege: deletePrivilege]
2018-02-05 10:18:00,157: [DefaultQuartzScheduler_Worker-3] DEBUG LdapProvisioner.makeCoalescedLdapChanges(340) -  - pspng_brancheGrouper: Making coalescedLdapChanges
2018-02-05 10:18:00,157: [DefaultQuartzScheduler_Worker-3] DEBUG Provisioner.finishProvisioningBatch(485) -  - Done with provisining batch
2018-02-05 10:18:00,157: [DefaultQuartzScheduler_Worker-3] INFO  PspChangelogConsumerShim.processChangeLogEntries(113) -  - Provisioning summary:
2018-02-05 10:18:00,165: [DefaultQuartzScheduler_Worker-3] DEBUG ChangeLogHelper.processRecords(314) -  - consumerName: pspng_brancheGrouper, last sequence processed: 3922283, 0: number of records found to process: 4, 0: processed to record number: 3922287, totalRecordsProcessed: 4
2018-02-05 10:18:01,331: [pspng_brancheGrouper-FullSync-MessageReaderThread] DEBUG FullSyncProvisioner.thread_fullSyncMessageQueueReader(334) -  - pspng_brancheGrouper-FullSync message reader: requesting messages from queue pspng_full_sync_pspng_brancheGrouper
2018-02-05 10:18:01,332: [pspng_brancheGrouper-FullSync-MessageReaderThread] INFO  FullSyncProvisioner.thread_fullSyncMessageQueueReader(348) -  - pspng_brancheGrouper-FullSync message reader: no messages received
2018-02-05 10:18:04,023: [DefaultQuartzScheduler_Worker-4] INFO  EventLog.info(156) -  - [bd92bbb9b50445c6b5ce48cb772f6470,'GrouperSystem','application'] session: start (1ms)
2018-02-05 10:18:04,050: [DefaultQuartzScheduler_Worker-4] DEBUG ChangeLogHelper.processRecords(314) -  - consumerName: syncGroups, last sequence processed: 3922283, 0: number of records found to process: 4, 0: processed to record number:
3922287, totalRecordsProcessed: 4


Thanks,

Yoann


Le 03/02/2018 à 18:47, Bee-Lindgren, Bert a écrit :

Hello,


Here is what should be expected with group deletion:

1) Group deletion actions should be propagated to the ldap server regardless of the grouperIsAuthoritative setting. During this process, the following might be logged


If the query for point-in-time group information failed when getting ready to delete the group:

          workItem.markAsSkippedAndWarn("Ignoring group-deletion event because group information was not found in grouper");


If the group was not found in an ldap search   
      LOG.warn("Nothing to do: Unable to delete group {} because the group wasn't found on target system", grouperGroupInfo);

If the group was found by an ldap search
    LOG.info("Deleting group {} by deleting DN {}", grouperGroupInfo, dn);
   

2) If the grouperIsAuthoritative setting is true, then scheduled FullSyncs will include a "Group Cleanup" process: comparison of all the marked-for-provisioning groups in grouper with all the groups found by an allGroupsSearchFilter search on base groupSearchBaseDn. This process logs some of the following:

FYI, if Grouper is not authoritative, the FullSync schedule should log:
     LOG.warn("{}: Ignoring group-cleanup because grouper is not authoritative", getName());



The start of the Group Cleanup:
      LOG.info("{}: Starting Group Cleanup ({})", getName(), queueItem.reason);

Progress is logged at debug level:
    LOG.debug("Doing ldap search: <filter> / <base> / <attributes>",


After the group-list comparisons are done:
    LOG.info("{}: There are {} groups that we should delete", getName(), groupsToDelete.size());
    (This will log "There are 0 groups that we should delete" if everything is in sync)

For each extra group found in LDAP (that is not in Grouper or is not labeled for provisioning):
    LOG.info("{}: Deleting LDAP object: {}", ldapSystemName, dnToDelete);


The end of the Group Cleanup:
      LOG.info("{}: Group-cleanup done. Stats: {}", getName(), queueItem.stats);


3) When supportsEmptyGroups=false: The removal of the last member of a group should cause the ldap group to be deleted regardless of the grouperIsAuthoritative flag.


It seems clear that your experiences don't match these expectations, particularly in that you're seeing changelog-event-triggered group-deletion depend on the grouperIsAuthoritative setting. As listed above, there are several INFO-level messages logged during this processing. I don't see problems with your configuration.

Can you run with such logging enabled and forward it to me?


Sincerely,
  Bert Bee-Lindgren



From: on behalf of Yoann Delattre
Sent: Thursday, February 1, 2018 2:45 AM
To:
Subject: Re: [grouper-users] [PSPNG] Not deleting groups in LDAP
 

Hello !

anyone ?

Thanks !
Yoann


Le 18/12/2017 à 09:22, Yoann Delattre a écrit :

Hello everyone,

for summarise :

When grouperIsAuthoritative is set to true, a group deleted in Grouper are not deleted in LDAP.
No problem when i create groups or delete members : all this changes are provisioned correctly in the LDAP.

Has anyone ran into this issue?

Thanks,
Yoann.
Le 11/12/2017 à 16:02, Yoann Delattre a écrit :

grouperIsAuthoritative was set to true.
So i tried set it to false, and now it works...Strange :-/

maybe something wrong with my conf ?

changeLog.consumer.pspng_brancheGrouper.class = edu.internet2.middleware.grouper.pspng.PspChangelogConsumerShim
changeLog.consumer.pspng_brancheGrouper.type = edu.internet2.middleware.grouper.pspng.LdapGroupProvisioner
changeLog.consumer.pspng_brancheGrouper.quartzCron = 0 * * * * ?
changeLog.consumer.pspng_brancheGrouper.ldapPoolName = aclille
changeLog.consumer.pspng_brancheGrouper.memberAttributeName = uniqueMember
changeLog.consumer.pspng_brancheGrouper.memberAttributeValueFormat = ${ldapUser.getDn()}
changeLog.consumer.pspng_brancheGrouper.groupSearchBaseDn = ou=Grouper,ou=xxxxx,o=yyyy,c=zz
changeLog.consumer.pspng_brancheGrouper.allGroupsSearchFilter = objectclass=groupOfUniqueNames
changeLog.consumer.pspng_brancheGrouper.singleGroupSearchFilter = (&(objectclass=groupOfUniqueNames)(cn=${group.name}))
changeLog.consumer.pspng_brancheGrouper.groupSearchAttributes = cn,objectclass
changeLog.consumer.pspng_brancheGrouper.groupCreationLdifTemplate = dn: cn=${group.name}||cn: ${group.name}||objectclass: groupOfUniqueNames||objectclass: educationnationale
changeLog.consumer.pspng_brancheGrouper.userSearchBaseDn = ou=people,ou=xxxxx,o=yyyy,c=zz
changeLog.consumer.pspng_brancheGrouper.userSearchFilter = uid=${subject.id}
changeLog.consumer.pspng_brancheGrouper.grouperIsAuthoritative = false

Thanks for your help !

Yoann

Le 11/12/2017 à 15:18, Jeffrey Williams a écrit :
Hi Yoann,

My first thought was whether you had grouperIsAuthoritative set?

Should groups in the groupSearchBaseDn/allGroupSearchFilter be removed if they no longer exist in Grouper?

By default, it is set to FALSE, which sounds like the behavior you're experiencing.

On Mon, Dec 11, 2017 at 9:11 AM, Yoann Delattre <> wrote:

Hello everyone,

i have a problem with the PSPNG : a group deleted in Grouper are not deleted in LDAP.
It's weird because i have c

I get this in the log :

2017-12-11 11:39:00,045: [DefaultQuartzScheduler_Worker-9] INFO  ProvisioningWorkItem.setStatus(143) -  - Work item handled: ProvisioningWorkItem[successful=true,msg=Ignoring work item because group is not provisioned,clog=clog #3921904 / ChangeLog type: group: deleteGroup,group=test-pspng4:test-2]

Anyone encounter this issue ?

Thanks for your help,
Yoann

--




--
Jeffrey Williams, Identity Management Specialist
Identity Architecture, ITS
University of North Carolina at Greensboro
256-TECH (256-8324)







Archive powered by MHonArc 2.6.19.

Top of Page