GLPI – Les modes d’authentification externe

La possibilité qu’offre GLPI de gérer manuellement une base de comptes ne peut être considérée comme suffisante dès lors que le nombre d’utilisateurs devient trop important.

Il convient alors de s’appuyer sur une source externe de données pour valider le fait qu’un utilisateur a le droit de se connecter à l’application.

En fonction de la source de données externe choisie, GLPI proposera différents modes de fonctionnement. Il sera par exemple possible de choisir d’importer les données d’un annuaire pour alimenter la base locale de comptes. Cette solution simplifie bien sûr la gestion de la base de comptes mais reste un mode de gestion manuel.

GLPI propose donc de déléguer l’authentification à un outil externe. Les principaux outils sur lesquels peut s’appuyer GLPI sont :

  • un annuaire LDAP,
  • un serveur de messagerie,
  • un serveur CAS.

Dès lors qu’un utilisateur sera authentifié au travers d’une source externe, il vous sera possible de l’ajouter automatiquement à la base de comptes de l’application.

Pour activer l’ajout des utilisateurs qui s’authentifient sur des ressources externes :

 Placez-vous dans le menu Configuration – Authentification.

images/03RI06V3.PNG

 Cliquez sur le lien Configuration.

La fenêtre de configuration des authentifications externes s’affiche.

 Placez le champ Ajout automatique des utilisateurs à partir des sources externes d’authentification sur Oui.

 Les autres champs de cette fenêtre de configuration sont :

Ajouter un utilisateur sans habilitation depuis annuaire LDAP : ce champ permet d’autoriser l’ajout d’un utilisateur dans la base de comptes locale, même si aucune règle ne lui donne d’habilitation.

Action lorsqu’un utilisateur est supprimé de l’annuaire LDAP : (Conserver / Désactiver / Mettre à la poubelle / Retirer les habilitations et les groupes (dynamiques)) : ce champ permet de configurer le comportement de GLPI lors des synchronisations avec l’annuaire LDAP si un utilisateur a été supprimé de l’annuaire.

Fuseau horaire du serveur GLPI : ce champ permet de configurer le décalage horaire qui pourrait exister entre le serveur où est installé GLPI et celui où est installé l’annuaire LDAP.

images/03RI07V3.PNG

 Enregistrez les modifications en cliquant sur le bouton Sauvegarder.

La question pourrait se poser sur l’intérêt de conserver ces comptes dans la base de comptes dès lors que l’authentification externe permet de s’affranchir de cette gestion locale. L’intérêt réside dans la possibilité de leur associer des éléments de l’inventaire et d’effectuer un suivi de leurs demandes d’assistance.

1. LDAP

Associer GLPI à un annuaire LDAP est aujourd’hui la solution qui offre le plus de fonctionnalités : LDAP permet d’authentifier les utilisateurs, mais également de récupérer les données de l’annuaire pour alimenter les champs du compte créé localement. En fonction des informations contenues dans l’annuaire, il sera également possible de positionner des droits spécifiques à chaque utilisateur de manière dynamique, à l’aide de règles. Ainsi, seul l’annuaire LDAP sera à maintenir à jour pour conserver les droits actualisés dans GLPI. À ce jour, GLPI supporte tous les annuaires compatibles LDAP v3.

Il sera également possible de récupérer automatiquement l’arborescence des entités, ainsi que les comptes appartenant aux groupes, dès lors que la dénomination des groupes le permettra.

Un utilisateur pourra ainsi obtenir des droits seulement sur son service d’appartenance, ou bien recevoir des droits étendus en fonction des données stockées dans l’annuaire.

L’écran de configuration des connexions LDAP sert également à définir les connexions Active Directory (AD). Pour mémoire, Active Directory n’est que l’implémentation Windows d’un annuaire LDAP.

a. Configuration de la connexion LDAP

 Placez-vous dans le menu Configuration – Authentification.

 Cliquez sur le lien Annuaires LDAP.

images/02RIbouton017.PNG

 Cliquez sur le bouton Ajouter .

