Un endpoint webhook est une URL sur votre serveur que DynamiHost appelle quand quelque chose se passe sur votre compte. Aujourd'hui, le catalogue d'événements a un seul événement : scan.created, envoyé à chaque scan de vos codes.

En configurer un

  1. Ouvrez Webhooks dans le tableau de bord et ajoutez l'URL de votre endpoint. Ce doit être une adresse HTTPS publique.
  2. Enregistrez le secret de signature affiché pour l'endpoint. Vous en avez besoin pour vérifier que les livraisons viennent vraiment de DynamiHost.
  3. Utilisez le bouton Test pour envoyer une livraison d'exemple et observer le journal de votre serveur.
Un endpoint webhook avec ses contrôles de secret de signature et ses livraisons récentes
Un endpoint webhook avec ses contrôles de secret de signature et ses livraisons récentes

À quoi ressemble une livraison

http
POST /your-endpoint HTTP/1.1
Content-Type: application/json
x-dynamihost-event: scan.created
x-dynamihost-signature: 9f2c... (hex HMAC)

{"event": "scan.created", "timestamp": 1792400000, "data": { "...": "scan details" }}

Vérifier la signature

La signature est le HMAC-SHA256 hexadécimal de timestamp + "." + raw body, avec pour clé le secret de signature de votre endpoint. Vérifiez-la avant de faire confiance à une livraison :

js
import { createHmac, timingSafeEqual } from "node:crypto";

function isGenuine(secret, timestamp, rawBody, header) {
  const expected = createHmac("sha256", secret)
    .update(timestamp + "." + rawBody, "utf8")
    .digest("hex");
  const a = Buffer.from(expected, "hex");
  const b = Buffer.from(header, "hex");
  return a.length === b.length && timingSafeEqual(a, b);
}

Vérifiez toujours contre le corps brut de la requête, exactement tel que reçu. Analyser et ré-encoder le JSON d'abord changera les octets et chaque vérification de signature échouera.

Réessais et désactivation automatique

  • Les livraisons en échec (réponses non 2xx, délais dépassés, hôtes injoignables) sont réessayées avec des délais croissants.
  • Un endpoint qui continue d'échouer est désactivé automatiquement après 10 échecs consécutifs, et le compte est notifié par email. Corrigez le récepteur, puis réactivez-le depuis la page Webhooks.
  • Faites tourner le secret de signature depuis la même page chaque fois qu'il a pu fuiter. L'ancien secret cesse de fonctionner immédiatement.
Répondez vite aux livraisons et faites le travail lent après. Renvoyez un 2xx dès que vous avez stocké l'événement ; les endpoints qui traitent pendant des secondes sont ceux qui dépassent les délais et sont réessayés.