ReOTP.
Sicherheit und Synchronisation/Webhooks und HMAC | Webhooks und HMAC
1 Min. Lesezeit

Webhooks und HMAC | Webhooks und HMAC

Erfahren Sie, wie Sie sichere Benachrichtigungen empfangen können, wenn die Telefonnummer überprüft wird.

Die Webhooks sind die schnellste und sicherste Möglichkeit, zu erfahren, ob der Benutzer erfolgreich überprüft wurde, ohne dass ein SSE (Server-Sent Events) (kontinuierlicher Test) erforderlich ist.

Wenn der Benutzer eine Nachricht sendet und diese erfolgreich abgeglichen wird, sendet unser System eine POST-Anfrage an die von Ihnen zuvor festgelegte URL (URL) in den Projekt-Einstellungen.

Sicherheit von Webhooks (HMAC-Signatur)

Um sicherzustellen, dass die Anfragen tatsächlich von unseren Servern kommen und keine Falle sind, signieren wir jede Anfrage mit der HMAC-SHA256-Algorithmen.

1. Gehe zu den Projekt-Einstellungen und erzeuge eine Webhook-Secret.

2. Ein verschlüsselter Signatur wird in der Anfragekopfzeile (Header) mit dem Namen x-webhook-signature angefügt.

3. Sie müssen auf Ihrem Server die Signatur berechnen, indem Sie denselben Secret verwenden, und sie mit der gesendeten Signatur vergleichen.

Integrationscode (SDKs)
const express = require('express');
const crypto = require('crypto');
const app = express();

const WEBHOOK_SECRET = process.env.REOTP_WEBHOOK_SECRET;
app.use(express.json());

app.post('/webhook/reotp', (req, res) => {
  const signatureHeader = req.headers['x-webhook-signature'];
  const payloadString = JSON.stringify(req.body);

  const expectedSignature = crypto
    .createHmac('sha256', WEBHOOK_SECRET)
    .update(payloadString)
    .digest('hex');

  if (signatureHeader !== expectedSignature) {
    return res.status(401).send('Invalid signature');
  }

  const { event, phoneNumber, requestId } = req.body;
  if (event === 'verification.success') {
    console.log(`User ${phoneNumber} verified! (ID: ${requestId})`);
  }

  res.status(200).send('OK');
});

app.listen(3000, () => console.log('Listening for Webhooks...'));