ReOTP.
Güvenlik ve Senkronizasyon/Webhooks ve HMAC
1 1 Dakika Okuma

Webhooks ve HMAC

Telefon numarası doğrulandığında nasıl güvenli anlık bildirimler alacağınızı öğrenin.

Webhooks, SSE (Server-Sent Events) (sürekli kontrol) yapmaya gerek kalmadan kullanıcının başarıyla doğrulama yaptığını öğrenmenin en hızlı ve en güvenli yoludur.

Kullanıcı mesajı gönderdiğinde ve başarıyla eşleştiğinde, sistemimiz proje ayarlarında önceden belirlediğiniz URL'ye bir POST isteği gönderir.

Webhook Güvenliği (HMAC İmzası)

İsteklerin gerçekten sunucularımızdan geldiğinden ve sahte saldırılar olmadığından emin olmak için her isteği HMAC-SHA256 algoritması ile imzalıyoruz.

1. Proje ayarlarına gidin ve bir Webhook Secret oluşturun.

2. İstek başlığına (Header) x-webhook-signature adında şifreli bir imza eklenecektir.

3. Sunucunuzda, kendi Secret'ınızı kullanarak imzayı hesaplamalı ve gönderilen imza ile karşılaştırmalısınız.

Entegrasyon Kodu (SDK'ler)
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...'));