Logo Aurabase
aurabasedocuments
documents›Guides›Webhooks & HMAC

Webhooks Sortants & Signatures HMAC

Recevez les événements temps réel de votre projet Aurabase sur vos propres serveurs de manière sécurisée grâce aux signatures cryptographiques HMAC-SHA256.

8 min de lecture·Niveau intermédiaire·Révisé le 19 août 2026
#
Fonctionnement

Architecture des Webhooks

Les webhooks sortants d'Aurabase diffusent les événements du système vers vos URLs de callback (ex: nouvelle inscription utilisateur, paiement réussi, mise à jour de ligne de table).

Garantie de livraison At-Least-Once

Chaque webhook envoyé contient un identifiant unique d'événement event_id vous permettant d'implémenter un traitement idempotent sur vos serveurs.

#
Sécurité

Structure de l'en-tête X-Aurabase-Signature

Chaque requête HTTP POST émise par Aurabase comprend l'en-tête de sécurité suivant :

http-headerstext
POST /webhook HTTP/1.1
Host: api.votre-domaine.com
Content-Type: application/json
X-Aurabase-Event-Id: evt_01J8Y6Q9K3M7Z...
X-Aurabase-Signature: t=1724060000,v1=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
#
Validation

Vérifier la signature HMAC-SHA256

verify-webhook.tstypescript
import crypto from 'node:crypto'
export function verifyAurabaseWebhook(
  rawBody: string, signatureHeader: string, secret: string)
  const parts = Object.fromEntries(
    signatureHeader.split(',').map(p => p.split('=')),
  )
  const { t: timestamp, v1: signature } = parts

  // 1. Protection contre les attaques par rejeu (5 min max)
  if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) {
    return false
  }

  // 2. Calcul du HMAC-SHA256 sur timestamp.rawBody
  const expected = crypto
    .createHmac('sha256', secret)
    .update(timestamp + '.' + rawBody)
    .digest('hex')

  // 3. Comparaison sécurisée en temps constant
  return crypto.timingSafeEqual(
    Buffer.from(signature), Buffer.from(expected)
  )
}
#
Résilience

Gestion des pannes & Dead-Letter Queue

Si votre serveur répond avec un code d'erreur HTTP (4xx, 5xx) ou subit un timeout (délai limite de 10 secondes), Aurabase réessaie automatiquement l'envoi selon un backoff exponentiel :

  • Tentative 1 : Immédiate
  • Tentative 2 : Après 15 secondes
  • Tentative 3 : Après 1 minute
  • Tentative 4 : Après 5 minutes
  • Tentative 5 : Après 30 minutes

Après 5 échecs consécutifs, l'événement est versé dans la Dead-Letter Queue (DLQ) du Studio pour inspection et rejeu manuel.

Dernière mise à jour · 19 août 2026