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.

Introduction

Après maintenant quelques plusieurs années d'utilisation dans différents établissements, Grouper d'Internet2 est à l'usage une solution satisfaisante de gestion de groupesgroupes satisfaisante .

D'architecture complexe mais complète, sa mise en place dans un établissement n'est pas des plus simplesaisées, mais une fois en fonctionnement, Grouper d'Internet2 est une solution qui sait se fait aprécierfaire apprécier.

Son installation et sa configuration sont en effet complexesdélicates, à sa décharge Grouper est hautement configurable et peut s'adapter à des cas d'usages avancés et très variés.

Dès les prémices de l'installation plusieurs choix s'offrent à l'intégrateur : installation depuis Grouper Installer, depuis une archive, depuis les sources, ...

Les possibilités de configuration et de mises en place des synchros synchronisations sont ensuite sujets sujettes également à bon nombre de variantes. 

A côté de cela, l'uniformisation croissante de nos Systèmes d'Information (supann, openldap, shibboleth, férédation d'identités, CAS) ainsi que les expériences et retours des établissements ayant sauté le pas (cf Contributions d'établissements et présentations  ESUP-Days n°20ESUP-Days n°22, ...) nous ont conforté confortent dans l'idée que nos installations de Grouper pouvaient être assez similaires dans nos établissementssont finalement similaires.

La gestion d'un package Grouper 'ESUP' nous parait cependant trop ambitieuse et à terme contre-productive.

...

