Webhook an anderes Symcon senden; Probleme mit Authentifizierung

Servus,
sitze seit Stunden, wälze Google und hier, bring es aber nicht Zuwege und wäre über Hilfe dankbar.

Ziel:
Daten aus einem Symcon an ein anderes zu schicken (Status etc.).
Das klappt auch, hätte es aber gerne mit Username und Password abgesichert.

Das läuft bisher, es wird der Wert „Meldung“ übertragen

$Meldung = GetValueInteger(12345); // den Wert schicke ich an ein anderes Symcon

$http_string = "https://fb...87.ipmagic.de/hook/KiriRAM?Meldung=" .  $Meldung ;

//schickt es an einen Webhook des entfernten Systems
$url = $http_string ; 
$ch  = curl_init($url);
curl_exec($ch);
curl_close($ch);

Auf dem empfangenden Symcon hängt am webhook dieses Skript. Wie gesagt, die Daten kommen an.

$ram = $_GET['Meldung'];
SetValueInteger(99999, $ram);

Nun möchte ich auf dieses Empfangs-Skript umstellen mit User und Password:

if(!isset($_SERVER['PHP_AUTH_USER'])) $_SERVER['PHP_AUTH_USER'] = ""; 
if(!isset($_SERVER['PHP_AUTH_PW'])) $_SERVER['PHP_AUTH_PW'] = "";

if(($_SERVER['PHP_AUTH_USER'] != "Kiri") || ($_SERVER['PHP_AUTH_PW'] != "service")) {
	header('WWW-Authenticate: Basic Realm="Geofency WebHook"'); header('HTTP/1.0 401 Unauthorized');
	echo "Authorization required";
return;
}

$ram = $_GET['Meldung'];
SetValueInteger(99999, $ram);

Aber ich schaffe es nicht das sendende Skript so einzustellen dass ich User und Password direkt übergeben kann.
Ich hab zB Sys_GetURLContentEx() versucht, bring ich aber nicht hin.
Nur mit ?user=xxx&password=xxx zu ergänzen reicht nicht (vermtl. wegen https).

Weiss bitte jemand wie ich das zuwege bringe?

Danke und Gruss Seppm

Versuche mal User und Passwort Base64 Codierung

Also wenn Du den Username und Password nur per Query-Parameter an die Url hängst, dann musst Du sie auch so wieder auslesen, also genau so wie Deine Meldung mit $_GET[‚user‘] usw.

Gruß Heiko

Hi Heiko,

danke, ja so geht es. Bin nur unsicher ob das im Sinne des Erfinders ist, kam mir zu einfach vor :wink:
Dachte es müsste über eine „offizielle“ Authentifierung gehen. Bin jetzt nicht sicher ob man es so einfach mitlesen kann oder nicht.

Sendendes IPS Skript ist nun:

$user = "kiri";
$password = "service";

$Meldung = GetValueInteger(12345);

$http_string = "https://fb...87.ipmagic.de/hook/KiriRAM?user=" . $user . "&password=" . $password . "&Meldung=" . $Meldung ;

//schickt es an einen Webhook des entfernten Systems
$url = $http_string ; 
$ch = curl_init($url);
curl_exec($ch);
curl_close($ch);

und beim empfangenden Symcon hängt am Webhook das Skript:

$user = $_GET['user'];
$password = $_GET['password'];
$ram = $_GET['Meldung'];

if($user == "kiri" AND $password == "service") {
    SetValueInteger(99999, $ram) ;
}

Werte kommen an.

Danke und Gruss Seppm

Ich würde es zu mindestens POSTen und nicht GETen :slight_smile:

ok, Post macht hier wohl Sinn,
aber keine Ahnung wie ich das ändern muss, aber wird sich ja zeigen :slight_smile:
Cheers
Seppm

Bei https aber egal.
Es wird erst die TLS Verbindung aufgebaut und dann die URI mit Get und header mit Post Daten versendet.
Michael

Dankeschön! Hatte ich gehofft.
Gleichwohl wenn ich mir POST ansehe, scheint den Vorteil zu haben dass man mehr Daten übergeben kann. Also mal sehen ob ich das darauf umstelle.
Cheers Seppm