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.
Info

Le GIP RECIA n'utilise plus ce type de groupe store et utilise uniquement le SmartLdapGroupStore

 

Note d'installation pour l'utilisation des groupes Grouper dans le portail esup 3.2.4 via le GroupStore ESCO du RECIA.

Sommaire

conventions :

<esupSrc> : le répertoire du package du portail eSup

...

ajouter les lignes suivantes dans la liste des repositories défini, entre le repository jasig-3rd-party et sonatype-nexus-snapshots par exemple (ligne 66)

Bloc de code

 <repository>
            <id>Recia</id>
            <name>esco repo</name>
            <url>http://www.esco-portail.org/nexus/content/repositories/public/</url>
            <releases><enabled>true</enabled></releases>
            <snapshots><enabled>false</enabled></snapshots>
        </repository>

...

ajouter les lignes suivantes dans la liste des dependencies, juste avant le commentaire <!-  esup dependencies ->

Bloc de code

<!-- esco dependencies -->
    <dependency>
      <groupId>org.esco.grouper</groupId>
      <artifactId>esco-grouper-portal-groupManager</artifactId>
      <version>0.0.3-grouper-1.6.3</version>
      <exclusions>
        <exclusion>
           <groupId>org.springframework</groupId>
           <artifactId>spring</artifactId>
        </exclusion>
        <exclusion>
           <groupId>net.sf.ehcache</groupId>
           <artifactId>ehcache</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
        <groupId>edu.internet2.middleware.subject.provider</groupId>
        <artifactId>ldap-source-adapter</artifactId>
        <version>0.0.3-grouper-1.6.3</version>
        <exclusions>
        <exclusion>
           <groupId>org.springframework</groupId>
           <artifactId>spring</artifactId>
        </exclusion>
        <exclusion>
           <groupId>net.sf.ehcache</groupId>
           <artifactId>ehcache</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

...

  • Fichier à adapter
Bloc de code

cp <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/resources/properties/groups/compositeGroupServices.xml <customDir>/uPortal/uportal-impl/src/main/resources/properties/groups/
  • Ajouter le service pour le groupStore ESCO en ajoutant cette définition :
Bloc de code
xml
xml

<\!-\- ESCO-Grouper service to use Gouper groups \-->
<service>
  <name>ESCO-GROUPER</name>
  <service_factory>org.esco.portal.groups.grouper.ESCOReferenceIndividualGroupServiceFactory</service_factory>
  <entity_store_factory>org.esco.portal.groups.grouper.EntityStoreFactory</entity_store_factory>
  <group_store_factory>org.esco.portal.groups.grouper.EntityGroupStoreFactory</group_store_factory>
  <entity_searcher_factory>org.esco.portal.groups.grouper.EntitySearcherFactory</entity_searcher_factory>
  <internally_managed>false</internally_managed>
  <caching_enabled>true</caching_enabled>
</service>

  • Modifier le service du groupStore "local" ainsi
Bloc de code
xml
xml

<service>
  <name>local</name>
  <service_factory>org.esco.portal.groups.grouper.ESCOReferenceIndividualGroupServiceFactory</service_factory>
  <entity_store_factory>org.jasig.portal.groups.ReferenceEntityStoreFactory</entity_store_factory>
  <group_store_factory>org.esco.portal.groups.grouper.ESCOReferenceEntityGroupStoreFactory</group_store_factory>
  <entity_searcher_factory>org.jasig.portal.groups.ReferenceEntitySearcherFactory</entity_searcher_factory>
  <internally_managed>true</internally_managed>
  <caching_enabled>true</caching_enabled>
</service>

...

définir le fichier <customDir>/uPortal/uportal-impl/src/main/resources/properties/groups/esco-GroupLoad.xml

Bloc de code
xml
xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>

   <comment>
      Properties used to define how the the Grouper groups should be loaded
      in the native uPortal groups.
   </comment>

   <!-- Duration validity, in seconds, for the Grouper requests. -->
   <entry key="grouper.requests.cache.duration">25</entry>

   <!--
        Defines the grouper groups to load in uPortal groups.
        keys denote a uPortal group name and values are semicolon separated
        lists of grouper stems. The group loaded are the root groups
        in the stems.

    For instance, all groups in the stem esco:admin that are not member of another group
        are loaded in the Portal Administrator group:
    <entry key="Portal Administrators">esco:admin</entry>
    -->
    <entry key="Administrateurs Portail">esco:admin:central</entry>
    <entry key="Tout le monde">esco:Etablissements;esco:Applications</entry>
    <entry key="Proprietaires de fragment">esco:admin:esco-lo</entry>
</properties>

...

*Si vous avez décidé d'installer le module ldap-source-adapter
il vous faudra configurer le fichier sources.xml selon cet exemple :

