TUTOS.EU

Exemple d'appel d'une API en Powershell - à compléter

Voici un exemple d'appel d'une api (user.json si j'ai bien vu), api où l'authentification est basique. Le login et mot de passe est codé en base64 et placé dans le header dans le champ Authorization.

On récupère le résultat dans un objet puis on liste les éléments.

$username = "login"
$password = "Motdepasse"

$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))

$Result = Invoke-RestMethod https://url/emplacement_avec_api/users.json -Method Get -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}

$Result | gm #Grâce à ce gm, j'ai pu voir sur mon exemple que mes utilisateurs étaient sous users, mais pour votre objet cela sera différent

$Result.users | gm #Avec cela j'affiche les champs que l'on peut interroger dans users

#Je liste le nom de tous les utilisateurs qui sont dans mon objet users, propriété name
foreach ($UneLigne in $Result.users){
	Write-Host $UneLigne.name
}
Lien vers le fichier : cliquez ici

Ici j'ai fait la même interrogation qu'avec powershell avec Postman qu'on récupère sur https://www.postman.com/downloads
On retrouve l'authentification faite avec le login/mot de passe codé en base64 passé dans le header

L'astuce de devoir mettre 'Basic' devant le mot de passe a été trouvée sur
https://www.toolsqa.com/postman/basic-authentication-in-postman/

bon en vrai 'basic' était précisé aussi dans le code powershell si on regarde bien ..

Toujours histoire de, à 'la racine', l'authentification est paramétrée ici en basique, mais en vrai avec l'exemple ci dessus on ne s'en est pas servi car le couple login/mdp a été injecté en base64 dans le header

Autre exemple différent où j'essaye de me connecter à une solution de backup Unitrends.
Leur doc qui indique les paramètres est celle-ci, et la partie où j'ai joué concerne l'authentification dont la doc est ici
 

Là du coup en première étape il faut faire une requête de type Post, dans le body, en json.

Pour cela ce blog jokecamp m'a donné un exemple.

Comme indiqué dans leur doc, cette première étape permet de récupérer un token qui sera a utiliser dans les autres appels.

 

Traduit en powershell cela donne

Clear-Host

$person = @{
    username='root'
    password='lepassword'
}
$json = $person | ConvertTo-Json

$Result = Invoke-RestMethod http://ipduserveur/api/login -Method Post -Body $json -ContentType 'application/json'
$Result | gm

$tokenautiliser = $Result.auth_token
write-host $tokenautiliser
Lien vers le fichier : cliquez ici