La fiche de saisie des données de connexion à l’annuaire s’affiche.

Les différents champs proposés sont :

Préconfiguration : cet item se présente sous la forme de deux liens.

  • Active Directory : ce lien permet de préremplir le champ Filtre de connexion avec un filtre par défaut et le Champ de l’identifiant avec la valeur samaccountname.
  • Valeur(s) par défaut : ce lien permet de préremplir le Champ de l’identifiant avec la valeur uid.

Nom : il est possible de définir plusieurs connexions LDAP. Ce champ permet donc d’identifier chaque connexion. Le nom devra être le plus explicite possible afin d’être identifié lorsqu’il apparaît dans d’autres écrans de l’application.

Lorsqu’un utilisateur tente de s’authentifier pour la première fois, les différentes connexions sont testées. Lorsque l’authentification est réussie sur un serveur, cette information est associée au compte de la base locale. Les tentatives de connexions ultérieures ne pourront donc se faire que sur ce serveur.

Serveur par défaut (Non/Oui) : ce champ permet de définir la connexion principale dans le cas où plusieurs connexions sont définies.

Actif (Non/Oui) : ce champ permet d’activer ou de désactiver une connexion. Cet item peut être utile en cas de maintenance du serveur pour bloquer toutes les connexions en une seule action.

Serveur : ce champ est destiné à recevoir l’adresse du serveur hébergeant l’annuaire LDAP.

Port (par défaut 389) : ce champ contient le port d’échange des données avec l’annuaire LDAP.

Filtre de connexion : ce champ permet de définir une condition de recherche, afin de limiter le nombre d’enregistrements renvoyés par la requête.

BaseDN : ce champ permet de définir le point de départ des recherches dans l’arborescence de l’annuaire LDAP.

DN du compte (pour les connexions non anonymes) : ce champ contient le nom du compte à utiliser par GLPI pour récupérer les données lorsque les connexions anonymes ne sont pas autorisées sur le serveur.

Mot de passe du compte (pour les connexions non anonymes) : ce champ contient le mot de passe associé au compte ci-dessus pour les connexions non anonymes.

Champ de l’identifiant : ce champ permet de désigner le champ à récupérer dans l’annuaire LDAP, qui servira d’identifiant dans la base GLPI. Si par exemple le login utilisé dans GLPI est l’adresse email, vous placerez la valeur mail dans ce champ.

Commentaires : ce champ vous permet d’ajouter toutes les informations que vous jugez nécessaires en vue d’une maintenance ultérieure.

images/03RI08V3.PNG

 Pour valider la création de la connexion, cliquez sur le bouton Ajouter.

GLPI teste la connexion sur le serveur LDAP.

 Retournez dans la fiche de la connexion. Un ensemble de sous-menus a été ajouté.

Tester

Cet item contient le Test de connexion à l’annuaire LDAP. Un bouton Tester permet de relancer le test de connexion.

images/03RI09V3.PNG

Utilisateurs

Cet item contient les champs de liaison à l’annuaire LDAP. Pour chacun des champs suivants de la base GLPI vous allez pouvoir désigner le champ de l’annuaire LDAP à récupérer.

Les champs pour lesquels l’attribut LDAP fait partie des attributs courants sont :

  • Nom de famille : sn
  • Prénom : givenname
  • Courriel : mail
  • Téléphone : telephonenumber
  • Langue : preferredlanguage
  • Matricule : employeenumber
  • Titre : title

D’autres champs peuvent également être alimentés à partir des attributs LDAP de votre choix :

  • Téléphone 2
  • Téléphone mobile
  • Catégorie
  • Commentaires
  • Courriel 2
  • Courriel 3
  • Courriel 4
  • Image
  • Lieu
images/03RI10V3.PNG

Groupes

Cet item permet de définir les critères de recherche d’appartenance à des groupes. Cette fonction permet de récupérer automatiquement les listes d’utilisateurs des groupes présents dans l’annuaire pour reporter l’information dans GLPI. Les champs de définition sont :

