Skip to content

Intégration de services non Web

Aurélien Bénel edited this page Apr 25, 2016 · 15 revisions

Le sujet de la semaine est l'intégration de services non-Web à des services Web.

L'exemple qui sera pris sera celui d'un service LDAP (Lightweight Directory Access Protocol), service non-Web très largement utilisé dans les systèmes d'information des moyennes et grandes organisations.

LDAP

Comme son nom l'indique, LDAP est un service d'annuaire, c'est-à-dire une sorte de gestionnaire de base de données stockant des entrées (entries), décrites par des attributs librement choisis parmi des "schémas" plus ou moins standards. Les entrées sont stockées dans une arborescence dans laquelle chaque embranchement correspond aux différentes valeurs d'un attribut (par exemple, dans la Fig. 1, le pays, l'état, l'organisation, le service, le nom usuel). Le chemin dans cet arbre est appelé "nom distinctif" (dn), c'est l'identifiant universel de l'entrée.

Arborescence LDAP

Aujourd'hui, pour être compatibles avec ActiveDirectory (l'implémentation de LDAP par Microsoft), la plupart des organisations utilisent la même structure dans laquelle les premiers niveaux correspondent au composants de domaine internet (dc) de l'organisation, puis dans lequel les entrées sont regroupées par classe (ex. : People pour les personnes), puis identifiées par un identifiant sur mesure (uid pour les utilisateurs).

Arborescence ActiveDirectory

Objectifs du TP

En nous appuyant sur le service LDAP de l'université, nous allons développer un adaptateur (adapter) et un mandataire (proxy) :

  • l'adaptateur permettra de "brancher" le service LDAP à une application prévue pour consommer un service Web,
  • le mandataire permettra de limiter les droits d'écriture (de cette même application sur le service Web initial) aux seuls utilisateurs référencés dans l'annuaire.

Adaptateur

On veut mettre en place un annuaire participatif. Au lieu de développer une application complète, on va réutiliser l'application Agorae et la "brancher" sur le service LDAP.

  1. À votre avis quelles entrées peut-on obtenir avec la commande suivante ?
ldapsearch -h "ldap.utt.fr" -x -b "ou=People,dc=utt,dc=fr" -s "sub" "(eduPersonAffiliation=student)"

Testez la. Puis remplacez student par faculty puis employee.

  1. Une partie du code de votre adaptateur a été développée. Récupérez la, installez-la puis lancez la :
git clone https://github.com/Hypertopic/ldap2hypertopic.git
npm install
node index.js

Ouvrez l'URI http://localhost:1337/corpus/faculty.

  1. Ce flux est-il conforme à la spécification d'un corpus selon Hypertopic ? Si oui, on devrait pouvoir le charger dans un client compatible. Que manque-t-il ? En utilisant une bibliothèque, ajoutez les deux lignes de code nécessaire.

  2. Réessayez le client. Jusqu'où pouvez-vous aller dans la navigation. Quelle autre partie de la spécification devez-vous implémenter ? Inspectez le fichier config/default.json. Que retrouvez-vous ? Inspectez le fichier index.js. À quoi correspond la variable filter ?

Mandataire

Clone this wiki locally