ReOTP.
নিরাপত্তা ও সিঙ্করাইজেশন/ওয়েবহুক (Webhooks) ও HMAC
1 মিনিট পড়ার সময়

ওয়েবহুক (Webhooks) ও HMAC

ফোন নম্বর যাচাই করার সময় সুরক্ষিত রিয়েল-টাইম নোটিফিকেশন কীভাবে গ্রহণ করবেন।

Webhooks হল সবচেয়ে দ্রুত ও নিরাপণ পদ্ধতি যা ব্যবহারকারী সফলভাবে যাচাইকৃত ছিল কিনা জানায়, SSE (Server-Sent Events) (কন্টিনিউস চেক) ছাড়া।

যখন ব্যবহারকারী বার্তা পাঠায় এবং সেটি সফলভাবে মেলায়, তখন আমাদের সিস্টেম আপনার প্রয়োজনীয় URL-তে একটি POST অনুরোধ পাঠাবে।

ওয়েবহুক নিরাপত্তা (HMAC Signature)

অনুরোধগুলি সত্যিকারের আমাদের থেকে এবং জালি নয় তা নিশ্চিত করতে, আমরা প্রতিটি অনুরোধকে HMAC-SHA256 এলগরিদম ব্যবহার করে স্বহত্তা দিই।

1. প্রকল্প সেটিংসে যান এবং Webhook Secret জেনারেট করুন।

2. স্বহত্তা অনুরোধের হেডারে x-webhook-signature নামে এনক্রিপ্টেড হয়ে থাকবে।

3. আপনার সার্ভারে এই সিক্রেট ব্যবহার করে স্বহত্তা গণনা করুন এবং পাঠানো স্বহত্তার সাথে তুলনা করুন।

ইন্টিগ্রেশন কোড (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...'));