Bloc de code
xml
xml

<?xml version="1.0" encoding="utf-8"?>

<!--
  LdapSourceAdapter configuration
-->

<sources>

  ...


  <source adapterClass="edu.internet2.middleware.subject.provider.LdapSourceAdapter">
    <id>uwpds</id>
    <name>UW PDS</name>
    <type>person</type>

    <!-- Note that most of the ldap configuration is in the properties file
         The filename can be a file in your classpath or an absolute pathname
      -->

    <init-param>
      <param-name>ldapProperties_file</param-name>
      <param-value>ldap.properties</param-value>
    </init-param>


     <init-param>
      <param-name>SubjectID_AttributeType</param-name>
      <param-value>uwRegID</param-value>
    </init-param>
    <init-param>
      <param-name>Name_AttributeType</param-name>
      <param-value>uwNetID</param-value>
    </init-param>
    <init-param>
      <param-name>Description_AttributeType</param-name>
      <param-value>displayName</param-value>
    </init-param>

    <search>
        <searchType>searchSubject</searchType>
        <param>
            <param-name>filter</param-name>
            <param-value>
                (&amp;(uwRegID=%TERM%)(objectclass=uwPerson))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>
                SUBTREE_SCOPE
            </param-value>
        </param>
        <param>
            <param-name>base</param-name>
            <param-value>
            </param-value>
        </param>

    </search>
    <search>
        <searchType>searchSubjectByIdentifier</searchType>
        <param>
            <param-name>filter</param-name>
            <param-value>
                (&amp;(|(uwnetID=%TERM%)(uwStudentID=%TERM%))(objectclass=uwPerson))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>
                SUBTREE_SCOPE
            </param-value>
        </param>
        <param>
            <param-name>base</param-name>
            <param-value>
            </param-value>
        </param>
    </search>

    <!-- use the firstlastfilter to allow: last, first lookup -->
    <search>
       <searchType>search</searchType>
         <param>
            <param-name>filter</param-name>
            <param-value>
                 (&amp;(|(uwNetID=%TERM%)(sn=%TERM%))(uwNetId=*)(objectclass=uwPerson)))
            </param-value>
        </param>
         <param>
            <param-name>firstlastfilter</param-name>
            <param-value>
     (&amp;(uwPersonRegisteredSurname=%LAST%)(uwPersonRegisteredFirstMiddle=%FIRST%*)(uwnetid=*)(objectClass=uwPerson))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>
                SUBTREE_SCOPE
            </param-value>
        </param>
         <param>
            <param-name>base</param-name>
            <param-value>
            </param-value>
        </param>
    </search>
    ///Attributes you would like to display when doing a search
    <attribute>uwNetID</attribute>
    <attribute>uwEWPName</attribute>
    <attribute>uwSWPName</attribute>
    <attribute>uwEWPDept1</attribute>

  </source>

</sources>

côté RECIA nous avons juste modifié ces paramètres par rapport au fichier sources.xml original et personnalisé de grouper :

Bloc de code
xml
xml

....
<source adapterClass="edu.internet2.middleware.subject.provider.LdapSourceAdapter">
    <id>esco:ldap</id>
    <name>JNDI Source Adapter esco:ldap</name>
    <type>person</type>

    <!-- Note that most of the ldap configuration is in the properties file
         The filename can be a file in your classpath or an absolute pathname
    -->

    <init-param>
      <param-name>ldapProperties_file</param-name>
      <param-value>ldap.properties</param-value>
    </init-param>

    <init-param>
      <param-name>Multiple_Results</param-name>
      <param-value>false</param-value>
    </init-param>
....

...

et ajouter un fichier ldap.properties avec cet exemple de conf :

Bloc de code

# ldap source adapter properties
#
# for a complete list of properties see:
#      http://code.google.com/p/vt-middleware/wiki/vtldap#Configuration_Properties
#
#


edu.vt.middleware.ldap.ldapUrl=ldap://pds.example.edu:389
edu.vt.middleware.ldap.base=dc=example,dc=edu
edu.vt.middleware.ldap.searchScope=SUBTREE

# authn if simple
edu.vt.middleware.ldap.serviceUser=cn=admin,dc=example,dc=edu
edu.vt.middleware.ldap.serviceCredential=admin_password

# authn for sasl external (certificates)
#edu.vt.middleware.ldap.authtype=EXTERNAL
#edu.vt.middleware.ldap.tls=true
#edu.vt.middleware.ldap.serviceUser=cn=admin.example.edu
# these to use PEM format cert and key
#pemCaFile=/path/to/ca.pem
#pemCertFile=/path/to/cert.pem
#pemKeyFile=/path/to/key.pem

