Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Config propertyValueDescription
provisioner.pspng_oneprod.provisionerNameOne prod LDAP flatFriendly provisioner name for configId: pspng_oneprod   In this case its the same
provisioner.pspng_oneprod.classedu.internet2.middleware.grouper.app.ldapProvisioning.LdapSyncProvisioner class.  All LDAP provisioners have this value
provisioner.pspng_oneprod.ldapExternalSystemConfigIdoneProdAdConfig ID of the LDAP external system to provision to
provisioner.pspng_oneprod.ldapProvisioningTypegroupMembershipsCan be groupMemberships (group objects with an attribute of users), or userAttributes (user objects with an attribute of groups)
provisioner.pspng_oneprod.subjectSourcesToProvisionpennpersonOnly provision subjects in this sourceId
provisioner.pspng_oneprod.groupSearchBaseDnOU=Grouper,OU=365Groups,DC=one,DC=upenn,DC=eduWhen searching groups in LDAP use this baseDN
provisioner.pspng_oneprod.userSearchBaseDnDC=one,DC=upenn,DC=eduWhen searching for users in LDAP use this baseDN
provisioner.pspng_oneprod.common.entityLink.memberToId2${targetEntity.retrieveAttributeValue('dn')}Cache the user DN in database
provisioner.pspng_oneprod.common.groupLink.groupToId2${targetGroup.retrieveAttributeValue('dn')}Cache the group DN in database
provisioner.pspng_oneprod.grouperToTargetTranslationMembership.scriptCount11 membership translation
provisioner.pspng_oneprod.grouperToTargetTranslationMembership.0.script


Code Block
${if (!grouperUtil.isBlank(gcGrouperSyncMember.getMemberToId2())) { 
    grouperTargetGroup.addAttributeValueForMembership('member', gcGrouperSyncMember.getMemberToId2());
  }
}


If there is a user DN, then put that in the group "member" multivalued attribute
provisioner.pspng_oneprod.grouperToTargetTranslationEntity.scriptCount2
provisioner.pspng_oneprod.grouperToTargetTranslationEntity.0.script${grouperTargetEntity.assignAttributeValue('employeeID',  grouperProvisioningEntity.getSubjectId())}
provisioner.pspng_oneprod.grouperToTargetTranslationEntity.1.script${grouperTargetEntity.assignAttributeValue('dn', gcGrouperSyncMember.getMemberToId2() )}
provisioner.pspng_oneprod.grouperToTargetTranslationGroup.scriptCount23Two group translations
provisioner.pspng_oneprod.grouperToTargetTranslationGroup.0.script


Code Block
${grouperTargetGroup.assignAttributeValue('gidNumber', grouperProvisioningGroup.getIdIndex(); }


First group script.  Put the idIndex number into the gidNumber attribute in the group in ldap
provisioner.pspng_oneprod.grouperToTargetTranslationGroup.1.script 


Code Block
${grouperTargetGroup.assignAttributeValue('dn', 'cn=' + grouperProvisioningGroup.getName() + ',OU=Grouper,OU=365Groups,DC=one,DC=upenn,DC=edu'); }


Second group script, assign the cached dn to the dn attribute
provisioner.pspng_oneprod.grouperToTargetTranslationGroup.2.script


Code Block
${grouperTargetGroup.setId(grouperProvisioningGroup.getName()); }


This target DAO needs an ID set for groups, this is the primary key of the groups table
provisioner.pspng_oneprod.groupTargetIdAttributegidNumberLinking groups (knowing which ones to compare) from target to grouper is done with the gidNumber attribute
provisioner.pspng_oneprod.entityTargetIdAttributeemployeeIDLink entities (knowing which ones to compare) from target to grouper, done with employeeID attribute
provisioner.pspng_oneprod.grouperToTargetTranslationGroupCreateOnly.scriptCount3Three translations to run when creating groups
provisioner.pspng_oneprod.grouperToTargetTranslationGroupCreateOnly.0.script


Code Block
${grouperTargetGroup.assignAttributeValue('dn', 'cn=' + grouperProvisioningGroup.getName() 
+ ',OU=Grouper,OU=365Groups,DC=one,DC=upenn,DC=edu'); }


Make a flat DN where all groups are in an OU and the cn is the group name fully qualified.  Note in my grouper there is a rule to keep extensions alphanumeric
provisioner.pspng_oneprod.grouperToTargetTranslationGroupCreateOnly.1.script


Code Block
${grouperTargetGroup.assignAttributeValue('cn', grouperProvisioningGroup.getName()); }


Set the CN to be the group name fully qualified
provisioner.pspng_oneprod.grouperToTargetTranslationGroupCreateOnly.2.script


Code Block
${grouperTargetGroup.assignAttributeValue('objectClass', grouperUtil.toSet('group')); }	


object class is group (multivalued with one value)
provisioner.pspng_oneprod.groupSearchAllFilter

objectclass=groupwhen searching for all groups, use this filter
provisioner.pspng_oneprod.userSearchAllFilteremployeeID=*when searching for all users use this filter
provisioner.pspng_oneprod.userSearchFilter


Code Block
employeeID=${targetEntity.retrieveAttributeValue('employeeID')}


when searching one user, this is filter
provisioner.pspng_oneprod.groupSearchFilter


Code Block
(&(objectclass=group) (gidNumber=${targetGroup.retrieveAttributeValue('gidNumber')}))


when searching one group, this is filter
provisioner.pspng_oneprod.userSearchAttributesdnwe dont need much when searching users, just dn
provisioner.pspng_oneprod.groupSearchAttributesdn,gidNumberattributes for groups to retrieve
provisioner.pspng_oneprod.createEntitiesfalsedont create users
provisioner.pspng_oneprod.deleteEntitiesfalsedont delete users
provisioner.pspng_oneprod.createGroupstrueyes create missing groups
provisioner.pspng_oneprod.deleteGroupstrueyes delete groups which shouldnt be there
provisioner.pspng_oneprod.groupAttributeNameForMembershipsmemberattribute to put users in

...