Trace: » Comment pouvoir s'authentifier sur deux annuaires LDAP différents avec la même base de données

Tip obsolète : Depuis la version de GLPI 0.7, il est possible nativement d'interroger plusieurs annuaires.

Comment pouvoir s'authentifier sur deux annuaires LDAP différents avec la même base de données

La configuration pour deux annuaires LDAP est la même que pour un annuaire Classique ou un annuaire AD. (cf. rubrique Configurer GLPI). La configuration a été testé avec succés sur un LDAP/AD Windows 2003 Server

Pour pouvoir disposer d’une double authentification il faut avoir deux instances de GLPI sur le serveur ; une qui prendra l’authentification sur le LDAP1 et une autre sur le LDAP2. soit la définition des serveurs et basedn suivant pour la recherche :

 Hote1 : ldap://ldap1.chezmoi.fr
 Basedn1 : CN=Users,DC=chezmoi,DC=fr ou OU=Invites,DC=chezmoi,DC=fr
 Hote2 : ldap://ldap2.chezmoi.fr
 Basedn2 : CN=Users,DC=chezmoi,DC=fr ou OU=Invites,DC=chezmoi,DC=fr

Nous avons donc sur notre serveur Web :

http://repertoire_du_serveur/glpi1 et http://repertoire_du_serveur/glpi2

Configuration au niveau du serveur web : Dans chaque instance de glpi, on dispose du fichier config.php dans le répertoire config à la racine de glpi (repertoire_du_serveur/glpi/config/config.php)

Dans ce fichier nous avons les lignes suivantes à partir de la ligne 320

                      if(!empty($cfg_glpi["ldap_host"])){
                      $cfg_glpi["ldap_host"]   = utf8_decode($cfg_glpi["ldap_host2"]);
                      $cfg_glpi["ldap_basedn"] = utf8_decode($cfg_glpi["ldap_basedn2"]);
                      $cfg_glpi["ldap_rootdn"] = utf8_decode($cfg_glpi["ldap_rootdn2"]);
                      $cfg_glpi["ldap_pass"] = utf8_decode($cfg_glpi["ldap_pass"]);

il nous faut donc modifier le fichier config.php contenu dans le répertoire config de la deuxième instance de glpi comme suit :

                      if(!empty($cfg_glpi["ldap_host"])){
                      $cfg_glpi["ldap_host"]   = utf8_decode($cfg_glpi["ldap_host2"]);
                      $cfg_glpi["ldap_basedn"] = utf8_decode($cfg_glpi["ldap_basedn2"]);
                      $cfg_glpi["ldap_rootdn"] = utf8_decode($cfg_glpi["ldap_rootdn2"]);
                      $cfg_glpi["ldap_pass"] = utf8_decode($cfg_glpi["ldap_pass"]);

on peut s’apercevoir qu’il y a trois nouveaux appels à des champs de la base de donnée glpi, soit

       ldap_basedn2, ldap_rootdn2 et ldap_host2 

Ces trois champs n’existe pas dans la base de donnée de GLPI, il faut donc les créerdans la table glpi_config. Vous pouvez utiliser phpmyadmin, mysqladministrator ou toute autre outils comme la ligne de commande par exemple. Ces trois champs sont du même type que les champs originaux, soit:

      ldap_basedn, ldap_rootdn et ldap_host

Note : Si le mot de passe du compte qui accède à l’annuaire est différents sur les deux annuaires, vous pouvez alors créer un autre champ ldap_pass2 dans la même table. Mais vous devez alors modifier le fichier config.php en concéquence dans la deuxième instance. Une fois les champs créés, renseigner-les avec les paramètres de votre deuxième ldap, soit:

      ldap_host = @IP_de_l’hostdn
      basedn2 : CN=Users,DC=chezmoi,DC=fr
      rootdn : un compte avec juste le droit de lire sur l’annuaire soit CN=uldap,OU=Users,DC=chezmoi,DC=fr

Une fois cette configuration terminée, ouvrez deux navigateurs respectivement sur les deux instances de GLPI. Et comparez les configuration des authentification externe. Vous remarquerez que les deux pointent sur des annuaires différents, mais par contre, elles pointent aussi sur la même base de données. C’est à dire que les ordinateurs, les périphériques et tous les autres matériels et autres sont visibles des deux cotés.