16/05/2024

Linux

GLPI : comment configurer l’authentification LDAP via l’Active Directory ?

I. Présentation

Dans ce tutoriel, nous allons avoir comment configurer l'authentification LDAP de GLPI pour pouvoir se connecter à l'application GLPI à partir des comptes utilisateurs présents dans un annuaire Active Directory. Ainsi, un utilisateur pourra accéder à GLPI à l'aide de son nom d'utilisateur et son mot de passe habituel (puisque ce seront les informations de son compte dans l'Active Directory).

GLPI propose nativement un modèle d'authentification LDAP, ce qui lui permet de s'appuyer sur un annuaire de comptes externe, comme l'Active Directory de Microsoft. Il faut savoir que les comptes utilisateurs de l'Active Directory seront importés dans la base de données de GLPI, grâce à un processus de synchronisation. Lorsqu'un utilisateur Active Directory se connecte pour la première fois, son compte est créé dans GLPI. Avant cela, il n'est pas visible, sauf si vous décidez d'effectuer un "import en masse" des comptes AD dans GLPI.

Par ailleurs, en complément de ce tutoriel, voici le lien vers la documentation officielle :

II. Configuration cible

Avant de passer à la configuration, voici quelques informations sur l'environnement utilisé.

Pour cette démonstration, le domaine Active Directory "it-connect.local" sera utilisé et le contrôleur de domaine SRV-ADDS-02 sera utilisé. Ce serveur dispose de l'adresse IP "10.10.100.11" et la connexion sera effectuée en LDAP, sur le port par défaut (389).

- Le compte utilisateur qui sera utilisé comme "connecteur" pour permettre à GLPI de se connecter à l'Active Directory se nomme "Sync_GLPI". Il est stocké dans l'unité d'organisation "Connecteurs" de l'annuaire (voir image ci-dessous). Il s'agit d'un compte utilisateur standard, sans aucun droit particulier sur l'annuaire Active Directory. Faites-moi plaisir : n'utilisez pas de compte Administrateur.

- Tous les utilisateurs qui doivent pouvoir se connecter à GLPI à l'aide de leur compte Active Directory sont stockés dans l'unité d'organisation "Personnel" visible ci-dessous. Elle correspond à ce que l'on appelle la "Base DN" vis-à-vis du connecteur LDAP de GLPI. Les autres utilisateurs ne pourront pas se connecter. En fait, ce n'est pas utile de mettre la racine du domaine comme base DN : essayez de restreindre autant que possible pour limiter la découverte de l'annuaire Active Directory au strict nécessaire.

- Les utilisateurs de l'Active Directory pourront se connecter à GLPI à l'aide de leur identifiant correspondant à l'attribut "UserPrincipalName" (mis en évidence, en jaune, sur l'image ci-dessous). Cet identifiant, sous la forme "identifiant + nom de domaine", leur permettra se connecter à GLPI avec un identifiant qui correspond à leur e-mail. L'alternative consisterait à utiliser l'attribut "SamAccountName" (soit l'identifiant sous la forme "DOMAINE\identifiant").

GLPI - Arborescence Active Directory

Voilà, maintenant, nous allons pouvoir dérouler la configuration !

II. Installer l'extension LDAP de PHP

L'extension LDAP de PHP doit être installée sur votre serveur pour que GLPI soit capable de communiquer avec votre serveur contrôleur de domaine Active Directory (ou tout autre annuaire LDAP).

Connectez-vous à votre serveur GLPI et exécutez les deux commandes suivantes pour mettre à jour le cache des paquets et procéder à l'installation de l'extension.

sudo apt-get update
sudo apt-get install php-ldap

Cette extension sera installée et activée dans la foulée. Vous n'avez pas besoin de relancer le serveur.

III. Ajouter un annuaire LDAP dans GLPI

Désormais, nous allons ajouter notre annuaire Active Directory à GLPI. Connectez-vous à GLPI avec un compte administrateur, puis dans le menu "Configuration", cliquez sur "Authentification".

GLPI - Configuration - Authentification

Au centre de l'écran, cliquez sur "Annuaire LDAP".

GLPI - Authentification - Annuaire LDAP

Puis, cliquez sur le bouton "Ajouter".

GLPI - Ajouter un nouvel annuaire LDAP

Un formulaire s'affiche à l'écran. Comment le renseigner ? À quoi correspondent tous ces champs ? C'est que nous allons voir ensemble.

  • Nom : le nom de cet annuaire LDAP, vous pouvez utiliser un nom convivial, ce n'est pas obligatoirement le nom du domaine, ni le nom du serveur.
  • Serveur par défaut : faut-il s'appuyer sur ce serveur par défaut pour l'authentification LDAP ? Il ne peut y avoir qu'un seul serveur LDAP défini par défaut.
  • Actif : nous allons indiquer "Oui", sinon ce sera déclaré, mais non utilisé.
  • Serveur : adresse IP du contrôleur de domaine à interroger. Avec le nom DNS, cela ne semble pas fonctionner (malheureusement).
  • Port : 389, qui est le port par défaut du protocole LDAP. Si vous utilisez TLS, il faudra le préciser à postériori, dans l'onglet "Informations avancées", du nouveau serveur LDAP.
  • Filtre de connexion : requête LDAP pour rechercher les objets dans l'annuaire Active Directory. Généralement, nous faisons en sorte de récupérer les objets utilisateurs ("objectClass=user") en prenant uniquement les utilisateurs actifs (via un filtre sur l'attribut UserAccountControl).
  • BaseDN : où faut-il se positionner dans l'annuaire pour rechercher les utilisateurs ? Ce n'est pas nécessaire la racine du domaine, tout dépend comment est organisé votre annuaire et où se situent les utilisateurs qui doivent pouvoir se connecter. Il faut indiquer le DistinguishedName de l'OU.
  • Utiliser bind : à positionner sur "Oui" pour du LDAP classique (sans TLS)
  • DN du compte : le nom du compte à utiliser pour se connecter à l'Active Directory. En principe, vous ne pouvez pas utiliser de connexion anonyme ! Ici, il ne faut pas indiquer uniquement le nom du compte, mais la valeur de son attribut DistinguishedName.
  • Mot de passe du compte : le mot de passe du compte renseigné ci-dessus
  • Champ de l'identifiant : dans l'Active Directory, quel attribut doit être utilisé comme identifiant de connexion pour le futur compte GLPI ? Généralement, UserPrincipalName ou SamAccountName, selon vos besoins.
  • Champ de synchronisation : GLPI a besoin d'un champ sur lequel s'appuyer pour synchroniser les objets. Ici, nous allons utiliser l'objectGuid de façon à avoir une valeur unique pour chaque utilisateur. Ainsi, si un utilisateur est modifié dans l'Active Directory, GLPI pourra se repérer grâce à cet attribut qui lui n'évoluera pas (sauf si le compte est supprimé puis recréé dans l'AD).
