Fonctionnalité #14579
ferméSynchronisation LDAP users, entities, users_entities pour intégration dans Maarch Courrier
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
Fichiers