# pooling options
edu.vt.middleware.ldap.pool.minPoolSize = 2
edu.vt.middleware.ldap.pool.maxPoolSize = 5

...

Recopier les fichiers à éditer

Bloc de code

mkdir -p <customDir>/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/
mkdir <customDir>/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/wrappers/
cp <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/CGroupsManager.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/
cp <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/GroupsManagerXML.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/
cp <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/wrappers/GroupWrapper.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/wrappers/

...

Bloc de code
titlediff <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/CGroupsManager.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/CGroupsManager.java

65,74c65
<        // ---------------------------------
<        // -- Modif ESCO - A. Deman 10/2008
<        // ---------------------------------
<        // Pour eviter de charger systematiquement
<        // tous les groupes.
<        // L'appell à la méthode init a été
<        // ajoutée dans les accesseurs de cette
<        // classe qui ne l'avaient pa déjà.
<
<       //init();
---
>       init();
102,109c93
<               // ---------------------------------
<             // -- Modif ESCO - J. Gribonvald 07/2011
<             // ---------------------------------
<             // Pour eviter de charger systematiquement
<             // tous les groupes et leurs membre
<           // sur le groupe everyone
<           // à l'accès des canaux comme le permissionManager.
<               /*Iterator allgroups = everyone.getAllMembers();
---
>             Iterator allgroups = everyone.getAllMembers();
122,126c106
<             }*/
<           // ---------------------------------
<             // -- Modif ESCO - J. Gribonvald 07/2011
<             // ---------------------------------
<           // --- Fin modif.
---
>             }
375c366
<     init();
---
>       init();
393,400c384
<        // --------------------------------
<        // Modif ESCO - A. Deman - 10/2008
<        // --------------------------------
<        // Ajout de l'appel à init()
<        // supprimé dans le constructeur.
<        init();
<        // --- Fin modif.
<     return  (String)activities.get(token);
---
>       return  (String)activities.get(token);
418,425d401
<     // --------------------------------
<       // Modif ESCO - A. Deman - 10/2008
<       // --------------------------------
<       // Ajout de l'appel à init()
<       // supprimé dans le constructeur.
<       init();
<       // --- Fin modif.
<

Bloc de code
titlediff <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/GroupsManagerXML.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/GroupsManagerXML.java

239,242c239
< //      ========= Modification ESCO ==============
< //      Used to handle Grouper groups.
< //      if (hasMembers) {
< //      =========================================
---
>       if (hasMembers) {
251c248
< //      } // Modification ESCO
---
>       }
Bloc de code
titlediff <esupSrc>/uPortal_rel-3.2.4/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/wrappers/GroupWrapper.java <customDir>/uPortal/uportal-impl/src/main/java/org/jasig/portal/channels/groupsmanager/wrappers/GroupWrapper.java

239,242c239
< //      ========= Modification ESCO ==============
< //      Used to handle Grouper groups.
< //      if (hasMembers) {
< //      =========================================
---
>       if (hasMembers) {
251c248
< //      } // Modification ESCO
---
>       }
  • Si utilisation du WS esup des groupes
Bloc de code

cp <updateSrc>/uPortal/uportal-impl/src/main/java/org/esupportail/portal/ws/groups/PortalGroups.java <customDir>/uPortal/uportal-impl/src/main/java/org/esupportail/portal/ws/groups/PortalGroups.java

...

Bloc de code
titlediff <updateSrc>uPortal/uportal-impl/src/main/java/org/esupportail/portal/ws/groups/PortalGroups.java <customDir>uPortal/uportal-impl/src/main/java/org/esupportail/portal/ws/groups/PortalGroups.java

35a36
> import org.esco.portal.groups.grouper.ESCOEntityGroupImpl;
284,285c285,290
<     				// on remplit ce vecteur en remontant la hierarchie recursivement
<     				getRecurContainingGroups(egi, groups, v);
---
> 					// on appelle une méthode spécifique optimal pour les groupes grouper
> 					if (egi instanceof ESCOEntityGroupImpl) {
> 						getESCORecurContaininGroups(egi,v);
> 					} else {
> 						getRecurContainingGroups(egi, groups, v);
> 					}
364,365c369,383
<
<
---
>
>  	/**
> 	* Même méthode que la précédente mais spécifique aux groupes esco. Méthode optimale pour obtenir les groupes parents !
> 	*/
>    	private void getESCORecurContaininGroups(IEntityGroup egi, Vector v) {
>     	String[] list = egi.getKey().split(":");
>         StringBuffer group = new StringBuffer();
>         for (String current : list) {
>             if (group.length()>0) {
>                 group.append(":");
>             }
>             group.append(current);
>             v.add(group.toString());
>         }
> 	}

...