...
<customDir> : le répertoire des custom de eSup.
Etape 1 : Description
Pour faciliter l'intégration, les sources ont été packagées sous forme de jar via un projet maven et sont disponibles sur le repository du RECIA. Donc la récupération des jar sera automatique en suivant les étapes décrites après.
...
- Affichage et navigation dans l'arborescence des groupes grouper et listing de leurs membres possible via le groupManager, les groupes sont aussi visible dans le permissionManager et le channelManager.
Etape 2 : Intégration au portail Esup 3.2.4
La compilation
- Ajout d'un repository
Bloc de code cp <esupSrc>/uPortal_rel-3.2.4/pom.xml <customDir>/uPortal/
...
Pour des raisons de praticité ces sources ont été intégrées sous forme de module au projet maven du groupStore ESCO.
Prise en compte des groupes grouper par le portail
- 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/ |
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<?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>
|
Configuration de Grouper
il est nécessaire de placer les fichiers de configuration de grouper, pour faire cela il vous faudra récupérer les fichiers suivants dans le répertoire conf de l'api-grouper (normalement sur l machine où grouper est installé):
...
| 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 |
Etape 3 : Adaptation des sources uPortal
Patch du gestionnaire de groupes d'uPortal
| Balise Wiki |
|---|
L'utilisation de ":" comme séparateur dans le nommage des groupes dans Grouper pose un problème au gestionnaire groupes d' uPortal. Ce problème a déjà été reporté dans le \[Jira de uPortal\|https://issues.jasig.org/browse/UP-2994\] Bill Brown a déjà proposé un patch \[https://issues.jasig.org/secure/attachment/11917/rel-3-2-patches.patch\|https://issues.jasig.org/secure/attachment/11917/rel-3-2-patches.patch\]. |
Pour ce faire, j'ai tout simplement modifié les fichiers source de uPortal avec les différences décrites dans le fichier patch.
Patch des sources du portail liés à l'intégration du groupStore ESCO
Afin de pouvoir intégrer correctement les groupes grouper à la façon RECIA il est nécessaire de modifier quelques classes du portail, d'une part pour éviter des problèmes de blocage lors de la remontées des groupes et de leur membres quand il commence à y en avoir beaucoup (cas du contexte RECIA, rencontré à partir de 6000-7000 groupes).
...
| Bloc de code | ||
|---|---|---|
| ||
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 remplit ce vecteur en remontant la hierarchie recursivement
> 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.
> */
> 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());
> }
> }
|
Etape 4 : Initialisation et déploiement
Et pour finir : ant init deploy
...