Webrequest-Tracker

Diverse Dienste der Cloud erlauben kein Polling, sondern rufen ihrerseits einen Webhook auf, was ein ausgehender HTTP-Request ist. Dazu muss ich natürlich eine Webseite im Internet bereitstellen, die per HTPS erreichbar ist. Eine Möglichkeit sind die Azure Functions mit den dort beschriebenen Einschränkungen. Entwickler nutzen vielleicht NGROK, um einen Service entsprechend erreichbar zu machen während Azure-Administratoren auch einen Azure AD Application Proxy mit dahinter liegendem Webserver nutzen könnten.

Mit der www.msxfaq.de habe ich aber einen Webserver im Internet, der von überall per HTTPS erreichbar ist aber leider "nur" ein Linux-Webserver ist. Er kann aber PHP-Skripte ausführen und ich habe mir folgende kleine PHP-Seite abgelegt. Die URL verrate ich ihnen natürlich nicht und die Datei schalte ich auch nur bei Bedarf aktiv.

<?php
// Header testen
header_remove();
http_response_code(200);
header("Cache-Control: no-transform,public,max-age=300,s-maxage=900");
header('Content-Type: application/html');
header('Status: 200');

$headerList = []; 
foreach ($_SERVER as $name => $value) { 
   if (preg_match('/^HTTP_/',$name)) {
      // convert HTTP_HEADER_NAME to Header-Name 
      $name = strtr(substr($name,5),'_',' '); 
      $name = ucwords(strtolower($name)); 
      $name = strtr($name,' ','-'); 
      $headerList[$name] = $value; 
      } 
} 
$data = sprintf("%s %s %s\n", $_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI'], $_SERVER['SERVER_PROTOCOL']); 
foreach ($headerList as $name => $value) { 
   $data .= $name.': '.$value."\n"; 
}

$data .= "\n"; 

mail("webhook@msxfaq.de","requestdump",$data);

echo "<html><head></head><body>";
echo "<h1>Requestdump</h1>";
echo "<pre>";
echo htmlentities($data);
echo "</pre>";
?>

Ich kann aber dann die URL einfach an der entsprechenden Stelle, z.B. Graph CallReport Webhook, Teams ausgehend WebHooks, SCIM o.ä. eintragen. Da ich auf dem Webserver keine Datei schreiben wollte und damit ein Risiko eingehe, sende ich einfach den Header und die Payload als Mail an eine Adresse.

Ein Aufruf per "Invoke-Webrequest" liefert folgende Mail in meinem Postfach:

Wenn ich im Azure AD einen Webrequest für SCIM generiere, dann finde ich folgende Mail in meinem Posteingang:

Hier ist auch gut zu sehen, dass SCIM den Endpunkt "/Users" quasi ein Unterverzeichnis anhängt, was speziell bei Azure Functions störend ist.

Weitere Links