Webhook-notificaties

Een webhook-abonnee toevoegen

Log in bij Instatus via instatus.com/login en kies je statuspagina.

Ga naar Abonnees en daarna naar Webhook.

Klik op Webhook-abonnee toevoegen,

Er verschijnt een nieuw formulier waarin je invult:

  • Webhook-URL
  • E-mailadres
Webhook-abonnee

We sturen verzoeken naar je URL in dit formaat en er gaat een e-mail naar het opgegeven adres wanneer er iets mis is met de URL.

Je kunt je webhook-abonnee een naam geven door erop te klikken en een naam in het formulier te typen. Je kunt deze abonnee ook verwijderen door op Afmelden te klikken.

Verificatie van de webhook-payload

Het wordt sterk aangeraden om de webhook-payload in je webhook-endpoint te valideren.

We ondertekenen webhook-payloads met een secret en sturen de handtekening mee als header met de naam x-instatus-webhook-signature. Met die handtekening controleer je of de webhook echt van Instatus komt.

Stappen om een webhook te verifiëren

  1. Haal je Webhook Secret op uit het dashboard (je vindt het terwijl je een webhook bewerkt of aanmaakt, en je kunt het daar ook aanpassen).
Webhook Secret
  1. Maak op je server een nieuw endpoint dat de webhook ontvangt.

  2. Vergelijk de handtekening met de handtekening die je server genereert om te valideren.

  3. Komen de handtekeningen overeen, verwerk de webhook dan.

Codevoorbeeld

import crypto from 'crypto'
import express from 'express'
const app = express()
app.use(express.json())
const WEBHOOK_SECRET = 'your-webhook-secret'
function isVerifiedPayload(payload, signature, secret) {
const hmac = crypto.createHmac('sha256', secret)
const digest = hmac.update(JSON.stringify(payload)).digest('hex')
return crypto.timingSafeEqual(Buffer.from(digest), Buffer.from(signature))
}
app.post('/endpoint/to/webhook', (req, res) => {
const payload = req.body
const signature = req.header('x-instatus-webhook-signature')
if (!signature) {
return res.status(400).send('Signature missing')
}
if (!isVerifiedPayload(payload, signature, WEBHOOK_SECRET)) {
return res.status(401).send('Invalid signature')
}
// Process the valid webhook
res.status(200).send('Webhook received')
})
app.listen(3000, () => console.log('Server running on port 3000'))

Waarom verificatie belangrijk is

  • Garandeert echtheid: bevestigt dat de webhook van ons platform komt.
  • Voorkomt manipulatie: signaleert wijzigingen in de payload.
  • Verhoogt de veiligheid: beschermt tegen replay-aanvallen en ongeautoriseerde toegang.