# Chapitre 4 - Active Directory, inventaire et plugins

LDAP, LDAPS, GLPI Agent, déploiement GPO et Marketplace.

# Préparation de LDAP et LDAPS

## 7.1 Préparer un compte de service

Créer dans Active Directory un compte dédié, par exemple :

```text
svc_glpi_ldap
```

Ce compte doit uniquement disposer des droits de lecture nécessaires dans l’annuaire. Il ne doit pas être administrateur du domaine.

---

## 7.2 Installer l’autorité de certification AD

Si le certificat LDAPS est signé par une autorité interne, copier son certificat sur le serveur GLPI :

```bash
sudo cp ad-ca.crt /usr/local/share/ca-certificates/ad-ca.crt
sudo update-ca-certificates
```

Tester LDAPS :

```bash
openssl s_client \
  -connect dc1.snts.local:636 \
  -servername dc1.snts.local \
  -showcerts
```

Le nom utilisé dans GLPI doit correspondre au certificat du contrôleur de domaine.

---

## 7.3 Paramètres d’annuaire GLPI

Dans **Configuration > Authentification > Annuaires LDAP**, ajouter un annuaire :

| Champ | Exemple |
|---|---|
| Nom | Active Directory SNTS |
| Serveur | `ldaps://dc1.snts.local` |
| Port | `636` |
| Base DN | `DC=snts,DC=local` |
| Root DN | `CN=svc_glpi_ldap,OU=Comptes de service,DC=snts,DC=local` |
| Mot de passe | Mot de passe du compte de service |
| Champ de l’identifiant | `sAMAccountName` |
| Champ de synchronisation | `objectGUID` |

Filtre utilisateur possible :

```ldap
(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
```

Ce filtre sélectionne les utilisateurs et exclut les comptes désactivés.

---

## 7.4 Tester depuis Debian

```bash
ldapsearch -x \
  -H ldaps://dc1.snts.local:636 \
  -D "CN=svc_glpi_ldap,OU=Comptes de service,DC=snts,DC=local" \
  -W \
  -b "DC=snts,DC=local" \
  "(sAMAccountName=alexandre)"
```

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Utilisateurs, groupes et dépannage LDAP

## 7.5 Importer les utilisateurs

Dans **Administration > Utilisateurs** :

1. ouvrir la liaison vers l’annuaire LDAP ;
2. rechercher les nouveaux utilisateurs ;
3. sélectionner les comptes ;
4. les importer ;
5. attribuer le profil et l’entité ;
6. tester la connexion avec un compte standard.

Avant un import massif, configurer les règles d’attribution d’entités et de profils.

---

## 7.6 Groupes LDAP

Configurer ensuite l’import et la synchronisation des groupes. Vérifier :

- le champ de nom du groupe ;
- le champ d’appartenance ;
- l’utilisation de `memberOf` ;
- la récursivité des groupes imbriqués ;
- la correspondance entre groupes AD et profils GLPI.

---

## 7.7 Erreurs LDAP courantes

### `A successful bind must be completed`

Vérifier :

- que le Root DN est complet ;
- que le mot de passe du compte de service est renseigné ;
- que le compte n’est ni verrouillé ni expiré ;
- que le serveur autorise la méthode de liaison utilisée ;
- que le certificat LDAPS est approuvé par Debian.

### `Can't contact LDAP server`

```bash
getent hosts dc1.snts.local
nc -vz dc1.snts.local 636
openssl s_client -connect dc1.snts.local:636
```

### La connexion fonctionne mais aucun utilisateur n’apparaît

Vérifier :

- la Base DN ;
- le filtre ;
- les droits de lecture du compte de service ;
- le champ `sAMAccountName` ;
- la présence des utilisateurs dans l’OU interrogée.

Conserver au moins un compte administrateur local GLPI afin de pouvoir intervenir lorsque l’Active Directory est indisponible.

---

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Installation de GLPI Agent sous Windows

## 8.1 Préparer GLPI

Dans GLPI :

1. vérifier que l’inventaire est activé ;
2. définir les règles d’import et de liaison ;
3. prévoir les entités et tags ;
4. vérifier l’URL d’inventaire.

URL courante :

```text
https://glpi.dreamsaphir.fr/front/inventory.php
```

Avec le plugin GLPI Inventory installé depuis la Marketplace, certaines tâches utilisent :

```text
https://glpi.dreamsaphir.fr/marketplace/glpiinventory/
```

---

## 8.2 Windows — installation silencieuse

Télécharger le MSI x64 depuis les publications officielles de GLPI Agent, puis lancer la commande depuis `cmd.exe` en administrateur :

```bat
msiexec /i GLPI-Agent-1.18-x64.msi /quiet ^
  SERVER="https://glpi.dreamsaphir.fr/front/inventory.php" ^
  RUNNOW=1 ^
  EXECMODE=1 ^
  TAG="PARC-PRODUCTION"
```

Options utiles :

| Option | Rôle |
|---|---|
| `SERVER` | Adresse du serveur d’inventaire |
| `RUNNOW=1` | Lance un inventaire après l’installation |
| `EXECMODE=1` | Installe l’agent comme service |
| `TAG` | Sert aux règles d’affectation |
| `NO_SSL_CHECK=1` | Désactive le contrôle TLS — déconseillé |

