ReOTP.
Keamanan & Sinkronisasi/Webhook dan HMAC
1 menit baca

Webhook dan HMAC

Pelajari cara menerima notifikasi langsung yang aman saat nomor telepon diverifikasi.

Webhook adalah cara tercepat dan paling aman untuk mengetahui bahwa pengguna telah berhasil melakukan verifikasi tanpa perlu melakukan SSE (Server-Sent Events) (polling berkelanjutan).

Ketika pengguna mengirimkan pesan dan berhasil dicocokkan, sistem kami akan mengirimkan permintaan POST ke URL yang telah Anda tentukan sebelumnya di pengaturan proyek.

Keamanan Webhook (Tanda Tangan HMAC)

Untuk memastikan bahwa permintaan benar-benar berasal dari server kami dan bukan serangan palsu, kami menandatangani setiap permintaan menggunakan algoritma HMAC-SHA256.

1. Buka pengaturan proyek dan buat Webhook Secret.

2. Tanda tangan terenkripsi akan dilampirkan dalam header permintaan dengan nama x-webhook-signature.

3. Anda harus menghitung tanda tangan di server Anda menggunakan Secret yang sama dan membandingkannya dengan tanda tangan yang dikirimkan.

Kode Integrasi (SDK)
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...'));