Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

       B- pour les membres des groupes pour lesquelsle lesquels le champ multivalué "ustlRole" de notre ldap doit être mis à jour dans la branche ou=people

A- groupes Avancement des Enseignants-chercheurs :

A savoir : dans Grouper, j'ai déclaré un type de groupe "GroupLDAP" qui indique si le groupe Grouper est à publier dans la branche ou=groups du ldap. Il porte un attribut "PubLDAPGroup" de type string et dont les valeurs possibles, par convention, sont "AEC" pour Avancement des Enseignants-chercheurs ou "GOF" pour GroupOfUrls. J'ai également créé un type de groupe "AEC" (Avancement des enseignants-chercheurs) qui apporte un attribut "ustlPresident". Enfin, j'ai également créé un type de groupe "supannGroupe" qui apporte 3 attributs : supannGroupeAdminDN, supannGroupeDateFin, supannGroupeLecteurDN

...

Ensuite, ce fichier va déclarer quels sont les attributs à publier dans le ldap pour ce groupe et comment obtenir sa valeur en donnant la référence contenue dans le fichier ldappc-resolver.xml pour savoir quelle valeur précisément sera écrite dans le ldap. Il y a 2 types d'attribut publié : un attribut n'ayant qu'une seule valeur "<attribute.." et les attributs qui représentent plusieurs valeurs "<references.." :

Bloc de code
<attribute name="objectClass" ref="objectClassAEC" />
<attribute name="cnLDAP" ref="cnLDAP1"/>
<attribute name="description" />
<attribute name="owner" ref="ownerScript" />
<attribute name="ustlPresident" ref="ustlPresidentScript"/>
<attribute name="supannGroupeDateFin" />
<references name="member" emptyValue="" >
    <reference ref="members-lille1:ldap" toObject="member" />
</references>
<references name="supannGroupeAdminDN" emptyValue="" >
    <reference ref="admin" toObject="member" />
</references>

   3. ldappc-resolver.xml

Il y a 2 types d'attribut publié : un attribut n'ayant qu'une seule valeur "<attribute.." et les attributs qui représentent plusieurs valeurs "<references..".

La valeur donnée au paramètre "name" représente soit le nom du champs ldap (exemple ici "ObjectClass") soit le nom de l'attribut du groupe dans Grouper (par exemple ici "cnLDAP"). La valeur du paramètre "ref" donne l'id du <resolver:AttributeDefinition id=...> déclaré dans le fichier ldappc-resolver.xml, c'est lui qui déclare quelle est la valeur précise à mettre dans le champ ldap et aussi le nom du champ ldap (dans sourceAttributeID) s'il n'est pas le même que celui passé dans le paramètre "name".

Par exemple, ici, objectClass est le nom de l'attribut ldap à renseigner, objectClassAEC est l'id du <resolver:AttributeDefinition..> que vous allez retrouver dans le fichier ldappc-resolver.xml

cnLDAP est le nom de l'attribut du groupe qui stocke la valeur à passer au ldap, cnLDAP1 est l'id du <resolver:AttributeDefinition..> que vous allez retrouver dans le fichier ldappc-resolver.xml et vous verrez plus bas dans le fichier ldappc-resolver.xml que l'attribut ldap à renseigner avec cette valeur est le cn (indiqué dans l'attribut "sourceAttributeID" du <resolver:AttributeDefinition..>)

B- champ multivalué "ustlRole", branche ou=people du ldap

A savoir : les membres des groupes Grouper qui sont de type "PAGSRole" vont être affecté de la valeur de l'attribut "ustlRole" du groupe Grouper dans leur attribut ldap "ustlRole" :

Bloc de code

<object id="member">
      <identifier ref="member-dn" baseId="${peopleOU}">
        <identifyingAttribute name="objectClass" value="eduPerson" />
      </identifier>
         <attribute name="ustlRole" ref="memberIsMemberOf" />
</object>

L'id "member" sera utilisé au moment de l'ordre de publication dans le ldap :

Bloc de code

bin/gsh.sh -ldappcng -bulkSync -entityName member

La partie "identifier" permet d'indiquer quels sont les personnes qui vont être concernés par cette publication : quelles personnes côté Grouper (ref "member-dn") mais aussi quelles personnes côté ldap groupes ldap : 

  • ref="member-dn" renvoie à la partie concernée dans le fichier ldappc-resolver.xml voir ci-après, c'est lui qui va expliciter le lien entre la personne côté Grouper et la personne ldap ou=people. 
  • identifyingAttribute indique quels sont les personnes ldap à sélectionner, ici, ceux dont l'objectClass est égal à "eduPerson".

Ensuite, l'attribut à modifier dans le ldap : ici "ustlRole" est indiqué ainsi que comment obtenir la valeur (ref="memberIsMemberOf à détailler dans le fichier ldappc-resolver.xml ci-après).

  3. ldappc-resolver.xml

Je détaille uniquement les parties référencées ci-dessus.

       A- groupes Avancement des Enseignants-chercheurs :

Bloc de code

<resolver:AttributeDefinition id="group-dnAEC" xsi:type="ldappc:LdapDnPSOIdentifier"
                    structure="${DNstructure}" sourceAttributeID="cnLDAP" rdnAttributeName="cn" base="${groupsOU}">
   <resolver:Dependency ref="GroupDataConnectorAEC" />