Ne pas utiliser `NO_SSL_CHECK=1` en production. Installer correctement la chaîne de certification sur les postes.

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Déploiement de GLPI Agent par GPO

# Déploiement de GLPI Agent par GPO

## 8.3 Déploiement par GPO

Méthode conseillée :

1. placer le MSI sur un partage réseau accessible aux ordinateurs ;
2. créer une GPO liée aux OU contenant les postes ;
3. déployer le MSI par **Configuration ordinateur > Paramètres du logiciel** ou par script de démarrage ;
4. utiliser un tag par site ou population si nécessaire ;
5. tester d’abord sur une OU pilote.

Exemple de script de démarrage :

```bat
@echo off
set "MSI=\\snts.local\NETLOGON\GLPI-Agent-1.18-x64.msi"
set "SERVER=https://glpi.dreamsaphir.fr/front/inventory.php"

if exist "C:\Program Files\GLPI-Agent\glpi-agent.exe" exit /b 0

msiexec /i "%MSI%" /quiet SERVER="%SERVER%" RUNNOW=1 EXECMODE=1 TAG="ROUEN"
exit /b %errorlevel%
```

---

## 8.4 Forcer un inventaire Windows

```bat
"C:\Program Files\GLPI-Agent\glpi-agent.bat" --force
```

Journal :

```text
C:\Program Files\GLPI-Agent\logs\glpi-agent.log
```

Interface locale de l’agent :

```text
http://127.0.0.1:62354
```

L’interface intégrée ne doit pas être exposée à tout le réseau sans contrôle.

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Agent Linux, OAuth et dépannage

# Agent Linux, OAuth et dépannage

## 8.5 Linux

Après installation du paquet ou de l’AppImage officiel, créer un fichier spécifique dans `conf.d` plutôt que modifier le fichier principal :

```bash
sudo tee /etc/glpi-agent/conf.d/server.cfg >/dev/null <<'CFG'
server = https://glpi.dreamsaphir.fr/front/inventory.php
tag = LINUX-PRODUCTION
CFG
```

Forcer un inventaire :

```bash
sudo glpi-agent --force
```

Contrôler le service et les journaux :

```bash
sudo systemctl status glpi-agent --no-pager
sudo journalctl -u glpi-agent -n 100 --no-pager
```

---

## 8.6 OAuth 2.0 pour l’inventaire GLPI 11

GLPI 11 permet de créer un client OAuth avec :

- le type d’octroi **Client Credentials** ;
- le scope **inventory** ;
- un identifiant client ;
- un secret client.

Les paramètres correspondants de l’agent sont :

```text
OAUTH_CLIENT_ID
OAUTH_CLIENT_SECRET
```

Cette méthode améliore l’authentification de l’agent, mais le secret doit être protégé lors du déploiement. Valider la compatibilité de la version de l’agent utilisée avant un déploiement général.

---

## 8.7 Dépannage de l’agent

Vérifier depuis le poste :

```text
Résolution DNS
Accès HTTPS
Validité du certificat
Présence du service GLPI Agent
URL SERVER
Journal de l’agent
Règles d’import GLPI
```

Sous Windows :

```bat
nslookup glpi.dreamsaphir.fr
curl.exe -I https://glpi.dreamsaphir.fr
sc query glpi-agent
```

Une remontée réussie peut malgré tout être rejetée ou placée dans les éléments ignorés si les règles d’import ne permettent pas son association.

---

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.

# Plugins et Marketplace

# Plugins et Marketplace

## Bonnes pratiques

- installer uniquement les plugins réellement nécessaires ;
- vérifier leur compatibilité avec GLPI 11 avant une mise à jour ;
- faire une sauvegarde avant installation ou mise à jour ;
- tester les plugins sur une instance de préproduction ;
- préférer la Marketplace intégrée ;
- supprimer les plugins abandonnés ;
- ne jamais télécharger un plugin depuis une source inconnue.

## Plugins couramment utilisés

| Plugin | Fonction |
|---|---|
| GLPI Inventory | Découverte réseau, SNMP, déploiement et tâches avancées |
| Fields | Champs supplémentaires |
| Data Injection | Import de données |
| Formcreator | Formulaires avancés, surtout pour les environnements encore basés sur GLPI 10 |
| Reports | Rapports supplémentaires |

GLPI 11 intègre nativement des formulaires et des types d’actifs personnalisés. Vérifier si un besoin est déjà couvert nativement avant d’ajouter un plugin.

## Commandes de gestion

Lister les commandes disponibles :

```bash
cd /var/www/glpi
sudo -u www-data php bin/console
```

Installer et activer un plugin :

```bash
sudo -u www-data php bin/console glpi:plugin:install NOM_DU_PLUGIN
sudo -u www-data php bin/console glpi:plugin:activate NOM_DU_PLUGIN
```

Désactiver un plugin :

```bash
sudo -u www-data php bin/console glpi:plugin:deactivate NOM_DU_PLUGIN
```

---

---

> Documentation GLPI 11 — Debian 12, Apache, PHP 8.2 et MariaDB.