Pour faciliter l'installation de Grouper, ce document propose de partir d'un "fork" github de Grouper (correspondant initialement aux travaux de ocnfiguration configuration de Grouper de l'Université de Paris1) à reparamétrer. Ce document vous indique ce qu'il faut reparamétrer et comment installer les services correspondants.

Une fois que vous avez aurez une installation "simple" et fonctionnelle intégrée dans votre système d'information, libre à vous par la suite d'aller (éventuellement) plus loin dans l'usage de Grouper.
Gouper peut cependant tout à fait convenir et rendre énormément de servicies dans à un usage circonscrit comme proposé ici ; cette intégration ayant alors le mérite de rester relativement simple, de ne pas sortir des clous par rapport à ce qui se fait "basiquement" avec Grouper ; on retire alors les avantages d'une maintenance facilitée par exemple.

...

Le contexte d'usage et l'intégration de Grouper dans le système d'information de l'établissement est contraint sont contraints de cette façon : 

  • authentification shibboleth sur les interfaces web Grouper - même si ici seuls les personnels de l'établissement sont amenés à s'authentifier sur celles-ci dans cette configuration.
  • le LDAP de l'établissement est un openldap basé sur les recommandations (et schémaschémas) Supann
  • les potentiels membres des groupes (sources source des individus pour grouper) sont tous issus du LDAP de l'établissement et on utilise comme identifiant non pas leur uid ldap mais leur eppn (eduPersonPrincipalName)
  • les groupes sont poussés/synchronisés dans le Ldap comme groupOfNames ('plus supann' et ‘plus standard’ que les posixGroup) côté ou=groups et éventuellement (conseillé) memberOf côté ou=people (via un overlay) par Grouper

  • la nomenclature des groupes dans ldap reprend la nomenclature hiérarchique des groupes de grouper - les ":" sont transormés  transformés  en "." dans le passage de l'id de grouper au dn ldap
  • les applications utilisant les groupes ne conversent pas avec Grouper mais avec LDAP (cf schéma ci-dessous)

...

L'intégration de Grouper dans le Système d'Information est ici portée votre par l'annuaire LDAP openldap construit selon les recommandations supann.

Des ajustements techniques doivent/peuvent être effectués (si ils n'ont pas déjà été faitsnon présents dans votre ldap).

overlay memberOf

Pour faciliter l'usage des groupes ldap dans les applications, il est intéressant de proposer l'information d'appartenance d'un individu à un groupe dans l'object de l'individu (supannPerson positionné dans ou=people) en plus de cette information portée par le groupOfNames (supannGroupe) lui-même.

Pour ce faire, l'idée est de mettre enplace en place le overlay memberOf.

Vous pouvez suivre cette documentation par exemple : http://idmoim.blogspot.fr/2014/05/enabling-memberof-attribute-in-openldap.html

...

Pour optimiser les performances des applicatifs et de Grouper on vous conseille d'ajouter également des indexes, notamment sur

...

TODO - Il faut également installer un ANT -  http://ant.apache.org/

Java

Une fois je le Java de téléchargé et d'installé (par exemple dans /usr/local), utilisez un lien symbolique /usr/local/jdk1.7 -> /usr/local/jdk1.7.0_79 pour faciliter les mises à jour éventuelles.

On édite un fichier /opt/grouper-env qui est un fichier d'environnement utilisé par les différents scripts de démarrage de service et par un utilisateur 'grouper' (à créer) sous lequel on travaille (lancement du tomcat, scruipts scripts de synchro, client shell grouper).

Bloc de code
#!/bin/sh
JAVA_HOME=/usr/local/jdk1.7
ANT_HOME=/usr/local/apache-ant
EDITOR=emacs
JAVA_OPTS="-Dgrouper.home=/opt/grouper-univrouen/grouper -Xms1512m -Xmx1512m -XX:MaxPermSize=512m -Djavax.net.ssl.trustStore=/opt/cacerts-vincent-121213.trustore -Djavax.net.ssl.trustStorePassword=azerty -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:-DoEscapeAnalysis=/opt/grouper-esup/grouper -Xms1512m -Xmx1512m -XX:MaxPermSize=512m"

Pour faciliter la prise en compte de ce  fichier d'environnement dans un environnement bash, on réalise également un fichier /opt/env.sh :

...

Dézippez le tomcat dans /opt et faites le appartenir à un l'utilisateur 'grouper'.

Un lien symbolique est fait /opt/tomcat-grouper -> /opt/apache-tomcat-6.0.35 - on utilise ensuite /opt/tomcat-grouper comme chemin d'accès au tomcat dans les fichiers de configuration.

...

Grouper utilise une base de données SQL. Installer Installez le serveur postgresql fourni par votre distribution puis créez une base pour grouper : 

...

Une fois le Virtualhost apache et SP shibbolth bien paramétré comme il se doit, on doit accéder et tester la bonne configuration de l'ensemble via une url du type : https://grouper.univ-ville.fr/secure

...

Modifications apportées

La commande suivant suivante vous permet d'avoir une bonne idée des fichiers modifiés ou ajoutés côté ESUP par rapport au tag GROUPER_2_3_0 récupéré initialement et utilisé donc comme point de départ :

Bloc de code
cd /opt/grouper-esup
git diff GROUPER_2_3_0 --name-only | grep -v jar

Vous pouvez regarder en quoi consiste ces modifications vértiablement en refaisant un git diff dans sans le name-only.

Bloc de code
grouper-ui/.gitignore
grouper-ui/conf/.gitignore
grouper-ui/conf/grouper-ui.properties
grouper-ui/conf/grouperText/grouper.text.en.us.base.properties
grouper-ui/conf/grouperText/grouper.text.fr.fr.properties
grouper-ui/webapp/WEB-INF/struts-config.xml
grouper-ui/webapp/WEB-INF/web.ajax.xml
grouper-ui/webapp/WEB-INF/web.core.xml
grouper-ui/webapp/grouperExternal/public/assets/images/logo_univ-ville.png
grouper/.gitignore
grouper/bin/export-modified-groups-to-LDAP
grouper/bin/grouper-loader-daemon
grouper/bin/grouper-loader-problem-with-subjectIdentifier.cgi
grouper/bin/gsh
grouper/bin/gsh-psp-bulkSync
grouper/bin/sync-grouper-loader-group-and-export-to-LDAP
grouper/bin/sync-grouper-loader-group-and-export-to-LDAP.cgi
grouper/build.properties
grouper/conf/ehcache.xml
grouper/conf/grouper-loader.properties
grouper/conf/grouper.client.properties
grouper/conf/grouper.hibernate.properties
grouper/conf/grouper.properties
grouper/conf/ldap.properties
grouper/conf/log4j.properties
grouper/conf/morphString.properties
grouper/conf/psp-internal.xml
grouper/conf/psp-resolver.xml
grouper/conf/psp-services.xml
grouper/conf/psp.xml
grouper/conf/server.properties
grouper/conf/sources.xml
grouper/ext/lib/temp.txt

...

Vous aurez également besoin de modifier éventuellement les autres fichiers comme grouper/conf/grouper.hibernate.properties par exemple si vous avez pris un autre mot de passe ou nom de base que ceux indiqués ci-dessus ... 

Déploiement

Pour que les modifications de fichiers (configurations) soient prises en compte, en plus de redémarrer les services Grouper (cf ci-dessous) vous devez redéployer les briques Grouper.

...

Il faut y ajouter les services ajoutés installés 'manuellement'. Sous Centos 7 on a ainsi :

...

Bloc de code
# Systemd unit file for grouper-loader-daemon
[Unit]
Description=Synchro incrementale grouperloader (bases de données) vers grouper
After=syslog.target network.target
[Service]
EnvironmentFile=/opt/grouper-env
ExecStart=/opt/grouper-univrouenesup/grouper/bin/grouper-loader-daemon
User=grouper
Group=grouper
[Install]
WantedBy=multi-user.target

...

Bloc de code
# Systemd unit file for export-modified-groups-to-LDAP 
[Unit]
Description=Synchro incrementale grouper vers ldap
After=syslog.target network.target postgresql.service
[Service]
EnvironmentFile=/opt/grouper-env
ExecStart=/opt/grouper-univrouenesup/grouper/bin/export-modified-groups-to-LDAP
User=grouper
Group=grouper
[Install]
WantedBy=multi-user.target

...

Bloc de code
15 * * * * grouper /opt/grouper-univrouenesup/grouper/bin/gsh-psp-bulkSync

# redémarrage de grouper-loader-daemon.service pour prise en compte ajout/modif groupes dynamiques
00,30 * * * * root systemctl restart grouper-loader-daemon.service

...