Project

General

Profile

Fonctionnalité #14579

Synchronisation LDAP users, entities, users_entities pour intégration dans Maarch Courrier

Added by Quentin RIBAC almost 2 years ago. Updated 12 months ago.

Status:
Développé / Analysé (S)
Priority:
2-Sérieux
Assignee:
Target version:
Start date:
08/05/2020
Due date:
Tags Courrier:
ROADMAP:

Description

Le CD50 et le TCO avaient besoin de la synchronisation LDAP complète. Je l’ai donc réécrite entièrement en PHP en utilisant l’API REST de Maarch Courrier. Ci-joint une archive contenant le dossier en question.

Il serait très pratique de pouvoir intégrer ce code au socle de Maarch Courrier.

Description des fichiers :

  • syn_ldap.sh : le script bash pour lancer la synchronisation, on peut y modifier le chemin du config.xml dans l’appel au PHP pour mettre le chemin d’un config.php de custom.
  • xml/config.xml : le fichier de configuration avec
    • les infos de connexion au LDAP
    • les infos de connexion au REST
    • les préférences sync_users, sync_entities, deux booléens pour activer/désactiver la synchro des éléments correspondants
    • le mapping des données LDAP --> Maarch Courrier
    • les DN du LDAP pour les users et entities
  • php/vendor/ : j’utilise GuzzleHttp pour effectuer les requêtes HTTP à l’API. Si autre chose est préféré, tous les appels HTTP sont dans la classe MCRestHandle dans utils.php
  • php/config.php : la classe LDAPConfig charge le config.xml et permet d’en extraire les données.
  • php/utils.php :
    • la fonction fetchLdapEntries permet d’extraire des données d’un annuaire LDAP, de les filtrer, les mapper et les transformer.
    • la classe MCRestHandle se charge de tous les appels REST et stocke également les users et entities déjà récupérés du REST. Tous les appels GuzzleHttp sont ici au cas où il faudrait enlever cette dépendance au profit de cURL par exemple.
  • php/custom.php : un fichier permettant de customiser davantage la synchro LDAP sans toucher au reste du code. On peu y changer :
    • le chemin du config.xml,
    • le filtre sur les entrées LDAP de type entités, pour ne garder que certaines entités et en exclure d’autres
    • les transformations sur les entités, des fonctions sur les données déjà mappées
    • le filtre sur les entrées LDAP de type utilisateurs
    • les transformations sur les utilisateurs
  • php/main.php : l’algorithme principal de la synchro LDAP
    • lecture du config.xml
    • récupération des entities du LDAP et du REST
    • récupération des users du LDAP et du REST et mapping des users_entities du LDAP (DN vers entity_id)
    • modification/ajout d’entities
    • modification/ajout/suppression d’utilisateurs
    • synchronisation des users_entities
    • suppression d’entities

Ce code effectue la synchronisation LDAP, je ne sais pas ce qui était nécessaire à l’authentification LDAP, mais j’ai essayé de modifier le moins possible la structure du config.xml.

J’ai fait le test avec l’annuaire LDAP de test sur le PC rouge, j’y ai ajouté des entités avec des membres pour tester.

Ce code est commenté, mais je reste bien sûr à disposition pour toute explication supplémentaire.

La doc de GuzzeHttp : http://docs.guzzlephp.org/en/stable/quickstart.html

ldap.tgz (490 KB) ldap.tgz Quentin RIBAC, 08/05/2020 03:17 PM

Related issues

Related to Backlog Courrier - Fonctionnalité #13273: Batch synchronisation LDAPDéveloppé / Analysé (S)2020-02-19

History

#1 Updated by Support Maarch almost 2 years ago

  • Status changed from A qualifier to A traiter

#2 Updated by Emmanuel DILLARD almost 2 years ago

  • Status changed from A traiter to Etude planifiée
  • Priority changed from 0-Bloquant to 1-Majeur

#3 Updated by Emmanuel DILLARD over 1 year ago

  • Status changed from Etude planifiée to Prêt à développer
  • Priority changed from 1-Majeur to 2-Sérieux
  • Target version changed from 20.03.XX to 20.10 Develop

#4 Updated by Florian AZIZIAN over 1 year ago

#5 Updated by Emmanuel DILLARD over 1 year ago

  • Target version changed from 20.10 Develop to Courrier 20.10.xx

#6 Updated by Emmanuel DILLARD about 1 year ago

  • Target version changed from Courrier 20.10.xx to Courrier Develop

#7 Updated by Florian AZIZIAN about 1 year ago

  • Status changed from Prêt à développer to Développé / Analysé (S)
  • Assignee changed from EDI PO to Quentin RIBAC

Le script a été complètement refait en mode v2, avec des appels aux API, dans la 20.10 (#13273)

#8 Updated by Emmanuel DILLARD 12 months ago

  • Project changed from Backlog to Backlog Courrier
  • Target version changed from Courrier Develop to Develop

Also available in: Atom PDF