REST API via PHP-Skript

<< Klicken um Inhaltsverzeichnis aufzurufen >>

Navigation:  Schnittstellen > REST API >

REST API via PHP-Skript

In diesem Kapitel erfahren Sie, wie Sie die REST-API-Schnittstelle mit einem PHP-Skript ansprechen können. Dazu geben wir Ihnen ein Beispiel Skript, welches Sie nach Bedarf anpassen können, damit es Ihre Anforderungen erfüllt.

 

Damit das Skript mit Ihrer Installation kompatibel ist, müssen Sie folgende Variablen anpassen:

 

Dieser Wert beschreibt die URL für die Anfrage. Ist bestinformed z. B. auf der lokalen Maschine installiert, ist das die passende URL.


$url = 'https://localhost:8431/rest';

 
Dieser Wert gibt den REST API Nutzernamen an, weitere Informationen finden Sie im Kapitel REST API > Authentifizierung am Server.


$username = "rest_admin";

 

Dieser Wert gibt das Passwort des REST API Nutzers an, weitere Informationen finden Sie im Kapitel REST API > Authentifizierung am Server.


$password = "cw";

 

Dieser Wert beschreibt die Herkunft der Anfrage, diese muss identisch mit den erlaubten Hosts in System (global) sein, weitere Informationen finden Sie im Kapitel REST API >Anfragen an die API Schnittstelle.


$origin = "cordaware";

 

Hier definieren Sie die Aktion, welche das Skript ausführt. Sie finden alle möglichen Aktionen und weitere Informationen im Kapitel REST API>Beispiele.


$body = [];

 

Skript

In diesem Beispiel wird eine Info mit folgenden Eigenschaften erstellt:

- Die Info wird an alle Clients gesendet, deren Computernamen mit "DESKTOP-" beginnen.

- Der Infotext lautet "Ich wurde mithilfe der REST API versandt."

- Die Info ist für eine Minute am Server aktiv und wird für eine Minute am Client angezeigt.

 

 

<?php
 
// Erstelle den X-Best-Auth-Header
function generateXBestAuth($username, $password) {
    // Generiere zufälligen Salt-Wert
    $salt = bin2hex(random_bytes(16));
    // Erstelle HMAC
    $hmac = hash_hmac('sha256', $username.$salt, $salt.$password, true);
    // Kodieren in Base64
    $secret = base64_encode($hmac);
    // Erstelle JSON-Objekt
    $json = json_encode([
        "username" => $username,
        "secret"   => $secret,
        "salt"     => $salt,
    ], JSON_UNESCAPED_UNICODE);
    // Rückgabe von JSON zu Base64
    return base64_encode($json);
}
// Sende die Anfrage
function sendRequest($url, $xBestAuthHeader, $body, $origin) {
    // Initialisiere Curl
    $ch = curl_init($url);
    // Setze die Curl-Optionen
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
    /*
    // SSL-Optionen
    // Pfad zum Zertifikat
    curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");      
    // SSL-Überprüfung aktivieren
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);                                    
    // SSL-Host-Überprüfung aktivieren                                                            
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    */
    // Setze den Wert auf true | um SSL zu aktivieren, benötigen Sie auch die obigen Optionen
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    // Aktiviere POST-Anfrage
    curl_setopt($ch, CURLOPT_POST, true);
    // Setze Header für Curl
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "X-Best-Auth: $xBestAuthHeader",
        "Origin: $origin",
    ]);
 
    $json = json_encode($body,JSON_UNESCAPED_UNICODE);
   
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($body,JSON_UNESCAPED_UNICODE));
    // Timeout 30 Sekunden
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}
// Setze die URL für die Anfrage
$url = 'https://localhost:8431/rest';
// Setze den Benutzernamen für die REST-API in Cordaware bestinformed
$username = "rest_admin";
// Setze das Passwort für den Benutzernamen
$password = "cw";
// Der Wert muss mit einem erlaubten Host in "System -> System (global) -> Einstellungen für API (REST)" übereinstimmen.
$origin = "cordaware";
// Auth-Header generieren
$header = generateXBestAuth($username, $password);
// Anfragetext für Aktion, für alle Aktionen siehe unsere Webhilfe
$body = [

    "action" => "newinfo",

    "info" => "Ich wurde mithilfe der REST API versandt.",

    "minutes" => "1",

    "active" => "1",

    "quickusersonly" => "true",

    "quickusersadditional" => "false",

    "quickusers" => "[

      {

        \"computer\": \"DESKTOP-*\",

        \"user\": \"*\",

        \"ipaddress\": \"*\",

        \"domain\": \"*\"

      }

    ]",

];
 
// Anfrage senden
$responseInfo = sendRequest($url, $header, $body, $origin);
$decodedResponse = json_decode($responseInfo, true);
?>

Getestet mit PHP Version 8.4.4 und 8.2.12. Die extension=curl muss aktiviert sein.