Connexion LDAP

Maarch Courrier permet d'exploiter un annuaire de type ADLDAP ou OPENLDAP afin de centraliser la gestion des utilisateurs.

Deux niveaux d'exploitation possibles:

  • Authentification LDAP, la vérification des mots de passe des utilisateurs se fait dans l'annuaire dans ce cas.
  • Synchronisation des données de l'annuaire dans la base Maarch

Il est préférable, dans un premier temps, de paramétrer uniquement l'authentification LDAP. La synchronisation LDAP nécessitant beaucoup plus de temps à mettre en place car elle est dépendante de la maturité d'organisation de votre annuaire.

Prérequis

Il est important d'avoir un annuaire cohérent et à jour. Notamment pour la synchronisation. Cela peut alourdir inutilement l'application Maarch .

Seuls les Active Directory (ADLDAP ou OPENLDAP) sont pris en compte.

Fonctionnement général

Le module ldap de Maarch permet de configurer les éléments de l'AD. Un script (à exécuter en tâche planifiée) permet de récupérer le contenu de l'annuaire et l'intègre dans la base Maarch.

Ce process synchronise les utilisateurs et les entités depuis un serveur AD.

La mise en place de la synchronisation peut-être intéressante si vous avez beaucoup d'utilisateurs à gérer dans Maarch Courrier et/.ou si vous souhaitez uniformiser les mots de passe des utilisateurs avec divers autres applications connectées.

Authentification LDAP

Principes

Pour ce 1er mode, le processus est schématiser comme suit : Authentification

  • Demande à la base Maarch si l'utilisateur existe. L'identifiant de l'utilisateur dans Maarch doit être identique à celui de l'AD.
  • Si l'utilisateur existe dans Maarch et dans l'AD, la communication avec l'annuaire est faite pour vérifier le mot de passe renseigné par l'utilisateur.

Paramétrage

Le module ldap se situe :

modules/

_|- ldap/

Le fichier de configuration se situe :

modules/

__|- ldap/

__|- xml/

__|- config.xml

ce fichier est à copier dans le répertoire idoine de votre custom, ex :

custom/

_|cs\idcustom/

__|modules/

__|- ldap/

__|- xml/

__|- config.xml

Voici la partie à configurer :

<config>
    <ldap>
        <type_ldap>adLDAP</type_ldap>
        <group_prefix_ldap>LDAP</group_prefix_ldap>
        <domain>192.168.1.1</domain>
        <prefix_login>MAARCH</prefix_login>
        <login_admin>Administrateur</login_admin>
        <pass>ThePassword</pass>
        <ssl>false</ssl>
        <purge_log>1</purge_log>
        <lost_users>false</lost_users>
        <pass_is_login>true</pass_is_login>
        <standardConnect>false</standardConnect>
    </ldap>
</config>
  • type_ldap : defini quel annuaire est utilisé (ADLAP ou OPENLDAP)
  • group_prefix_ldap : n'est plus utilisé
  • domain : adresse ip de l'annuaire
  • prefix_login : préfixe utilisé pour les connexion. Généralement le nom du domaine. Ex : WORKGROUP\user
  • login_admin : compte pour pouvoir visualiser l'annuaire
  • pass : mot de passe du compte
  • ssl : à true si un cryptage ssl est actif
  • pass_is_login : permet de pouvoir se connecter à Maarch même si le lien avec l'annuaire n'est plus actif (le mot de passe sera le login utilisateur)
  • standardConnect : si true permet de se connecter à l'application même si le serveur ldap est injoignable

Pour ajouter un ou plusieurs serveur(s) ldap en série, il suffit de dupliquer la balise ldap et son contenu et de remplir avec la configuration du ou des serveur(s) en plus.

<config>
    <ldap>
        configuration premier serveur
    </ldap>
    <ldap>
        configuration second serveur
    </ldap>
    <ldap>
        configuration troisième serveur
    </ldap>
        .
        .
        .
</config>

L'application tentera alors de se connecter via le premier serveur ldap puis le second et ainsi de suite jusqu'à la réussite de la connexion sur l'un des serveur ou le refus de tous.

Le mode d'authentification est à préciser dans la configuration des méthodes de connexion de Maarch. Pour cela, il suffit de passer la balise enabled à true de la méthode ldap du fichier de configuration :

custom/

_|cs\idcustom/

__|apps/

__|maarch_entreprise/

__|xml/

__|login_method.xml

Synchronisation LDAP

Principes

Dans ce 2ème mode, les données utilisateur vont être extraites directement de l'AD (tout en gardant le principe du 1er mode). Cela va se faire grâce au script syn_ldap.sh (à mettre sous forme de tâche planifiée) . Le script syn_ldap.sh contient plusieurs commandes.

La première commande va permettre d'extraire toutes les informations du LDAP avec en retour 2 fichiers xml : ldap_users.xml et ldap_entities.xml

php modules/ldap/process_ldap_to_xml.php /modules/ldap/xml/config.xml

Les autres commandes vont insérer ces nouvelles données dans l’application (insertion, mise à jour, suppression) utilisant suivants:

  • process_entities_to_maarch.php
  • process_users_to_maarch.php
  • process_users_entities_to_maarch.php ex n°1 : L'adresse d'un utilisateur a changé => mise à jour des données de cet utilisateur ex n°2 : Un utilisateur est parti de la structure, il a été supprimé du LDAP => mise en status 'DEL' dans la base Maarch

les commandes :

php modules/ldap/process_entities_to_maarch.php modules/ldap/xml/config.xml
php modules/ldap/process_users_to_maarch.php modules/ldap/xml/config.xml
php modules/ldap/process_users_entities_to_maarch.php modules/ldap/xml/config.xml
Information Manipuler les entités depuis un LDAP peut être plus dommageable pour l'application. Ex : Supprimer un service qui avait encore des sous-services rattachés !

Paramétrage

En plus, du paramétrage de la connexion ldap vu précédement, il faut définir dans le fichier de configuration, les informations de connexion de la base données :

<config_base>
   <databaseserver>localhost</databaseserver>
   <databaseserverport>5432</databaseserverport>
   <databasetype>POSTGRESQL</databasetype>
   <databasename>maarch_entreprise</databasename>
   <databaseuser>postgres</databaseuser>
   <databasepassword>maarch</databasepassword>
</config_base>

Ensuite nous devons définir les informations à extraire du LDAP :

<mapping>
    <user ext_id="objectguid">
        <user_id>samaccountname</user_id>
        <firstname>givenname</firstname>
        <lastname>sn</lastname>
        <phone>telephonenumber</phone>
        <mail>mail</mail>
        <fonction>title</fonction>
        <enabled>useraccountcontrol</enabled>
        <user_entity role="">memberof</user_entity>
    </user>
    <entity>
        <ldap_id>objectguid</ldap_id>
        <entity_label>samaccountname</entity_label>
        <parent_entity>memberof</parent_entity>
    </entity>
</mapping>

Et enfin, la partie essentielle à la synchronisation qui permet de préciser les noeuds de l'AD qu'on souhaite récupérer:

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

Utilisateurs

Entités

Une fois ces fichiers configurés, on peut lancer le script syn_ldap.sh qui permettra d'exécuter les commandes précisées ci-dessus. Le fichier se situe dans

modules/

__|- ldap/

__|- script/

results matching ""

    No results matching ""