Recherche

Sommaire

Child pages
  • esup-ecm-uportal-groups

Ce plugin Nuxeo permet de retrouver les groupes EsupPortail/uPortal en tant que groupes Nuxeo.

Plus précisément il permet de connecter le WebService d'exposition des groupes EsupPortail/uPortal (packagé nativement avec les distributions EsupPortail) dans Nuxeo.

Avant propos : contexte

L'UNR RUNN travaille aujourd'hui à mettre en place un ENT EsupPortail mutualisé. Dans ce cadre, elle réfléchit à mettre en place dans le même temps un certain nombre de nouveaux services mutualisés intégrés à cet ENT.
La GED, au travers de Esup-Ecm (Nuxeo), fait partie de ces services, les possibilités récentes d'Esup-Ecm en terme d'authentification fédérée (shibboleth) ont notablement contribué à cela.

L'ENT de l'UNR RUNN se construit au mieux autour de la fédération d'identités pour l'authentification/identification. A court/moyen terme, cette identification shibboleth devrait également être complétée par un méta-annuaire permettant d'assurer un "service d'annuaire" aux différentes applications demandant cette fonctionnalité. A moyen/long terme, la question d'une gestion de groupes cohérente et fédérée se pose également, et il est fort probable là aussi que l'UNR RUNN adopte les solutions Esup autour de Grouper.

Aujourd'hui, en l'absence d'une solution telle que Grouper au niveau de l'UNR RUNN et pour pouvoir dès maintenant fonctionner, des groupes ont été constitués au niveau d'EsupPortail même. Ces groupes sont prioritairement des groupes "PAGS" dynamiques qui sont fonction d'une regexp sur les attributs utilisateurs, c'est à dire pour l'ENT de l'UNR RUNN, des attributs shibboleth.

