ReOTP.
Amn da Muzamanci/Webhooks da HMAC
1 minti na karatu

Webhooks da HMAC

Kara kafintu don kusanci kuskure da kuma wajen kafintu da kuma.

الـ Webhooks هي الطريقة الأسرع والأكثر أماناً لمعرفة أن المستخدم قام بالتحقق بنجاح دون الحاجة لعمل SSE (Server-Sent Events) (فحص مستمر).عندما يرسل المستخدم الرسالة وتتم مطابقتها بنجاح، يقوم نظامنا بإرسال طلب POST إلى رابط (URL) تقوم أنت بتحديده مسبقاً في إعدادات المشروع.

أمان الويب هوك (HMAC Signature)

lضمان أن الطلبات قادمة حقاً من خوادمنا وليست هجمات وهمية، نقوم بتوقيع كل طلب باستخدام خوارزمية HMAC-SHA256.

1. اذهب لإعدادات المشروع وقم بتوليد Webhook Secret.

2. سيتم إرفاق توقيع مشفر في ترويسة الطلب (Header) باسم x-webhook-signature.

3. يجب عليك في خادمك حساب التوقيع باستخدام نفس الـ Secret الخاص بك ومقارنته بالتوقيع المرسل.

Lambar haɗawa (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...'));