Module LDAP

From Dolibarr ERP CRM Wiki
Jump to navigation Jump to search
LDAP
Numéro/ID du module 200
Doc utilisateur du module Cette page
Doc développeur du module Module LDAP (développeur)

Introduction

Le module LDAP permet de synchroniser des entités Dolibarr avec une base LDAP. Les entités qui peuvent être synchronisées et le sens sont les suivants:

On suppose donc que vous possédez déjà un serveur LDAP. Si tel n'est pas le cas, vous pouvez Installer et configurer OpenLDAP.

Installation

Ce module est livré en standard avec la distribution de Dolibarr, aussi il est déjà installé.

Configuration

Pour utiliser ce module, il vous faut d'abord l'activer. Pour cela, après s'être connecté avec un compte administrateur, aller sur la page "Accueil - Configuration - Modules".

Choisissez l'onglet dans lequel apparaît le module puis cliquez sur "Activer".

Le module est alors activé.

Si un pictogramme apparaît à la fin de la ligne du module, cliquez dessus pour accéder à la page de paramétrage spécifique à ce module.


Les informations à fournir dans la configuration du module LDAP sont les suivantes:

  • Rendez-vous dans l'onglet "Paramètres généraux",
  • Entrez les informations du serveur LDAP :
    • Choisissez ce que vous souhaitez synchroniser (utilisateurs, groupes, adhérents) et dans quel sens,
    • Type : openLDAP, Active Directory, eGroupWare,
    • Version : version du protocole LDAP (en général : 3 ),
    • Serveur primaire : ldap://<hostname_ou_ip> , en mode sécurisé ldaps://<hostname_ou_ip>
    • Serveur secondaire : idem primaire mais pour redondance en cas de panne du premier serveur LDAP,
    • Port  : 389 (ldap://) ou 636 (ldaps://),
    • DN : niveau à partir duquel le module LDAP va commencer à chercher (en général DC=company,DC=com),
    • Utilisation de TLS : oui ou non (en général : non),
    • DN de l'administrateur (bind LDAP) : Utilisateur avec lequel vous allez demander à Dolibarr de faire les recherches (il faut un compte sans droit particulier),
    • Mot de passe de l'administrateur : mot de passe de l'utilisateur précédent (le même que dans votre fichiers ./dolibarr-x.y.z/htdocs/conf/conf.php).


  • Une fois ces informations renseignés, cliquer sur le bouton "Modifier" et utilisez le bouton "Test LDAP connection" pour vous assurer qu'elles sont bonnes.

Ce qui doit vous donner ceci :

@ Connexion TCP au serveur LDAP réussie (Serveur=ldap(s)://<hostname_ou_ip>, Port=389 (ou 636) )

@ Connection/Authentification au serveur LDAP réussie (Serveur=ldap(s)://<hostname_ou_ip>, Port=389 (ou 636), Admin= uid=admin,DC=company,DC=com, Password=****************)

@ Serveur LDAP configuré en version 3


  • Ensuite, saisissez la manière de récupérer les utilisateurs dans votre annuaire LDAP, un filtre LDAP est recommandé (ici filtrage sur un groupe dans lequel vous mettez les utilisateurs autorisé à utiliser Dolibarr)
  • Et faites l'association entre les champs Dolibarr et les champs LDAP,
  • N'oubliez pas de sélectionner, un champ unique qui va servir de clef d’identification unique pour vos utilisateurs (en général : uid ou sAMAccountName)



  • Une fois ces informations renseignés, cliquer sur le bouton "Modifier" et utilisez le bouton "Tester un recherche LDAP" pour vous assurer qu'elles sont bonnes.
Capture d’écran du 2020-04-30 17-38-57.png


Ce qui doit vous donner ceci :


LDAP search for user:
search: *
userDN: DC=company,DC=com
useridentifier: uid
required_fields: uid,cn,sn,givenname,userPassword,telephonenumber,mail

=> 4 records (dépends du nombre d'utilisateur restreint, ou pas, par votre filtre LDAP. Filtre que je vous conseille de mettre en oeuvre)


  • Enfin, saisissez la manière de récupérer les groupes dans votre annuaire LDAP, un filtre LDAP est recommandé (ici filtrage sur un groupe dans lequel vous mettez les utilisateurs autorisé à utiliser Dolibarr)
  • Et faites l'association entre les champs Dolibarr et les champs LDAP,


Capture d’écran du 2020-04-30 17-39-38.png


N'oubliez pas de modifier votre fichier de configuration de l'application, voici un exemple qui fonctionne avec openLDAP :

nano /srv/dolibarr/prod/htdocs/conf/conf.php


[...]
// Authentication settings
//$dolibarr_main_authentication='dolibarr';
$dolibarr_main_authentication='ldap,dolibarr';   // Permet de garder la double authentification si souci avec LDAP (gardez un compte non LDAP admin !)
$dolibarr_main_auth_ldap_host='<ldap>ou<ldaps>:  //<hostname>';  // Plusieurs serveurs peuvent être ajouter en séparant par une virgule.
$dolibarr_main_auth_ldap_port='<389>ou<636>';    // Port
$dolibarr_main_auth_ldap_version='3';
$dolibarr_main_auth_ldap_servertype='openldap';  // openldap, activedirectory or egroupware
$dolibarr_main_auth_ldap_login_attribute='uid';  // Ex: uid or samaccountname for active directory
$dolibarr_main_auth_ldap_dn='dc=company,dc=com'; // Ex: ou=users,dc=my-domain,dc=com
$dolibarr_main_auth_ldap_filter = '';            // If defined, two previous parameters are not used to find a user into LDAP. Ex: (uid=%1%) or &(uid=%1%)(isMemberOf=$
$dolibarr_main_auth_ldap_admin_login='uid=admin,dc=company,dc=com';
$dolibarr_main_auth_ldap_admin_pass='YourPassword';
$dolibarr_main_auth_ldap_debug='false';
[...]

Usage

Pour les synchronisations de Dolibarr vers le LDAP, une fois que votre configuration est réalisée, il n'y a rien à faire. A chaque fois que vous faites une modification dans Dolibarr, le changement est repercuté dans le LDAP.

Si vous rencontrez une erreur durant la synchronisation LDAP, toute la transaction Dolibarr sera annulée et un message d'erreur sera affiché. Notez que les messages d'erreurs retournées par le serveur LDAP en PHP sont peu précises. Aussi si un message d'erreur n'est pas assez clair pour vous permettre de deviner ce qui ne fonctionne pas, jetez un oeil au chapitre "Erreurs".

Vous pouvez toutefois réaliser des synchronisations initiales ou de masse grace aux scripts (voir chapitre Scripts).

Erreurs

Parce que le message d'erreur retourné par les fonctions PHP LDAP ne sont pas précises, vous pouvez avoir des difficultés pour analyser un message d'erreur LDAP. Voici quoi faire dans ce cas:

  • Juste après que l'erreur ait eu lieu, un fichier ldap/temp/ldapinput.in est créé dans votre répertoire documents. Aller dans le répertoire ldap/temp/.
  • Ouvre le fichier ldapinput.in, vous y verrez sur les premières lignes (en commentaire), la commande ldap complète que vous pouvez utiliser pour émuler la même action que celle envoyé par le PHP au serveur LDAP.
  • Exécuter la commande. Vous devez avoir les utiltaires ldap (ldapadd, ldapmodify et ldapdelete) installés sur votre ordinateur.
  • Analyser le résultat. Vous devriez avoir plus d'information sur la cause de l'erreur.

Scripts