Projet

Général

Profil

Fonctionnalité #14579

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

Ajouté par Quentin RIBAC il y a plus de 3 ans. Mis à jour il y a environ un an.

Statut:
R&D - Terminé
Priorité:
2-Sérieux
Assigné à:
Quentin RIBAC
Version cible:
Début:
05/08/2020
Echéance:
Version applicable MC:
Tags 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

ldap.tgz (490 ko) ldap.tgz Quentin RIBAC, 05/08/2020 15:17

Demandes liées

Lié à Backlog Courrier - Fonctionnalité #13273: Batch synchronisation LDAPR&D - Terminé2020-02-19

Historique

#1 Mis à jour par Support Maarch il y a plus de 3 ans

  • Statut changé de A qualifier à A traiter

#2 Mis à jour par Emmanuel DILLARD il y a plus de 3 ans

  • Statut changé de A traiter à Etude planifiée
  • Priorité changé de 0-Bloquant à 1-Majeur

#3 Mis à jour par Emmanuel DILLARD il y a plus de 3 ans

  • Statut changé de Etude planifiée à R&D - A planifier
  • Priorité changé de 1-Majeur à 2-Sérieux
  • Version cible changé de 20.03.XX à 20.10 Develop

#4 Mis à jour par Florian AZIZIAN il y a plus de 3 ans

#5 Mis à jour par Emmanuel DILLARD il y a plus de 3 ans

  • Version cible changé de 20.10 Develop à Courrier 20.10.xx

#6 Mis à jour par Emmanuel DILLARD il y a environ 3 ans

  • Version cible changé de Courrier 20.10.xx à Courrier Develop

#7 Mis à jour par Florian AZIZIAN il y a environ 3 ans

  • Statut changé de R&D - A planifier à R&D - Terminé
  • Assigné à changé de EDI PO à Quentin RIBAC

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

#8 Mis à jour par Emmanuel DILLARD il y a presque 3 ans

  • Projet changé de Backlog à Backlog Courrier
  • Version cible changé de Courrier Develop à Develop

#9 Mis à jour par Emmanuel DILLARD il y a environ un an

  • Version cible changé de Develop à 2301

MAJ version cible Develop->2301

Formats disponibles : Atom PDF