Type de recherche (Dans les utilisateurs/Dans les groupes/Utilisateurs & groupes) : ce champ permet définir les attributs à prendre en compte lors de la recherche.

Attribut utilisateur indiquant ses groupes : ce champ permet de désigner le nom du champ désignant les groupes d’un utilisateur parmi les données de cet utilisateur. Ce champ est utilisé lorsque le Type de recherche est Dans les utilisateurs ou Utilisateurs & groupes.

Filtre pour la recherche dans les groupes : ce champ permet de limiter la recherche à une partie seulement de l’arborescence de l’annuaire.

Attribut des groupes contenant les utilisateurs : ce champ permet de définir l’attribut désignant un utilisateur lorsque la recherche se fait à partir de la consultation des données des groupes.

Utiliser le DN pour la recherche (Non/Oui) : ce champ permet de définir si la recherche doit se faire en utilisant le compte de l’utilisateur comme critère de recherche.

images/03RI11V3.PNG

Informations avancées

Cet item contient des paramétrages avancés de la connexion :

Utiliser TLS (Non/Oui) : TLS (Transport Layer Security) est un protocole de sécurisation des échanges. Ce champ permet donc de spécifier si le serveur utilise ce mode de sécurisation.

Fuseau horaire de l’annuaire LDAP : ce champ permet de gérer un éventuel décalage horaire entre le serveur GLPI et le serveur d’authentification LDAP.

Utiliser les résultats paginés (Oui/Non)/Taille de la page/Nombre maximum de résultats : ces trois nouveaux champs permettent de contourner la limitation du nombre d’enregistrements retournés par une requête LDAP. Cette limite est configurée dans la variable sizelimit gérée par PHP. C’est pourquoi nous ne détaillerons pas ici davantage le réglage de ces champs.

Traitement des alias LDAP (Jamais déréférencés (défaut)/Toujours déréférencés/Déréférencés pendant la recherche/Déréférencés pendant la localisation (pas pendant la recherche)) : un annuaire LDAP permet de définir des alias des différents éléments présents dans sa base de données. Ce champ permet de définir comment GLPI doit se comporter avec les alias lors des recherches.

images/03RI12V3.PNG

Réplicats

Cet item permet de définir des adresses de serveurs de réplication de l’annuaire LDAP, afin d’assurer la continuité de service en cas de problème sur le serveur principal.

Nom : ce champ permet de définir un nom au serveur que l’on veut paramétrer.

Serveur : ce champ indique le nom du serveur tel qu’il est connu sur le réseau.

Port : ce champ indique le port de connexion utilisé.

 Validez la création en cliquant sur le bouton Ajouter.

Un bouton Tester permet de vérifier que cette connexion est correcte.

images/03RI13V3.PNG

b. Récupération de données depuis un annuaire LDAP

GLPI vous permet d’alimenter la base des comptes utilisateurs ainsi que la liste des groupes de manière automatisée à partir des données contenues dans l’annuaire LDAP.

La récupération des utilisateurs de l’annuaire LDAP

 Placez-vous dans le menu Administration – Utilisateurs.

 Cliquez sur le bouton Liaison annuaire LDAP.

images/03RI05xV3.PNG

 Cliquez sur le lien Importation de nouveaux utilisateurs.

images/03RI14V3.PNG

Deux modes sont proposés : expert et simplifié. Ce choix se fait par l’intermédiaire d’un lien cliquable situé en haut à droite de la fiche.

Le mode expert vous permet de configurer l’importation au travers de plusieurs champs :

  • Sélectionnez l’entité souhaitée : ce champ permet de sélectionner l’entité dans laquelle la recherche s’effectuera. GLPI récupère dans la fiche de l’entité le contenu du champ Filtre LDAP associé à l’entité (menu Administration – Entités, item Informations avancées) et le compare à la valeur de l’identifiant renseigné dans le champ Attribut représentant l’entité(item Entité de la définition de la connexion LDAP).
  • Voir les utilisateurs modifiés de/à (deux dates à préciser en Jour/Mois/Année Heure/Minute) : ce champ est activé par un clic sur le lien Activer le filtrage par date. Ces valeurs permettent de restreindre la plage de dates sur laquelle des modifications doivent être recherchées. Il est ainsi possible de ne sélectionner que les utilisateurs ayant une modification dans l’annuaire LDAP au cours de la semaine écoulée.Vous pouvez également ajouter des critères de recherche pour restreindre la liste des comptes à importer. Ces critères sont :
  • Identifiant
  • Courriel
  • Nom de famille
  • Prénom
  • Téléphone
