Interrogazione dell’API Cyberwatch in PowerShell
L’utilizzo dell’API, indipendentemente dalla route interrogata, richiede l’autenticazione secondo questa procedura.
Le parole chiave username e password devono essere sostituite rispettivamente con i valori ID della chiave di accesso API e Segreto della chiave di accesso API della credenziale generata in precedenza, negli esempi di codice riportati di seguito. Lo stesso vale per il valore url, che deve corrispondere all’indirizzo IP dell’istanza Cyberwatch.
In generale, è sufficiente modificare l’URL interrogato, il metodo utilizzato e il contenuto del body degli snippet seguenti per eseguire una richiesta API specifica tramite questa cmdlet.
Nel caso in cui il certificato TLS del server Cyberwatch non possa essere riconosciuto dalla macchina su cui viene eseguito questo script, è necessario eseguire lo snippet di codice seguente prima di questi snippet:
add-type @"
using System.Net;
using System.Security.Cryptography.X509Certificates;
public class TrustAllCertsPolicy : ICertificatePolicy {
public bool CheckValidationResult(
ServicePoint srvPoint, X509Certificate certificate,
WebRequest request, int certificateProblem) {
return true;
}
}
"@
[System.Net.ServicePointManager]::CertificatePolicy = New-Object TrustAllCertsPolicy
Snippet di autenticazione di base tramite Invoke-WebRequest
Questo codice consente di eseguire un test di connessione all’API dell’istanza Cyberwatch:
$api_url = "https://localhost"
$credentials = "access_key:secret_key"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credentials))
$response = Invoke-WebRequest -URI $api_url/api/v3/ping -Method Get -Headers @{
"Accept" = "application/json; charset=utf-8"
Authorization = "Basic $encodedCreds"}
$response.Content
Snippet di creazione di un gruppo tramite Invoke-WebRequest con metodo POST
Questo codice consente di creare un nuovo gruppo nell’istanza Cyberwatch:
$api_url = "https://localhost"
$credentials = "access_key:secret_key"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($credentials))
$body = @{
"name" = "nom_du_groupe"
"description" = "description_du_groupe"
"color" = "#da13b4"
} | ConvertTo-Json
$response = Invoke-WebRequest -URI $api_url/api/v3/groups -Method POST -Body $body -Headers @{
"Accept" = "application/json; charset=utf-8"
"Content-Type" = "application/json"
Authorization = "Basic $encodedCreds"
}
$response.Content