ReOTP.
सुरक्षा और 동기करण/वेबहुक (Webhooks) और HMAC
1 पढ़ने का समय

वेबहुक (Webhooks) और HMAC

फ़ोन नंबर सत्यापित होने पर सुरक्षित, रीयल-टाइम सूचनाएं प्राप्त करना सीखें।

SSE (सर्वर-सेंटت इवेंट्स) (निरंतर जाँच) की आवश्यकता के बिना यह जानने का सबसे तेज़ और सबसे सुरक्षित तरीका Webhooks है कि उपयोगकर्ता ने सफलतापूर्वक सत्यापन कर लिया है।

जब उपयोगकर्ता संदेश भेजता है और उसका सफलतापूर्वक मिलान हो जाता है, तो हमारा सिस्टम आपके प्रोजेक्ट सेटिंग्स में पहले से परिभाषित URL पर POST अनुरोध भेजता है।

वेब हूक सुरक्षा (HMAC सिग्नेचर)

यह सुनिश्चित करने के लिए कि अनुरोध वास्तव में हमारे सर्वर से आ रहे हैं और नकली हमले नहीं हैं, हम HMAC-SHA256 एल्गोरिदम का उपयोग करके प्रत्येक अनुरोध पर हस्ताक्षर करते हैं।

1. प्रोजेक्ट सेटिंग्स पर जाएं और Webhook Secret जनरेट करें।

2. x-webhook-signature नामक अनुरोध के Header में एक एन्क्रिप्टेड सिग्नेचर संलग्न किया जाएगा।

3. आपको अपने सर्वर पर अपने स्वयं के गुप्त (Secret) का उपयोग करके सिग्नेचर की गणना करनी होगी और भेजना होगा और इसकी तुलना भेजे गए सिग्नेचर से करनी होगी।

एकीकरण कोड (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...'));