Skip to content
Log in

Webhooks

Pour vous assurer qu’un webhook est authentique et bien envoyé par B2Brouter, vérifiez la signature incluse dans l’en-tête X-B2Brouter-Signature. Voici comment vérifier cette signature sur votre serveur :

  1. Extraire les informations de l’en-tête : L’en-tête X-B2Brouter-Signature contient deux composants :

    • t : l’horodatage UNIX au moment où le payload a été signé.
    • s : la signature HMAC-SHA256. Exemple d’en-tête :
    t=1732530076,s=9f117925ea533a2ea74b19699e03ab5de5664b4ff021d3d01eaff8868ed29e4d
  2. Reconstruire le payload : Combinez l’horodatage reçu (t) et le payload JSON brut (data) en les séparant par un point (.) :

    payload = "#{timestamp}.#{data}"
  3. Calculer la signature HMAC-SHA256 : Utilisez la signature_key partagée et le payload pour calculer la signature :

    computed_signature = HMAC-SHA256(signature_key, payload)
  4. Comparer les signatures : Comparez computed_signature avec la valeur s de l’en-tête. Si elles correspondent, le webhook est valide.

  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);