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).
modules/ldap
: configuration + scripts.bin/ldap/synchronization.sh
.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>
ldapsearch
ou telnet ad.exemple.lan 389
/ openssl s_client -connect ad:636
pour LDAPS.
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
memberof
pour rattacher l’utilisateur à une entité (OU/Groupe) — prévoir defaultEntity
en secours.
ldapsearch
répond ?samaccountname
, givenname
, sn
, mail
) ?.env
/ vault) ; logs filtrés.