images/03RI15V3.PNG

Le mode simplifié vous permet de configurer l’importation au travers des champs de recherche :

  • BaseDN : ce champ permet de définir le point de départ des recherches dans l’arborescence de l’annuaire LDAP.
  • Filtre de recherche des utilisateurs : ce champ reprend le paramétrage du filtre de connexion renseigné dans la configuration de la connexion LDAP.
images/03RI16V3.PNG

Ces champs sont prérenseignés avec les valeurs définies précédemment comme critères de recherche dans la configuration de la connexion LDAP.

La mise à jour des données des utilisateurs à partir de l’annuaire LDAP

 Placez-vous dans le menu Administration – Utilisateurs.

 Cliquez sur le bouton Liaison annuaire LDAP.

 Cliquez sur le lien Synchronisation des utilisateurs déjà importés.

Comme pour l’importation de nouveaux utilisateurs, deux modes (simplifié et expert) sont proposés. Dans chacun de ces deux modes, les champs à renseigner sont les mêmes que pour l’importation.

images/03RI16xV3.PNG

Il est possible d’associer l’alimentation des données des fiches des utilisateurs à partir des données de l’annuaire LDAP avec un autre mode d’authentification. Il est par exemple possible de mettre en place une authentification CAS, avec une récupération des données de l’annuaire pour mettre à jour les champs concernant l’utilisateur.

La récupération des groupes à partir de l’annuaire LDAP

Comme pour l’importation des utilisateurs, GLPI propose d’importer les groupes à partir de l’annuaire LDAP.

 Placez-vous dans le menu Administration – Groupes.

 Cliquez sur le bouton Liaison annuaire LDAP.

images/03RI18V3.PNG

 Dans la section Import en masse de groupes depuis un annuaire LDAP, cliquez sur le lien Importation de nouveaux groupes.

images/03RI19V3.PNG

La recherche s’effectue à partir du paramétrage saisi dans l’onglet Groupes de la définition de la connexion LDAP.

2. Sur un serveur de messagerie

GLPI propose d’utiliser un serveur de messagerie pour assurer l’authentification des utilisateurs. Ce mode est parfois appelé authentification IMAP.

Le principe est le suivant : un serveur de messagerie est désigné dans GLPI comme serveur d’authentification externe. Les paramètres de connexion à ce serveur sont décrits ci-dessous.

L’utilisateur saisit son identifiant/mot de passe de messagerie dans l’interface d’accueil de GLPI.

GLPI consulte le serveur de messagerie désigné pour vérifier l’exactitude du couple login/mot de passe saisi.

En cas de succès, le serveur de messagerie renvoie l’identifiant de messagerie de l’utilisateur.

Configuration d’une connexion

 Placez-vous dans le menu Configuration – Authentification.

 Cliquez sur le lien Serveur de messagerie.

images/02RIbouton017.PNG

 Cliquez sur le bouton Ajouter .

Les différents champs proposés sont :

Nom : ce champ définit le nom de la connexion. Ce nom pourra ensuite être utilisé comme critère dans les règles pour attribuer des habilitations aux utilisateurs. Des droits spécifiques pourront ainsi être attribués en fonction du serveur sur lequel les utilisateurs se sont authentifiés. Le nom de la connexion doit donc être suffisamment explicite pour pouvoir être désigné comme critère. 

Actif (Non/Oui) : ce champ permet d’activer ou de désactiver l’authentification externe sur ce serveur.

