Webhooks sicher verarbeiten

Webhooks melden freigegebene Ereignisse asynchron. Registrieren Sie nur einen öffentlichen HTTPS-Endpunkt und verwenden Sie die Testzustellung, bevor Sie die Integration aktiv überwachen.

Zustellpfad

Zustellpfad eines signierten Webhooks

Diagramm wird geladen …

Diagramm als Text anzeigen
flowchart LR
  accTitle: Zustellpfad eines signierten Webhooks
  Transaction[Fachliche Transaktion] --> Outbox[Transaktionale Outbox]
  Outbox --> Dispatcher[Webhook Dispatcher]
  Dispatcher --> Signed[Signierte HTTPS-Zustellung]
  Signed --> Receiver[Partner-Endpunkt]
  Receiver -->|2xx| Done[Zustellung bestätigt]
  Receiver -->|Fehler oder Timeout| Retry[Begrenzter Retry]
  Retry --> Dispatcher
  Retry -->|Wiederholt fehlgeschlagen| DeadLetter[Fehlerwarteschlange und Alarm]

HMAC verifizieren

Bei der HMAC-Variante wird das Secret genau einmal bei der Registrierung zurückgegeben. Speichern Sie es unmittelbar in einem Secret Store. Berechnen Sie für jede Zustellung HMAC-SHA256 über die Bytefolge aus x-akflow-timestamp, einem Punkt und dem unveränderten HTTP-Body. Vergleichen Sie das Ergebnis in konstanter Zeit mit x-akflow-signature.

signed_payload = x-akflow-timestamp + "." + raw_request_body
expected       = HMAC-SHA256(webhook_secret, signed_payload)

Parsen oder formatieren Sie JSON erst nach erfolgreicher Signaturprüfung. Geben Sie zügig einen 2xx-Status zurück und verarbeiten Sie das Ereignis anschließend aus Ihrer eigenen Queue.

Idempotenz und Fehlerfälle

  • Deduplizieren Sie Zustellungen anhand der stabilen Ereignis- oder Idempotenzkennung aus dem veröffentlichten Vertrag.
  • Wiederholte Zustellungen müssen dasselbe Ergebnis erzeugen und dürfen keine zweite fachliche Aktion auslösen.
  • Antworten Sie nur nach erfolgreicher Annahme mit 2xx; Timeouts und andere Statuscodes können erneut zugestellt werden.
  • Alarmieren Sie bei anhaltenden Signaturfehlern, Rückständen und wiederholten Zustellfehlern.
  • Protokollieren Sie keine Secrets, vollständigen Payloads oder personenbezogenen Inhalte.

Einmaliges Secret

Das Webhook-Secret kann später nicht erneut gelesen werden. Rotieren Sie es durch eine kontrollierte neue Registrierung und deaktivieren Sie die alte erst nach erfolgreicher Verifikation.