Pour certains besoins, on a cependant dû créer des groupes locaux (où l'on a saisi manuellement chacun des membres), ces groupes correspondent en fait à des groupes de fonctionnement interne UNR (inter-établissement) que l'on ne retrouve pas dans les SI des établissement (sous quelle forme que ce soit) et que l'on ne peut donc pas retrouver au travers des attributs shibboleth.

On a donc souhaité retrouver ces mêmes groupes dans Esup-Ecm, et il nous paraissait dommageable de devoir les renseigner de nouveau, puis donc de devoir maintenir en parallèle ces groupes à la fois au niveau du gestionnaire de groupes d'EsupPortail et au niveau du gestionnaire de groupes d'Esup-Ecm .

Par rapport à nos stratégies de mise en place (EsupPortail est incontestablement le coeur de l'ENT et services satellitaires) et notre ENT (on a pris l'habitude de gérer les groupes locaux/UNR dans EsupPortail), nous avons travaillé à récupérer les groupes depuis EsupPortail vers EsupEcm (et non l'inverse).

Il en a donc découlé ce développement d'esup-ecm-uportal-groups qui devrait nous servir tant qu'une solution plus structurante (Grouper certainement donc) ne sera pas étudiée, adoptée puis mise en place.

Installation

Nous ne distribuons actuellement pas de jar, mais le plugin a été développé pour pouvoir le faire au besoin.

Récupération des sources

Nous vous proposons de récupérer les sources via subversion depuis https://subversion.cru.fr/esup-ecm/esup-ecm-uportal-groups/trunk

svn co https://subversion.cru.fr/esup-ecm/esup-ecm-uportal-groups/trunk esup-ecm-uportal-groups

Configurations

Ensuite, le seul fichier de configuration du module en lui même se situe ici : src/main/resources/OSGI-INF/uportal-ws-contrib.xml (ce fichier devrait pouvoir être externalisé su jar, nous n'avons pas réussi pour l'instant). Dans ce fichier, vous devez indiquer l'URL du WebService EsupPortail/uPortal, du type :https://dsi-2.univ-rouen.fr/uPortal/services/UportalService

Nous avons également développé un petit jeu de test de récupération des groupes, vous devriez pour que les tests passent (optionnel) modifier également le fichier java  src/test/java/org/esupportail/ecm/uportal/TestEsupPortalService.java : bonamvin@univ-rouen.fr est donné en dur, remplacez le par un identifiant d'un utilisateur uPortal étant affecté à au moins un groupe local.

Compilation - création du jar

mvn clean package

vous permet d'obtenir un target/esup-ecm-uportal-groups-5.4.0.jar

Si la phase de test échoue car vous n'avez pas voulu modifier src/test/java/org/esupportail/ecm/uportal/TestEsupPortalService.java ou encore que votre EsupPortail n'est pas disponible etc. en toute conscience vous pouvez éviter la phase de tests ainsi :

mvn-Dmaven.test.skip=true clean package

Déploiement

Une fois le jar obtenu, sur une version nuxeo-dm-5.4.0-tomcat vous pouvez déployer esup-ecm-uportal-groups en :

* copiant target/esup-ecm-uportal-groups-5.4.0.jar dans nxserver/plugins/

* copiant les jar de target/classes/lib/ dans nxserver/lib/ (nous n'avons pas réussi à les embarquer correctement dans esup-ecm-uportal-groups-5.4.0.jar pour déploiement automatique lors du lancement de nuxeo-tomcat), c'est à dire les jars suivant :
axis-1.4.jar  axis-wsdl4j-1.5.1.jar  commons-discovery-0.2.jar  esup-uportal-ws-client-20100915.jar  jaxrpc-api-1.1.jar

Utilisation

Vous pouvez alors retrouver les groupes uPortal dans la recherche de groupes de Nuxeo (Utilisateurs et groupes) ainsi que dans l'onglet Admiinistration des espaces/sections/dossiers - Droits d'accès (positionnement des droits).

Limitations

Un certain nombre de limitations sont présentes sur ce module, la plupart ne seront pas levées, on rappelle qu'à terme il parait plus élégant de se tourner vers un gestionnaire de groupes plus structurant et centralisé tel que Grouper - pour lequel il faudra, à l'image de ce qui a été fait pour uPortal->Nuxeo via ce plugin esup-ecm-uportal-groups, développer un plugin Nuxeo permettant de retrouver les groupes issus de Grouper dans Nuxeo.

Voici donc ces limitations (sans doute non exhaustif) :

  • nous ne savons pas lister les membres d'un groupe (issu d'une limitation d'uPortal)
  • la résolution des groupes PAGS pose problème : pour que cela fonctionne, il faut le portail EsupPortail ait connaissance des attributs (intervants dans les règles PAGS) d'un utilisateur donné même si celui-ci est déconnecté :
    - cela pose problème pour des utilisateurs qui ne sont jamais connectés
    - dans notre configuration UNR RUNN (EsupPortail + Shibboleth) la plupart des attributs sont transients, ils ne sont informés sur un portail que lorsque l'utilisateur y est connecté ...
  • ce qui fait que ce plugin est plutôt adapté à la récupération des groupes dits locaux
  • dans Nuxeo, les groupes n'ont simplement qu'un nom qui doit être unique, il n'y a pas de notion de nom/label et d'id ... aussi on récupère non pas les ids des groupes EsupPortail mais les noms (afin que ceux-ci soient parlant pour les utilisateurs dans Nuxeo), les noms des groupes EsupPortail correspondent alors à des identifiants -> il faut s'assurer qu'ils soient uniques dans toute l'arborescence de groupes EsupPortail, attention aux accents également, etc.
  • si l'on utilise nuxeo-platform-shibboleth-groups-web (qui propose une navigation différente dans les groupes pour le positionnement des permissions) esup-ecm-uportal-groups devient inutilisable car nous ne pouvons alors plus avec cette interface rechercher des groupes ne contenant pas d'utilisateurs (et de par la limitation d'uPortal en la matière, les groupes uPortal récupérés par Nuxeo sont vides), aussi, et même si ceux-ci sont bien présents/connus par Nuxeo il nous est alors impossible de les sélectionner.

À Faire

On utilise EhCache pour éviter d'appeler trop souvent les WS EsupPortail. Cela est codé directement dans UportalGroupComputer.java, on y donne en dur le temps de cache par exemple (5 min).
On pourrait rendre cette implémentation de cache plus souple.

... autre ?

  • No labels