Nom domaine de messagerie (adresse de messagerie de type identifiant@domaine) : ce champ permet de générer automatiquement une adresse mail à partir du login en vue de l’authentification, en y ajoutant le nom de domaine saisi ici. Lorsque le login est par exemple prenom.nom, l’adresse mail obtenue sera prenom.nom@domaine.

Serveur : ce champ permet de définir l’adresse du serveur de messagerie utilisé pour l’authentification externe.

Options de connexion : ces options permettent de configurer la façon dont GLPI va échanger avec le serveur de messagerie.

  • IMAP/POP : ce champ permet de définir si le serveur est configuré en IMAP ou en POP. Ce mode permet de définir le port utilisé pour les échanges.
  • SSL : ce champ permet de définir si les échanges sont sécurisés ou pas par SSL (Secure Sockets Layers).
  • TLS/NO-TLS : ce champ permet de définir si les échanges sont sécurisés ou pas par TLS (Transport Layer Security). TLS est un protocole de sécurisation des échanges au même titre que SSL auquel il succède.
  • NO-VALIDATE-CERT/VALIDATE-CERT : ce champ permet de définir si la vérification de la validité du certificat est exigée lors de la connexion au serveur de messagerie.
  • NORSH : ce champ permet d’interdire l’utilisation de RSH ou SSH pour établir une session de pré-identification IMAP.
  • SECURE : ce champ indique que le mot de passe de connexion ne sera pas visible lors de l’échange.
  • DEBUG : ce champ permet de générer un fichier trace qui permettra d’analyser les éventuels problèmes de connexion.

Dossier des messages entrants (optionnel, souvent INBOX) : ce champ permet de tester la connexion sur le dossier contenant les messages de la boîte aux lettres du compte de l’utilisateur.

Port (optionnel) : ce champ permet de définir le port sur lequel se font les échanges. En général : IMAP simple = port 143, IMAP sécurisé = port 993, POP simple = port 110 et POP sécurisé = port 995.

Chaîne de connexion : il ne s’agit pas ici d’un champ de saisie. Il s’agit d’un champ calculé à partir des données saisies ci-dessus. Son contenu est affiché après la validation des données (bouton Sauvegarder lors de la création de la connexion ou Actualiser lors de la modification de la valeur d’un champ).

Commentaires : ce champ vous permet d’annoter la définition de cette connexion. Il peut être utile pour une maintenance future de détailler le fonctionnement de votre serveur de messagerie.

 Validez la création en cliquant sur le bouton Sauvegarder.

La connexion est créée et un message de succès s’affiche en haut de la page.

 Réouvrez la connexion, soit en cliquant sur le nom de la connexion dans le message, soit en cliquant sur le bouton Rechercher pour afficher la liste des connexions disponibles, puis en cliquant sur le nom de la connexion que vous venez de créer dans la liste.

Le contenu du champ Chaîne de connexion a été automatiquement généré.

images/03RI20V3.PNG

Le sous-menu Tester propose une fenêtre de saisie pour tester la connexion au serveur de messagerie.

Pour effectuer un test :

 Saisissez un Identifiant et un Mot de passe valides, et cliquez sur le bouton Tester.

images/03RI21V3.PNG

La connexion est alors testée avec ce compte.

3. Authentification CAS

L’authentification CAS est une implémentation de l’authentification LDAP pour les applications PHP. Cette solution s’appuie sur un serveur totalement externe à l’application GLPI : l’identifiant et le mot de passe de l’utilisateur ne sont pas saisis dans l’interface de GLPI, mais dans l’interface du serveur CAS.

Ce mode d’authentification présente donc un niveau de sécurité supérieur à certains autres modes d’authentification externe : l’authentification POP/IMAP par exemple impose de mettre en place une connexion https entre le poste utilisateur et le serveur GLPI, pour que le login et le mot de passe de messagerie de l’utilisateur ne transitent pas en clair entre le poste client et le serveur.

Pour mettre en place une authentification CAS :

 Placez-vous dans le menu Configuration – Authentification.

 Cliquez sur le lien Autre mode d’authentification.

 Complétez les champs de la section Authentification par CAS :

