Connexion LDAP – Maarch Courrier

Authentification AD/LDAP, synchronisation utilisateurs & entités, mapping & filtres.
Active Directory / OpenLDAP Maarch Courrier Auth LDAP Synchro planifiée
2
Modes : Auth & Synchro
1
Script CRON (synchro)
AD
OU Utilisateurs & Services
OK
Mapping / Filtres

Contexte & objectifs

L’objectif est d’exploiter un annuaire AD/LDAP pour centraliser la gestion des comptes dans Maarch Courrier. Deux niveaux : authentification (le plus rapide à mettre en œuvre) puis synchronisation (utilisateurs & entités importés/tenus à jour).

Bonnes pratiques : un annuaire cohérent et à jour (OUs, groupes, attributs nom/prénom/téléphone/mail).

Architecture (vue simple)

  • Annuaire Active Directory (ou OpenLDAP) exposé au serveur Maarch.
  • Module modules/ldap : configuration + scripts.
  • Synchro par CRON : bin/ldap/synchronization.sh.
D’abord l’authentification seule (rapide). La synchro est plus sensible (organisation de l’AD, mapping, filtres).

1) Authentification LDAP

Fichier de configuration (copier depuis modules/ldap/xml/config.xml.default vers custom/IDCUSTOM/modules/ldap/xml/config.xml) :

<config>
  <ldap>
    <type_ldap>adLDAP</type_ldap>          <!-- adLDAP ou OPENLDAP -->
    <domain>192.168.1.1</domain>              <!-- IP/nom du contrôleur -->
    <baseDN></baseDN>                          <!-- (OPENLDAP seulement, ex: DC=maarch,DC=com) -->
    <prefix_login>MAARCH</prefix_login>        <!-- ex: DOMAINE -->
    <suffix_login>@maarch-les-bains.com</suffix_login>
    <ssl>false</ssl>                            <!-- true si LDAPS -->
    <standardConnect>false</standardConnect>  <!-- true = contourner si AD KO -->
    <login_admin>Administrateur</login_admin>  <!-- requis pour synchro -->
    <pass>ThePassword</pass>
  </ldap>
</config>

Activer la méthode LDAP dans custom/IDCUSTOM/config/login_method.xml :

<login_methods>
  <ldap enabled="true"/>
  <local enabled="true"/>  <!-- en secours si besoin -->
</login_methods>
⚙️ Test rapide (réseau) : ldapsearch ou telnet ad.exemple.lan 389 / openssl s_client -connect ad:636 pour LDAPS.

2) Synchronisation LDAP

Ajout dans le même config.xml : identifiants du WebService Maarch, activation des synchros, mapping et filtres.

<config>
  <ldap>... (config AD/LDAP ci-dessus) ...</ldap>

  <userWS>superadmin</userWS>
  <passwordWS>superadmin</passwordWS>

  <synchronizeUsers>true</synchronizeUsers>
  <synchronizeEntities>true</synchronizeEntities>

  <mapping>
    <user>
      <user_id>samaccountname</user_id>
      <firstname>givenname</firstname>
      <lastname>sn</lastname>
      <phone>telephonenumber</phone>
      <mail>mail</mail>
      <user_entity>memberof</user_entity>      <!-- optionnel -->
      <defaultEntity>PJS</defaultEntity>        <!-- fallback -->
    </user>
    <entity>
      <entity_id>objectguid</entity_id>
      <entity_label>samaccountname</entity_label>
      <parent_entity_id>memberof</parent_entity_id>
    </entity>
  </mapping>

  <filter>
    <dn id="OU=Utilisateurs,OU=Maarch-les-Bains,DC=maarch,DC=com" type="users">
      <user>(cn=*)</user>
    </dn>
    <dn id="OU=Services,OU=Maarch-les-Bains,DC=maarch,DC=com" type="entities">
      <user>(cn=*)</user>
    </dn>
  </filter>
</config>

Planifier le script de synchro (bin/ldap/synchronization.sh) :

# CRON (ex. toutes les 2h)
0 */2 * * * /var/www/maarch/bin/ldap/synchronization.sh >> /var/log/maarch/ldap-sync.log 2>&1
ℹ️ Règles : un identifiant, un nom, un prénom, un téléphone et un email par utilisateur (première valeur conservée). Utilise memberof pour rattacher l’utilisateur à une entité (OU/Groupe) — prévoir defaultEntity en secours.

Tests & diagnostics

  • Connec réseau : ports 389/636 ouverts ? ldapsearch répond ?
  • Comptes : le login_admin a les droits de lecture sur les OUs visées.
  • Mapping : attributs présents (ex. samaccountname, givenname, sn, mail) ?
  • Filtres : le DN cible contient bien les comptes/entités attendus.

Sécurité & bonnes pratiques

  • Préférer LDAPS (636) + certificats valides.
  • Secrets hors GIT (.env / vault) ; logs filtrés.
  • Limiter la synchro à des OUs dédiées pour éviter le “bruit”.
  • Conserver un compte local administrateur Maarch (secours).