Pages enfant
  • Guide d'installation


 

Mode servlet

Généralités

Télécharger esup-reunion-<version>.zip sur le site du projet .

Dézipper le fichier dans une répertoire de travail.

Configurer le fichier build.properties

Créer et configurer le fichier properties/config.properties à partir du fichier properties/config-example.properties. Ce fichier regroupe en un seul fichier un maximum de propriétés à configurer dans les dossiers properties/*. Pour plus d'informations sur ces propriétés, reportez vous sur les fichiers de configuration correspondants.

Créer le fichier properties/smtp/smtp.xml à partir du fichier properties/smtp/smtp-example.xml. Les données à paramétrer sont dans le fichier properties/config.properties.

Créer le fichier properties/ldap/ldap.xml à partir du fichier properties/ldap/ldap-example.xml. Les données à paramétrer sont dans le fichier properties/config.properties. Voir les sections suivantes pour une configuration avancée.

Créer le fichier properties/web/controllers.xml à partir du fichier properties/web/controllers-example.xml. Les données à paramétrer sont dans le fichier properties/config.properties. Voir la section "Améliorer l'importation des contacts" pour une configuration avancée.

Créer le fichier webapp/WEB-INF/web.xml à partir du fichier webapp/WEB-INF/web-servlet-example.xml.

Tester votre configuration :

ant test-config
ant test-smtp
ant test-database

Initialiser votre base de donnée si nécessaire (première installation) :

ant init-data

Cette commande va supprimer toutes les données existantes dans votre base de donnée !!!!

Votre base de donnée (configurée dans le fichier config.properties) doit exister.

Deployer l'application :

ant deploy

Configuration LDAP

Dans la plupart de cas, les éléments configurés dans le fichier properties/config.properties suffisent. Vous pouvez toutefois allez plus loin dans le configuration de l'application par rapport aux spécificités de votre annuaire LDAP.

Dans le fichier properties/ldap/ldap.xml

La propriété dnSubPath configure le chemin dans l'annuaire vers les individus (généralement ou=people).

La propriété idAttribute configure l'attribut dans l'annuaire servant d'identifiant unique pour un individu (généralement uid). Cet attribut sert à renseigner l'identifiant (forcément unique) dans la table des utilisateurs.

La propriété attributes configure les attributs d'un individu, récupérés dans l'annuaire, sous la forme d'une liste. Les attributs utilisés dans les propriétés suivantes doivent donc y être renseignés. Par exemple :

<list>
    <value>cn</value>
    <value>supannAffectation</value>
    <value>mail</value>
</list>

La propriété searchAttribute configure l'attribut sur lequel porte la recherche d'un individu dans l'annuaire (généralement cn).

La propriété searchDisplayedAttributes configure les attributs d'un individu, affichés dans les résultats d'une recherche dans l'annuaire. Par exemple :

<list>
    <value>cn</value>
    <value>supannAffectation</value>
    <value>mail</value>
</list>

La propriété displayName configure le nom de l'annuaire. Il sera affiché notamment dans le menu contact de la page "Mes Contacts" pour importer un contact depuis l'annuaire (sous la forme "Annuaire nom_annuaire").

Dans le fichier properties/domain/domain.xml

La propriété displayNameLdapAttribute configure l'attribut donnant le nom d'un individu dans l'annuaire (généralement cn). Ce nom sera utilisé en particulier dans l'affichage de la liste des contacts ou dans les notifications par e-mail. C'est pourquoi nous conseillons de prendre un attribut de l'annuaire correspondant au "Nom Prénom" de l'individu.

La propriété mailLdapAttribute configure l'attribut donnant le mail d'un individu dans l'annuaire (généralement mail).

Ajout d'un annuaire LDAP

L'application est liée à un seul annuaire LDAP (et un seul CAS) pour l'authentification. Cependant, il peut être utile de récupérer des contacts simplement d'un autre annuaire LDAP. Pour cela, il faut ajouter un ou plusieurs annuaires supplémentaires qui seront référencés dans les filtres LDAP d'un contrôleur (cf plus bas).

Ces annuaires supplémentaires peuvent également être utilisés pour améliorer l'importation de contacts (cf Section " Améliorer l'importation des contacts" ).

Pour ajouter un annuaire LDAP,

  • Dupliquer les beans ldapUserService, ldapTemplate et contextSource en modifiant les id.
  • Mettre à jour les références vers les nouveaux ldapTemplate et contextSource.
  • Configurer les paramètres relatifs à ce nouvel annuaire LDAP, notamment le displayName.
  • Donner un nom au cache (attribut cacheName) sinon il y aura un conflit avec le premier annuaire LDAP.
  • Dans le bean ldapUserServiceManager, ajouter une référence vers le nouveau ldapUserService dans la liste (propriété ldapUserServices).

Ajout de filtres LDAP

Pour rendre plus rapide la recherche d'un contact dans un annuaire, nous avons mis en place des filtres, regroupés par annuaire (si vous en avez ajouté, cf plus haut). Ainsi dans le menu contacts de la page "Mes Contacts", vous pouvez ajouter un contact à partir d'un annuaire en choisissant un filtre (par exemple enseignants ou étudiants).

La configuration de ces filtres se situe dans le contrôleur de la page "Mes Contacts" : le bean contactsController dans le fichier properties/web/controllers.xml. La propriété ldapFilters est une map associant un annuaire LDAP à une map. Cette deuxième map associe deux chaînes de caractères. La première est une entrée dans les fichiers de langue properties/i18n/bundles/Messages_.properties*. La deuxième chaîne est le filtre LDAP devant être utilisé.

Il va de soit que les annuaires LDAP référencés dans cette propriété doivent être des beans définis dans le fichier properties/ldap/ldap.xml. De même, les entrées des fichiers de langue doivent y être déclarés.

Exemple de définitions de filtres

Première entrée, référence vers l'annuaire LDAP par défaut, le bean ldapUserService

<entry>
    <key>
        <ref bean="ldapUserService"/>
    </key>

Premier filtre : "CONTACTS.MENU.CONTACTS.STAFF" est défini dans les fichiers de langue / "eduPersonAffiliation=member" est un filtre permettant de ne rechercher que des personnels.

<map>
        <entry>
            <key>
                <value>CONTACTS.MENU.CONTACTS.STAFF</value>
            </key>
            <value>eduPersonAffiliation=member</value>
        </entry>

Deuxième filtre : "CONTACTS.MENU.CONTACTS.STUDENT" est défini dans les fichiers de langue / "eduPersonAffiliation=student" est un filtre permettant de ne rechercher que des étudiants.

<entry>
            <key>
                <value>CONTACTS.MENU.CONTACTS.STUDENT</value>
            </key>
            <value>eduPersonAffiliation=student</value>
        </entry>

Troisième filtre : "CONTACTS.MENU.CONTACTS.ALL" est défini dans les fichiers de langue / "" est un filtre vide permettant de rechercher des individus sans contraintes d'affiliation ou autres...

<entry>
            <key>
                <value>CONTACTS.MENU.CONTACTS.ALL</value>
            </key>
            <value></value>
        </entry>
    </map>
</entry>

Améliorer l'importation des contacts

L'importation des contacts se base essentiellement sur le mail pour retrouver les nom et prénom des contacts. Chaque outil (horde, thunderbird, outlook, etc...) a son propre format d'export, sa façon propre de stocker le nom d'une personne. L'idée ici est de faire l'importation au mieux, de rechercher les mails dans l'annuaire LDAP quand c'est possible, et de laisser l'utilisateur "reformater" les entrées restantes...

En effet, la plupart des contacts ont une adresse mail institutionnelle. En fonction du domaine (fin de l'adresse mail), il est possible de rechercher le contact dans l'annuaire LDAP correspondant. On peut ainsi proposé un "Nom Prénom" au même format que les contacts directement importés de l'annuaire.

Pour cela, le contrôleur de la page d'importation des contacts, importContactsController défini dans le fichier properties/web/controllers.xml, dispose d'une propriété ldapDomains. Celle-ci est une map associant un domaine à un annuaire LDAP.

Voici un exemple avec deux annuaires pour deux domaines différents. Les beans ldapUserService* doivent être définis dans le fichier properties/ldap/ldap.xml. Les chaînes de caractères représentant les domaines sont testés avec la fin des adresses e-mail.

<property name="ldapDomains">
    <map>
        <entry>
            <key>
                <value>univ1.fr</value>
            </key>
            <ref bean="ldapUserService"/>
        </entry>
        <entry>
            <key>
                <value>univ2.fr</value>
            </key>
            <ref bean="ldapUserService2"/>
        </entry>
        <entry>
    </map>
</property>

Mode portlet

Le déploiement en portlet n'est pas possible pour le moment à cause des librairies RichFaces. Nous espérons qu'une solution technique sera apportée prochainement pour rendre compatible esup-commons et richfaces dans une portlet esup.

En attendant, nous avons fait le choix de procéder à la connexion dès l'accès à l'accueil de l'application. Ainsi, l'utilisation d'une portlet iframe est un minimum acceptable. De plus, pour améliorer l'intégration dans un portail :

  • Nous cachons le bouton de déconnexion lorsque l'argument mode=portlet est passé (seul) à la requête. Par exemple, le lien afficher dans l'iframe est de la forme *.
  • Pour assurer la fermeture des sessions éventuellement ouvertes dans des applications tiers via ces iframes, un page est appelée à la déconnexion du portail, chargée de clore ces sessions. Cette page ouvre également des iframes invisibles vers les pages des applications tiers fermant leur session. Dans le cas d'esup-reunion, cette page s'appelle entLogout.jsp et est situé à la racine (comme l'index). Ainsi, le lien vers cette page sera de la forme : *.
  • Aucune étiquette