Hôte CAS : ce champ permet de désigner l’adresse du serveur d’authentification CAS. Exemple : monserveurCAS.mondomaine.fr.

Port : ce champ correspond au port utilisé par le serveur CAS (par défaut le port = 443).

Répertoire de base (optionnel) : ce champ permet éventuellement de définir le répertoire sur lequel doit pointer la connexion au serveur CAS.

Adresse web de retour à la déconnexion (logout) : ce champ permet de définir l’adresse sur laquelle l’utilisateur sera redirigé lorsqu’il se déconnectera de GLPI. Exemple : http://ip_de_mon_serveur/glpi/login.php.

images/03RI22V3.PNG

Lorsque le mode d’authentification CAS est activé (c’est-à-dire lorsque les champs sont renseignés), le fait d’ouvrir GLPI au travers de votre navigateur web entraîne une redirection automatique vers le serveur d’authentification CAS.

Attention, lorsque vous mettez en place ce mode d’authentification, à votre première connexion vous hériterez des habilitations par défaut. Vous risquez donc de perdre les droits Super-Admin. Pour pallier cet inconvénient, vous pourrez forcer GLPI à s’ouvrir en utilisant une authentification sur la base locale. Pour cela, utilisez l’URL suivante : http://ip_de_votre_serveur/glpi/index.php?noAUTO=1

4. Autres modes d’authentification

Les trois modes d’authentification externe précédents sont largement majoritaires. GLPI offre toutefois d’autres possibilités d’authentification externe. La configuration de ces modes se fait dans la même fenêtre que la configuration de l’authentification CAS :

 Placez-vous dans le menu Configuration – Authentification.

 Cliquez sur le lien Autre mode d’authentification.

 Complétez la section correspondante au mode d’authentification externe choisi.

a. Par certificat x509

L’authentification par certificat x509 impose de mettre en place une infrastructure de gestion de clés (IGC) qui permet de délivrer des certificats aux utilisateurs. Les utilisateurs s’authentifient à l’aide de leur certificat.

Dès lors que l’IGC valide le certificat, GLPI récupère le champ adresse de messagerie contenu dans le celui-ci.

Vous devez donc définir l’Attribut adresse de messagerie pour authentification par certificat x509 contenu dans le certificat de l’utilisateur. Le plus souvent la valeur de ce champ est Email.

Restreindre le champ OU pour l’authentification par certificat x509 (séparateur $)Restreindre le champ CN pour l’authentification par certificat x509 (séparateur $) et Restreindre le champ O pour l’authentification par certificat x509 (séparateur $) : il est possible de restreindre les valeurs acceptées pour les champs OU, CN et O du certificat client. Afin de spécifier plusieurs valeurs pour chaque champ, il suffit de séparer celles-ci par le symbole $.

images/03RI23V3.PNG

b. Autre authentification transmise dans la requête HTTP

La volonté des équipes qui participent à la réalisation de GLPI est de toujours offrir le plus de services aux utilisateurs de l’outil. GLPI offre donc la possibilité d’appuyer l’authentification sur tout autre système externe de votre choix. En retour, cet outil d’authentification externe devra rediriger l’utilisateur sur GLPI.

Lors de la récupération du résultat de l’authentification, GLPI a besoin de récupérer l’identifiant de l’utilisateur pour le gérer dans sa base de comptes. Pour cela, la liste Champs de stockage de l’identifiant dans la requête HTTP propose de choisir l’un des champs suivants :

  • HTTP_AUTH_USER
  • HTTP_REMOTE_USER
  • PHP_AUTH_USER
  • REDIRECT_REMOTE_USER
  • REMOTE_USER
  • USERNAME

GLPI propose enfin une option afin de supprimer les noms de domaine dans les adresses mail, pour ne garder que la partie située avant le signe @ comme identifiant. Pour cela, vous devez configurer le champ Supprimer le domaine des identifiants de la forme identifiant@domaine. On peut mapper les données transmises par le système d’authentification avec les champs du compte utilisateur de GLPI (nom, prénom, email, langue…).

images/03RI24V3.PNG