Skip to content
Log in

Webhooks

Um sicherzustellen, dass der Webhook authentisch ist und von B2Brouter gesendet wurde, überprüfen Sie die Signatur im Header X-B2Brouter-Signature. So können Sie die Signatur auf Ihrem Server überprüfen:

  1. Extrahieren Sie die Header-Informationen: Der Header X-B2Brouter-Signature enthält zwei Komponenten:

    • t: Der UNIX-Zeitstempel, wann die Payload signiert wurde.
    • s: Die HMAC-SHA256-Signatur. Beispiel-Header:
    t=1732530076,s=9f117925ea533a2ea74b19699e03ab5de5664b4ff021d3d01eaff8868ed29e4d
  2. Erstellen Sie die Payload neu: Kombinieren Sie den empfangenen Zeitstempel (t) und die rohe JSON-Payload (data) mit einem Punkt (.):

    payload = "#{timestamp}.#{data}"
  3. Berechnen Sie die HMAC-SHA256-Signatur: Verwenden Sie den gemeinsamen signature_key und die Payload, um die Signatur zu berechnen:

    computed_signature = HMAC-SHA256(signature_key, payload)
  4. Vergleichen Sie Signaturen: Vergleichen Sie die computed_signature mit dem Wert s aus dem Header. Wenn sie übereinstimmen, ist der Webhook gültig.

  1. PHP:
$headers = getallheaders();
$header = $headers['X-B2Brouter-Signature'];
preg_match('/t=([^,]+),s=(.+)/', $header, $matches);
$timestamp = $matches[1];
$signatureHash = $matches[2];
$recalculatedHash = hash_hmac(
'sha256',
$timestamp . '.' . file_get_contents('php://input'),
'your_webhook_secret'
);
$isValid = hash_equals($signatureHash, $recalculatedHash);