Configurer un annuaire LDAP Active Directory dans GLPI
Brancher GLPI sur Active Directory permet aux utilisateurs de se connecter avec leur compte du domaine et d'importer fiches et groupes. La configuration tient dans un formulaire, mais chaque champ a un piège.
GLPI sait interroger un ou plusieurs annuaires LDAP pour authentifier les utilisateurs, contrôler leur accès, récupérer leurs informations personnelles et importer des groupes. Tout annuaire compatible LDAP v3 convient, dont Active Directory (AD) de Microsoft, mais aussi OpenLDAP ou le serveur LDAP d'un NAS. Cette page décrit le cas le plus courant : un domaine AD et une instance GLPI 11.
Une erreur dans ce formulaire peut bloquer la connexion de tous les comptes du domaine. Testez d'abord sur une instance de lab, et gardez un compte local super-administrateur fonctionnel avant d'activer l'annuaire en production.
Comment GLPI utilise l'annuaire
Le traitement se fait en trois temps, et les confondre explique la plupart des tickets « l'utilisateur n'arrive pas à se connecter » :
- Authentification. À la première connexion, GLPI cherche l'utilisateur dans tous les annuaires configurés jusqu'à le trouver. Si l'import depuis une source externe est autorisé, le compte est créé dans GLPI et lié à ce serveur. Aux connexions suivantes, seul cet annuaire est interrogé.
- Contrôle d'accès. Être authentifié ne donne pas forcément le droit d'entrer. Les profils et entités viennent des règles d'affectation d'habilitations à un utilisateur.
- Récupération des données. Nom, courriel, téléphone et groupes sont relus dans l'annuaire à chaque connexion.
Topologie du lab
| Hôte | Rôle | Interface | Adresse |
|---|---|---|---|
| srv-dc01 | contrôleur de domaine lab.local, LDAP et LDAPS | Ethernet0 | 192.168.10.10/24 |
| srv-glpi01 | Debian 13, GLPI 11 | ens18 | 192.168.10.20/24 |
| poste-admin | navigateur, console AD | eth0 | 192.168.10.50/24 |
Prérequis
- Une instance GLPI fonctionnelle, installée par exemple en suivant la page pour installer GLPI sur Debian.
- L'extension PHP
ldap. Si GLPI n'affiche aucune configuration LDAP, c'est qu'elle manque ; sur Debian, installez le paquetphp-ldappuis rechargez le serveur web. - Un compte de service dans AD, dédié à GLPI, sans droits d'administration. Pour AD, la documentation GLPI précise qu'il faut renseigner un compte autorisé à s'authentifier sur le domaine.
- La résolution DNS de
srv-dc01.lab.localdepuis le serveur GLPI.
apt install php-ldap ldap-utils
systemctl reload apache2
Vérifier l'annuaire avant GLPI
Un test depuis le serveur GLPI sépare les problèmes réseau ou de compte des erreurs de saisie. L'outil ldapsearch du paquet ldap-utils fait une liaison simple (-x) avec le DN du compte (-D) et demande le mot de passe (-W).
ldapsearch -x -H ldaps://srv-dc01.lab.local -D "CN=svc-glpi,OU=Services,DC=lab,DC=local" -W -b "DC=lab,DC=local" "(sAMAccountName=jdupont)" cn mail
Si l'entrée de l'utilisateur revient, le réseau, le certificat et le compte de service sont bons. Une erreur à ce stade ne se corrigera pas dans GLPI.
Déclarer l'annuaire dans GLPI
Dans Configuration > Authentification > Annuaires LDAP, ajoutez un annuaire. Cliquez d'abord sur le lien de préconfiguration Active Directory : il préremplit plusieurs champs, dont le filtre de connexion. Le lien Valeurs par défaut les remet à zéro.
| Champ | Valeur pour le lab | Remarque |
|---|---|---|
| Serveur | ldaps://srv-dc01.lab.local | nom complet ou adresse IP |
| Port | 636 | 389 en LDAP simple |
| BaseDN | DC=lab,DC=local | aucun espace après les virgules |
| DN du compte | CN=svc-glpi,OU=Services,DC=lab,DC=local | même règle d'écriture |
| Champ de l'identifiant | samaccountname | uid sur un annuaire OpenLDAP |
| Champ de synchronisation | objectguid | non modifiable ensuite |
Cochez Actif, et Serveur par défaut si c'est votre annuaire principal. La documentation insiste : un annuaire non activé ne sert à rien, et le BaseDN comme le DN du compte sont sensibles à la casse.
Le champ de synchronisation
C'est le seul choix difficile à rattraper : une fois enregistré, il ne peut plus être modifié. Il doit être unique pour chaque utilisateur. Pour AD, GLPI recommande objectGUID, l'identifiant unique que Microsoft définit à la création de l'objet et qui ne change jamais, même si le compte est renommé ou déplacé.
samaccountnamechange quand un utilisateur change d'identifiant.objectGUIDne change pas, ce qui évite les doublons après un renommage.- Pour OpenLDAP, l'équivalent recommandé est
entryUUID.
Le filtre de connexion
Dans AD, les ordinateurs sont aussi des objets de classe user. Le filtre préchargé ne garde donc que les personnes dont le compte n'est pas désactivé :
(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
La partie 1.2.840.113556.1.4.803 est la règle de correspondance « ET bit à bit » de Microsoft, et la valeur 2 correspond à l'indicateur qui marque un compte désactivé dans userAccountControl. Pour ne laisser entrer qu'un groupe, ajoutez une condition sur l'appartenance. La règle 1.2.840.113556.1.4.1941 suit aussi les groupes imbriqués :
(&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(memberOf:1.2.840.113556.1.4.1941:=CN=GLPI-Utilisateurs,OU=Groupes,DC=lab,DC=local))
Pourquoi LDAPS plutôt que LDAP simple
GLPI se connecte par une liaison simple (simple bind) avec le compte de service. Microsoft précise que si la signature LDAP est exigée sur le contrôleur de domaine, les liaisons simples sans SSL sur le port 389 sont refusées, alors que la liaison simple via SSL sur le port 636 n'est pas concernée. Sur un domaine durci, le LDAP simple casse donc, et il fait circuler le mot de passe du compte de service en clair.
Pour passer en LDAPS, préfixez le serveur par ldaps://, mettez le port à 636, enregistrez, puis dans l'onglet Informations avancées passez Utiliser TLS à « Oui ». Le serveur GLPI doit faire confiance à l'autorité de certification qui a signé le certificat du contrôleur. La directive TLS_CACERT de /etc/ldap/ldap.conf désigne le fichier des autorités reconnues par la bibliothèque LDAP du système :
TLS_CACERT /etc/ssl/certs/lab-ca.pem
Tester puis importer
L'onglet Tester vérifie l'hôte, le port et le compte. Un succès ne dit rien du filtre ni du champ identifiant : il reste à importer.
| Action | Où | Effet |
|---|---|---|
| Importation de nouveaux utilisateurs | Administration > Utilisateurs > Liaison annuaire LDAP | crée les comptes trouvés par le filtre |
| Synchronisation des utilisateurs déjà importés | même écran | met à jour les fiches existantes |
| Connexion directe | page de connexion de GLPI | crée le compte à la volée si l'import externe est autorisé |
Pour automatiser, la console GLPI fournit glpi:ldap:synchronize_users, avec notamment --only-create-new, --only-update-existing et --ldap-server-id. Planifiez-la avec cron sous l'utilisateur du serveur web, pour que les fichiers créés gardent les bons droits.
sudo -u www-data php /var/www/glpi/bin/console glpi:ldap:synchronize_users --only-update-existing
Les erreurs les plus courantes
- Test réussi, mais personne ne se connecte : champ identifiant faux, filtre trop strict, ou aucune règle d'affectation d'habilitations.
- Utilisateur introuvable pour certains comptes : la documentation GLPI cite le cas des comptes AD limités à certains ordinateurs ; ajoutez le contrôleur de domaine à la liste des machines autorisées.
- Import incomplet sur un grand domaine : AD limite par défaut le nombre de résultats par requête. Activez Utiliser les résultats paginés dans les informations avancées et réglez la Taille de la page.
- Annuaire dans un autre fuseau horaire : la documentation demande alors d'ajuster le champ Fuseau horaire des informations avancées.
La même logique de compte de service et de filtre s'applique ailleurs dans un lab : voyez la connexion de Centreon à Active Directory. Une fois les utilisateurs en place, l'étape suivante est l'inventaire avec l'agent GLPI. Les autres tutoriels sont rassemblés dans la rubrique GLPI.
Questions fréquentes
Quel champ identifiant choisir pour Active Directory ?
samaccountname, qui correspond à l'identifiant de connexion Windows. Sur un annuaire OpenLDAP, on utilise en général uid. Le champ de synchronisation, lui, doit être objectguid pour AD.
GLPI peut-il utiliser plusieurs annuaires LDAP ?
Oui, sans limite de nombre. Plus il y en a, plus la recherche d'un nouvel utilisateur à sa première connexion est longue, puisque GLPI les interroge tour à tour. Un seul peut être serveur par défaut.
Que se passe-t-il si le contrôleur de domaine est indisponible ?
Les utilisateurs liés à cet annuaire ne peuvent plus se connecter. GLPI permet de déclarer des réplicats, d'autres serveurs avec les mêmes données, utilisés seulement quand le serveur principal ne répond plus.
Les groupes AD sont-ils importés ?
GLPI peut récupérer les groupes de l'annuaire ; la méthode de récupération se règle dans l'onglet Groupes de l'annuaire. Testez-la sur quelques comptes avant une synchronisation complète.
Le mot de passe du compte de service a disparu après l'enregistrement, est-ce normal ?
Oui. La documentation GLPI indique que ce champ apparaît vide après l'enregistrement et que le mot de passe est bien conservé en base. Ne le ressaisissez que pour le changer.