</resolver:AttributeDefinition>

Selon le type d'AttributeDefinition, vous n'aurez pas les mêmes paramètres à renseigner. Ici, nous indiquons que nous définissons la référence à group-dnAEC (cf fichier ldappcng.xml), qu'il s'agit de l'attribut "cnLDAP" du groupe Grouper à prendre en compte pour alimenter l'attribut "cn" de la branche ou=groups du ldap (cf ldappc.properties). <resolver:Dependency..> indique quels groupes Grouper et quels membres de ces groupes vont être pris en compte :

Bloc de code

<resolver:DataConnector id="GroupDataConnectorAEC" xsi:type="grouper:GroupDataConnector">
        <grouper:GroupFilter xsi:type="grouper:ExactAttribute" name="PubLDAPGroup" value="AEC" />
    <grouper:Attribute id="members:immediate" />
    <grouper:Attribute id="members:immediate:supannGroupeAdminDN" />
</resolver:DataConnector>

Ici, j'indique que je ne prends que les groupes Grouper dont l'attribut nommé "PubLDAPGroup" a la valeur "AEC" et je vais utiliser la liste de ses membres direct ("members:immediate") et la liste des membres contenus dans l'attribut de type list "supannGroupeAdminDN".

Ensuite, je vais prendre l'exemple sur 2 attributs à renseigner pour ce groupe :

Bloc de code

<resolver:AttributeDefinition id="objectClassAEC" xsi:type="ad:Simple" sourceAttributeID="objectClass">
    <resolver:Dependency ref="StaticDataConnectorAEC" />
</resolver:AttributeDefinition>

Ici, j'indique que l'attribut référencé objectClassAEC dans le ldappcng.xml consiste à mettre à jour l'attribut ldap "objectClass" avec des valeurs statiques indiquées dans "StaticDataConnecterAEC" :

Bloc de code

<resolver:DataConnector id="StaticDataConnectorAEC" xsi:type="dc:Static">
    <dc:Attribute id="objectClass">
      <dc:Value>ustlComAdHocAECGroupe</dc:Value>
      <dc:Value>ustlPrivGroupe</dc:Value>
      <dc:Value>groupOfNames</dc:Value>
      <dc:Value>ustlGroupe</dc:Value>
      <dc:Value>supannGroupe</dc:Value>
    </dc:Attribute>
</resolver:DataConnector>

Ici, les groupes ldap qui seront publiés dans le ldap à partir des groupes Grouper dont l'attribut "PubLDAPGroup" est égal à "AEC" auront tous les objectClass cités : ustlComAdHocAECGroupe,ustlPrivGroupe, groupOfNames, ustlGroupe, supannGroupe.

Un autre attribut mentionné est le cn du groupe ldap. Ici, il est calculé à partir de la valeur de l'attribut "cnLDAP1" déclaré dans ldappcg.xml et donc de l'attribut "cnLDAP" du groupe Grouper.

Bloc de code

<resolver:AttributeDefinition id="cnLDAP1" xsi:type="ad:Simple" sourceAttributeID="cn">
    <resolver:Dependency ref="GroupDataConnectorAEC" />
</resolver:AttributeDefinition>

   B- champ multivalué "ustlRole", branche ou=people du ldap

Etablir le lien entre la personne membre du groupe Grouper et la personne présente dans le ldap branche ou=people :

Bloc de code

<resolver:AttributeDefinition id="member-dn" xsi:type="ad:Simple" sourceAttributeID="psoID" >
    <resolver:Dependency ref="SpmlDataConnector" />
</resolver:AttributeDefinition>

<resolver:DataConnector id="SpmlDataConnector" provider="ldap-provider"
    xsi:type="ldappc:SPMLDataConnector" scope="subTree" base="${peopleOU}" returnData="identifier">
    <resolver:Dependency ref="MemberDataConnector" />
    <ldappc:FilterTemplate>(uid=${id.get(0)})</ldappc:FilterTemplate>
</resolver:DataConnector>

Ici, c'est l'identifiant de la personne membre du groupe Grouper qui sera en relation avec l'attribut "uid" du ldap dans la branche ou=people.

Cela ne sera réalisé que pour les membres des groupes Grouper dont l'attribut "PubLDAPPeople" a la valeur "ustlRole".

Bloc de code

<resolver:DataConnector id="MemberDataConnector" xsi:type="grouper:MemberDataConnector">
        <grouper:GroupFilter xsi:type="grouper:ExactAttribute" name="PubLDAPPeople" value="ustlRole"/>
  <grouper:Attribute id="groups" />
</resolver:DataConnector>

Ensuite, je définis comment obtenir la valeur à mettre dans l'attribut ldap (déclaré dans ldappcng.xml):

Bloc de code

<resolver:AttributeDefinition id="memberIsMemberOf" xsi:type="grouper:Group" sourceAttributeID="groups">
    <resolver:Dependency ref="MemberDataConnector" />
    <grouper:Attribute id="ustlRole" />
</resolver:AttributeDefinition>

Ici, la valeur à mettre dans l'attribut ldap est celle qui se trouve dans l'attribut "ustlRole" du groupe Groupervoir fichier joint.

Quelques scripts

  1. Publier dans la branche ou=people du ldap et garder une copie de ce qui se fait

...