GLPI - Formulaire configuration annuaire LDAP

Ci-dessous, la configuration utilisée pour cette démonstration et qui correspond à la "configuration cible" évoquée précédemment.

  • Nom : Active Directory - it-connect.local
  • Serveur par défaut : Oui
  • Actif : Oui
  • Serveur : 10.10.100.11
  • Port : 389
  • Filtre de connexion : (&(objectClass=user)(objectCategory=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
  • BaseDN : OU=Personnel,DC=it-connect,DC=local
  • Utiliser bind : Oui
  • DN du compte : CN=Sync_GLPI,OU=Connecteurs,OU=Tiering,OU=IT,DC=it-connect,DC=local
  • Mot de passe du compte : Mot de passe du compte "Sync_GLPI"
  • Champ de l'identifiant : userprincipalname
  • Champ de synchronisation : objectguid

Quand votre configuration est prête, cliquez sur "Ajouter".

GLPI - Configurer Active Directory

Dans la foulée, GLPI va effectuer un test de connexion LDAP et vous indiquer s'il est parvenu, ou non, à se connecter à votre annuaire. Si ce n'est pas le cas (comme moi, la première fois), cliquez sur le nom de votre annuaire, vérifiez la configuration, puis retournez dans "Tester" sur la gauche afin de lancer un nouveau test. Pour ma part, le problème venait du champ "Serveur" : j'avais mis le nom DNS du serveur à la place de l'adresse IP, mais cela ne fonctionnait pas. Pourtant, mon serveur GLPI parvient bien à résoudre le nom DNS.

GLPI - Tester authentification LDAP

Par ailleurs, vous pouvez explorer les différents onglets : Utilisateurs, Groupes, Réplicats, etc... Pour affiner la configuration. L'onglet "Utilisateurs" est intéressant pour configurer le mappage entre les champs d'une fiche utilisateur dans GLPI et les attributs d'un compte dans l'Active Directory. Quant à l'onglet "Réplicats", vous pouvez l'utiliser pour déclarer un ou plusieurs contrôleurs de domaine "de secours" à contacter si le serveur principal n'est plus joignable.

IV. Tester la connexion Active Directory

Si GLPI valide la connexion à votre annuaire Active Directory, vous pouvez tenter de vous authentifier à l'application avec un compte utilisateur. Pour ma part, c'est l'utilisateur Guy Mauve qui va servir de cobaye. Son login GLPI sera donc "[email protected]" puisque je m'appuie sur l'attribut UserPrincipalName. Pour le mot de passe, je dois indiquer celui de son compte Active Directory.

Remarque : la source d'authentification doit être l'Active Directory.

Connexion à GLPI avec un compte Active Directory

Voilà, l'authentification fonctionne ! L'utilisateur a pu se connecter avec son compte Active Directory et il hérite du rôle "Self-service".

GLPI - Exemple - Connexion avec un utilisateur AD

Dans le même temps, à partir du compte admin de GLPI, je peux remarquer la présence d'un nouveau compte utilisateur dont l'identifiant est "[email protected]" ! GLPI a également récupéré le nom, le prénom et l'adresse e-mail à partir de différents attributs de l'objet LDAP.

Synchronisation GLPI et utilisateur Active Directory

En complément, à partir de la section "Configuration" puis "Générale", vous pouvez décocher l'option "Afficher la liste des sources d'authentification sur la page de login" pour que la page de connexion à GLPI n'affiche pas la liste de vos sources. Ceci évite d'indiquer publiquement que votre GLPI est synchronisé avec l'Active Directory. Lorsqu'un utilisateur va chercher à s'authentifier, GLPI va sélectionner la bonne source d'authentification (Merci à @Patrice Vaillant pour l'astuce).

V. Forcer une synchronisation Active Directory

A partir de GLPI, vous pouvez forcer une synchronisation LDAP de façon à mettre à jour les comptes dans GLPI "liés" à des comptes Active Directory, mais aussi pour importer en masse tous les comptes des utilisateurs Active Directory. Ceci vous évite d'attendre la première connexion et vous permet de préparer le compte : attribution du bon rôle, etc.

Cliquez sur "Administration" dans le menu, puis "Utilisateurs". Ici, vous avez accès au bouton "Liaison annuaire LDAP".

Vous avez ensuite le choix entre deux actions différentes, selon vos besoins.

Si vous cliquez sur "Importation de nouveaux utilisateurs", vous pourrez importer en masse les comptes dans l'Active Directory. Il vous suffit de lancer une recherche, de sélectionner les comptes à importer et de lancer l'import grâce au bouton "Actions".

Importer des comptes AD dans GLPI.jpg

Remarque : vous pouvez aussi importer des groupes Active Directory. Pour cela, suivez la même procédure, mais en allant dans "Groupes" sous "Administration".

VI. Conclusion

En suivant ce tutoriel, vous devriez être en mesure d'importer les comptes utilisateurs d'un annuaire Active Directory dans GLPI, pour faciliter la connexion de vos utilisateurs. Sachez que si un utilisateur change son mot de passe dans l'Active Directory, ce n'est pas un problème : GLPI vérifie les informations lors de la connexion.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

12 commentaires sur “GLPI : comment configurer l’authentification LDAP via l’Active Directory ?

  • Chapitre VI. Activer le SSO pour se connecter 😉

    Répondre
      • Chez nous il est en place, ldap AD + SSO dans Glpi 🙂

        Répondre
        • Ldap + SSO
          Tu ne confond pas Ldap + MFA ?
          Car pour moi il n’est pas possible de mixer le LDAP et le SAML

          Répondre
      • Voici les grandes lignes :
        Installer le rôle Authentification windows sur le IIS
        Sur le site IIS, menu authentification
        Désactiver Authentification anonyme et activer Authentification Windows
        Dans Glpi
        Configuration / Authentification/autres méthodes
        Mettre REMOTE_USER dans Champs de stockage de l’identification dans la requête http

        Et ensuite GPO pour ajouter glpi dans les site de confiance (intranet local)

        Répondre
        • Testé et fonctionnel !
          Il faudra au préalable installer la fonctionnalité « Authentification Windows » via le gestionnaire de serveur.
          Concrètement, ça pose une authentification par boîte de dialogue au niveau du serveur Web, dans laquelle il suffit de renseigner ses identifiants AD. C’est intéressant de désactiver l’authentification anonyme au niveau de IIS, pour protéger notamment le formulaire GLPI classique de connexion exposé en frontal sur Internet. Merci @Jean !

          Répondre
      • Je viens de mettre en place une connexion LDAPS afin de protéger les identifiants AD sur le réseau. Ca n’a pas été une sinécure, mais c’est désormais fonctionnel (avec config IIS) !

        Répondre
  • Merci pour ce tuto.
    Il serait interessant je pense d’y ajouter une annexe concernant la mise en place LDAPS car celle-ci peut-être cruciale dans la sécurisation d’un SI.

    Bonne journée

    Répondre
  • un petit plus appris en formation TSSR cette semaine:

    sur la première ligne du formulaire de configuration LDAP il y a des présélections.
    en cliquant sur active directory, on remplit certains champs avec des valeurs par défaut.

    Répondre
  • Bonjour,

    De mémoire, il est également possible d’automatiser la synchronisation ldap, afin que les nouveaux utilisateurs AD apparaissent automatiquement dans GLPI.

    Script existant:
    /var/www/glpi/scripts/ldap_mass_sync.php

    Crontab-e

    * */1 * * * /usr/bin/php5 /var/www/glpi/scripts/ldap_mass_sync.php ldapservers_id=x action=1

    Le paramètre ‘action’ indique s’il faut effectuer un import (valeur 0), une synchronisation (valeur 1), ou s’il faut réimporter et resynchroniser tous les utilisateurs (valeur 2). Si cette option n’est pas définie, le script est en mode synchronisation.

    * */1 * * * = toutes les heures

    Evidemment, il faut aussi penser à configurer le GLPI Cron.

    Répondre
    • Salut
      Attention il me semble que ce script est obsolete.
      Il faut utiliser /var/www/glpi/bin/console glpi:ldap:synchronize_users -c

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.