Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

GLPI – Connexion et utilisation de l’API avec Curl

L’API GLPI est un outil puissant pour automatiser et intégrer votre gestion de parc et de services. Que vous souhaitiez créer des tickets, mettre à jour des actifs, récupérer des informations ou synchroniser des données, l’API offre une flexibilité incroyable. Et pour interagir avec cette API, curl est votre meilleur ami en ligne de commande.

Dans cet article, nous allons explorer comment utiliser curl pour effectuer différentes requêtes à l’API GLPI, en fournissant des exemples concrets pour vous aider à démarrer.

1.Creation d’un compte d’acces a l’API, et son App Token

Dans le menu Configuration/General/API de l’interface de GLPI…

Cliquer sur ‘Ajouter un client de l’API’

  • Donner un nom explicite pour l’usage de ce client d’API
  • Choisir eventuellement d’enregistrer les connexions pour garder une trace de ce que fera ce client.
  • La connexion peut etre eventuellement restreinte a une plage d’IP
  • Laisser coché ‘Regener’ pour, a la creation du client, generer un token.

Cliquer Ajouter

Dans la barre de navigation, revenir sur ‘Clients de l’API’

Cliquer sur le client crée

un token a été generé. l’App Token.

Un App token doit etre combiné a un user token pour obtenir un session token

2.Creation d’un user et de son user token

Ce sont les droits du user qui determine les droits lors de l’utilisation de l’API

Aller dans le menu Administration/Utilisateurs

Prenons l’exemple d’un utilisateur existant nommé Report qui n’a que des droits en lecture seule (Ref: onglet Habilitation)

En bas de la page est affiché son jeton d’API, le user token.

Il peut eventuellement etre regénéré en cochant la case puis sauvegarder.

3.Obtention d’un session token avec curl

Les exemples de codes sont effectués dans un shell Linux mais l’utilisation de curl est similaire sous Windows et est inclus a l’OS depuis Windows 10

Pour plus de détails sur curl: https://www.it-connect.fr/curl-loutil-testeur-des-protocoles-divers/

curl -X GET \
  -H "Content-Type: application/json" \
  -H "App-Token: VOTRE_APP_TOKEN" \
  -H "Authorization: user_token VOTRE_USER_TOKEN" \
  "http://votre-serveur-glpi/apirest.php/initSession"

Le code ci-dessus represente l’initialisation de la session pour l’obtention d’un session token

Ce qui dans notre exemple donne:

curl -X GET \
  -H "Content-Type: application/json" \
  -H "App-Token: uItt7yYToLPwBPwDUGyiAHzcF8sRnJjlXCgG1Uha" \
  -H "Authorization: user_token pRDLA0otLAzgrr09KvavtIQMXop3lUmgTHPvNLYn" \
  "https://myglpi.francecentral.cloudapp.azure.com/apirest.php/initSession"

La reponse doit etre un session token

4. Test de requete

La commande curl differe un peu maintenant puisque on utilise toujours l’App Token, mais on utilise le session token a la place du user token, de la manière suivante. Exemple pour recuperer la liste de toutes les machines (Computer) déclarés dans GLPI

curl -X GET \
  -H "Content-Type: application/json" \
  -H "App-Token: uItt7yYToLPwBPwDUGyiAHzcF8sRnJjlXCgG1Uha" \
  -H "Session-Token: 5l9bose84th76leeq9s6u69ped" \
  "https://myglpi.francecentral.cloudapp.azure.com/apirest.php/Computer"

L’api doit renvoyer un bloc qui contiens la liste de tout les ‘Computers’ et leur propriétés.

json serait un format plus pratique pour afficher cette sortie.

Si il n’est pas déja present, installer jq avec la commande suivante (exemple avec apt)

sudo apt-get install jq
curl -X GET \
  -H "Content-Type: application/json" \
  -H "App-Token: uItt7yYToLPwBPwDUGyiAHzcF8sRnJjlXCgG1Uha" \
  -H "Session-Token: 5l9bose84th76leeq9s6u69ped" \
  "https://myglpi.francecentral.cloudapp.azure.com/apirest.php/Computer" | jq

Relancer la requete en envoyant la sortie dans jq (| jq)

Le resultat est plus facile a exploiter.

Pour plus de détail sur l’API de GLPI:

https://glpi-user-documentation.readthedocs.io/fr/latest/modules/configuration/general/api.html

Python – Connexion et Requete Active Directory de base

Le script ci-dessous presente un exemple de connexion et requete basique a Active Directory via l’utilisation du module ldap3, pour recuperer la liste des utilisateurs.

Pour plus de details sur l’utilisation du module ldap3:

https://ldap3.readthedocs.io/en/latest

from ldap3 import Server, Connection, ALL, SUBTREE
import getpass

# Paramètres de connexion
AD_SERVER = 'ldap://mydc.mydomain.com'
AD_USER = 'admin@mydomain.com'  
AD_PASSWORD = getpass.getpass(f'Enter password for {AD_USER}: ')
AD_SEARCH_BASE = 'DC=mydomain,DC=com'

# Connexion au serveur
server = Server(AD_SERVER, get_info=ALL)
conn = Connection(server, user=AD_USER, password=AD_PASSWORD, auto_bind=True)

# Requête LDAP : tous les utilisateurs
search_filter = '(objectClass=user)'
attributes = ['cn', 'mail', 'sAMAccountName']

conn.search(search_base=AD_SEARCH_BASE,
            search_filter=search_filter,
            search_scope=SUBTREE,
            attributes=attributes)

# Affichage des résultats
for entry in conn.entries:
    print(entry.samAccountName)

# Fermeture de la connexion
conn.unbind()

Avant de commencer, assurez-vous d’avoir installé le module ldap3. Vous pouvez l’installer via pip :

pip install ldap3

Détails des objets du script:

conn.entries : liste des résultats de la requête.

Server : permet de spécifier l’adresse du contrôleur de domaine (parametre AD_SERVER)

Connection : initialise une session LDAP, ici avec une authentification user/password

search_filter : définit le type d’objet recherché (user dans notre exemple).

attributes : sélectionne les attributs que l’on souhaite récupérer pour chaque entrée.

Intune : Règle de conformité – Paramètre personnalisé Antivirus installé

Dans Intune, nous pouvons utiliser les règles de conformité afin de détecter les appareils qui ne répondent pas aux exigences de l’entreprise.

Ces règles de conformité ont des paramètres par défaut, mais on peut créer nos paramètres personnalisés.

Dans cet article, nous allons configurer un paramètre personnalisé de conformité afin de détecter les appareils qui l’antivirus de l’entreprise installé.

Le script pour détecter l’installation de l’Antivirus est le suivant :

N.B : Dans cet exemple, l’antivirus est Sophos :

### SOPHOS ANTIVIRUS
$SophosApp = (Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\Sophos Endpoint Agent" -ErrorAction Ignore | Select PSChildName).PSChildName

$hash = @{"SophosApp" = $SophosApp}

return $hash | ConvertTo-Json -Compress

Ce script sera configuré dans : Intune –> Compliance –> Scripts

Une fois créé, ce script nous servira comme paramètre personnalisé dans notre règle de conformité (personnalisée) dans : Intune –> Compliance –> Policies