Notifikationer via webhook

Tilføj webhook-abonnent

Log ind på Instatus på instatus.com/login, og vælg derefter din statusside.

Gå til Abonnenter og derefter Webhook.

Klik på Tilføj webhook-abonnent,

Der vises en ny formular, hvor du kan indtaste:

  • Webhook-URL
  • E-mailadresse
Webhook-abonnent

Vi sender forespørgsler til din URL i dette format, og der bliver sendt en e-mail til den angivne e-mailadresse, hvis der er problemer med URL'en.

Du kan give din webhook-abonnent et navn ved at klikke på den og skrive et navn i formularen. Du kan også slette abonnenten ved at klikke på Afmeld.

Verificering af webhook-payload

Det anbefales kraftigt at validere webhook-payloaden i dit webhook-endpoint.

Vi signerer webhook-payloads med en hemmelighed og sender signaturen med i en header ved navn x-instatus-webhook-signature. Med signaturen kan du kontrollere, at webhooken kom fra Instatus.

Sådan verificerer du en webhook

  1. Hent din webhook-hemmelighed i dashboardet (du finder den, når du redigerer eller opretter en webhook, og du kan også tilpasse den der).
Webhook-hemmelighed
  1. Opret et nyt endpoint på din server, som skal modtage webhooken.

  2. Sammenlign signaturen med den signatur, din server genererer, for at validere den.

  3. Stemmer signaturerne overens, kan du behandle webhooken.

Kodeeksempel

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

Derfor er verificering vigtig

  • Sikrer ægthed: Garanterer, at webhooken kommer fra vores platform.
  • Forhindrer manipulation: Opdager ændringer i payloaden.
  • Øger sikkerheden: Beskytter mod replay-angreb og uautoriseret adgang.