Pages enfant
  • Grouper - Store SmartLdapGroupStore (esup 4)

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.

Cette page est destinée aux intégrateurs.

Références

Documentation officielle pour la configuration du SmartLdapGroupStore dans uPortal : https://wiki.jasig.org/display/UPM40/SmartLdapGroupStore

Contexte

Le gestionnaire de grouper Grouper fourni par uPortal est jugé non pertinent (performance, tolérance aux pannes). La solution proposée est d'utiliser le SmartLdapGroupStore adapté à la façon dont Grouper exporte des groupes dans le LDAP.

Données utilisées

Dans les paragraphes suivants, la configuration est présentée pour un annuaire LDAP configuré comme suit :

...

Cette configuration est décrite dans le paragraphe Configuration du SmartLdapGroupStore avec un dn dans l'entrée de personne.

Prise en compte de l'attribut d’appartenance par le portail

  • Le portail doit être en mesure d'analyser les appartenances aux groupes. Il faut ajouter l'attribut qui contient les groupes de l'utilisateurs (isMemberOf / memberOf) à la liste des attributs pris en compte.

...

Bloc de code
languagehtml/xml
<bean id="uPortalLdapAttributeSource" class="org.jasig.services.persondir.support.ldap.LdapPersonAttributeDao">
  <property name="contextSource" ref="defaultLdapContext" />
  <property name="baseDN" value="${ldap.baseDn}" />
  <property name="baseDN" value="" />
  <property name="queryAttributeMapping">
    <map>
      <entry key="username" value="${ldap.uidAttr}"/>
    </map>
  </property>

  <property name="resultAttributeMapping">
    <map>
      <entry key="eduPersonPrimaryAffiliation"> <value>eduPersonPrimaryAffiliation</value></entry> 
      <entry key="eduPersonAffiliation"> <value>eduPersonAffiliation</value></entry> 
      <entry key="cn"> <value>cn</value></entry>
      <entry key="description"> <value>description</value></entry>
      <entry key="displayName"> <value>displayName</value></entry>
      <entry key="facsimileTelephoneNumber"> <value>facsimileTelephoneNumber</value></entry>
      <entry key="givenName"> <value>givenName</value></entry>
      <entry key="mail"> <value>mail</value></entry>
      <entry key="postalAddress"> <value>postalAddress</value></entry>
      <entry key="sn"> <value>sn</value></entry>
      <entry key="telephoneNumber"> <value>telephoneNumber</value></entry>
      <entry key="${ldap.uidAttr}"> 
        <set>
          <value>${ldap.uidAttr}</value>
          <value>username</value>
          <value>user.login.id</value>
        </set>
      </entry>
      <entry key="supannCodeINE"> <value>supannCodeINE</value></entry>
      <entry key="supannEtuId"> <value>supannEtuId</value></entry>
      <entry key="supannEmpId"> <value>supannEmpId</value></entry>
      <entry key="eduPersonAffiliation"> <value>eduPersonAffiliation</value></entry>
      <entry key="supannaffectation"> <value>supannaffectation</value></entry>
      <entry key="objectclass"> <value>objectclass</value></entry>
      <entry key="supannorganisme"> <value>supannorganisme</value></entry>
    
      <!-- Add attribute to determine if user belongs to a group. -->
      <entry key="isMemberOf"> <value>isMemberOf</value></entry>
    </map>
  </property>
</bean>

 

Activation du SmartLdapGroupStore

  • Activer le SmartLdapGroupStore dans uportal-war/src/main/resources/properties/groups/compositeGroupServices.xml en dé-commentant le service smartldap :
Bloc de code
languagehtml/xml
<service>
    <name>smartldap</name>
    <service_factory>org.jasig.portal.groups.ReferenceIndividualGroupServiceFactory</service_factory>
    <entity_store_factory>org.jasig.portal.groups.smartldap.SmartLdapEntityStore$Factory</entity_store_factory>
    <group_store_factory>org.jasig.portal.groups.smartldap.SmartLdapGroupStore$Factory</group_store_factory>
	<entity_searcher_factory>org.jasig.portal.groups.smartldap.SmartLdapEntitySearcher$Factory</entity_searcher_factory>
    <internally_managed>false</internally_managed>
    <caching_enabled>true</caching_enabled>
  </service>

Description de la configuration du SmartLdapGroupStore

La configuration du SmartLdapGroupStore s'effectue dans le fichier  "uportal-war/src/main/resources/properties/groups/SmartLdapGroupStoreConfig.xml"

...

Le nom du groupe est utilisé pour l'affichage. La clé du groupe est utilisée pour appeller le groupe. La clé est utilisée pour déterminer si une personne fait partie d'un groupe (en comparant avec l'attribut LDAP définit sous la propriété memberOfAttributeName).

Configuration du SmartLdapGroupStore avec un cn dans l'entrée de personne

La configuration attendue est la suivante :

...

  1. Recherche de tous les groupes
  2. Pour chaque groupe
    1. Extraire l'attribut qui servira clé soit le cn (keyAttributeName)
    2. Extraire l'attribut qui servira de nom soit le cn (groupNameAttributeName)
    3. Extraire la liste des membres en interrogeant l'attribut member (membershipAttributeName)
    4. Pour chaque membre
      1. Vérifier s'il s'agit d'un groupe en vérifiant que l'expression matche l'expression cn=(.*),ou=groups,dc=univ,dc=fr (childGroupKeyRegex)
      2. S'il s'agit bien d'un groupe, extraire la clé en utilisant le groupe dont l'index est 1 (keyIndexMatchingGroup). Cela renvoie donc le cn du groupe.
      3. Insérer le sous-groupe en tant qu'enfant du groupe

 

Configuration du SmartLdapGroupStore avec un dn dans l'entrée de personne


La configuration attendue est la suivante :

...

  1. Recherche de tous les groupes
  2. Pour chaque groupe
    1. Extraire l'attribut qui servira clé soit le dn en l'absence de keyAttributeName
    2. Extraire l'attribut qui servira de nom soit le cn (groupNameAttributeName)
    3. Extraire la liste des membres soit les member (membershipAttributeName)
    4. Pour chaque membre
      1. Vérifier s'il s'agit d'un groupe en vérifiant que l'expression matche l'expression cn=(.*),ou=groups,dc=univ,dc=fr (childGroupKeyRegex)
      2. S'il s'agit bien d'un groupe, extraire la clé en utilisant le groupe dont l'index est 0 (keyIndexMatchingGroup). Cela renvoie donc le dn du groupe.
      3. Insérer le sous-groupe en tant qu'enfant du groupe

Prise en compte du SmartLdapGroupStore dans les groupes uPortal

  • Ajouter les groupes smartLDAP à votre arborescence des groupes. Par exemple, on peut modifier le fichier Everyone.group-membership.xml comme suit :

...

  • On peut aussi vérifier les groupes importés via l'outil de gestion des groupes du portail.

Appel d'un groupe provenant du SmartLdapGroupStore

 

On cible un groupe en le désignant par son nom (et non par la clé). Par exemple, dans un fichier de channel, on écrira :

...