मुख्य कंटेंट पर जाएं
Didit ने पहचान और धोखाधड़ी के लिए इंफ्रास्ट्रक्चर बनाने हेतु $7.5M जुटाए
Didit
ब्लॉग पर वापस जाएँ
ब्लॉग · 15 जून 2026

रीयल-टाइम पहचान सत्यापन के लिए मजबूत वेबहुक आर्किटेक्चर डिजाइन करना

प्रभावी वेबहुक आर्किटेक्चर रीयल-टाइम पहचान सत्यापन के लिए महत्वपूर्ण है, जो स्थिति परिवर्तनों पर तत्काल प्रतिक्रियाओं को सक्षम करता है और डेटा स्थिरता सुनिश्चित करता है। यह मार्गदर्शिका स्केलेबल और विश्वसनीय वेबहुक बनाने के लिए सर

द्वारा Diditअपडेट किया गया
didit-thumb-88932.png

रीयल-टाइम पहचान सत्यापन के लिए विश्वसनीय वेबहुक आर्किटेक्चर डिजाइन करना उन अनुप्रयोगों के लिए आवश्यक है जिन्हें उपयोगकर्ता या व्यावसायिक पहचान जांच की स्थिति पर तत्काल अपडेट की आवश्यकता होती है। वेबहुक आपके एप्लिकेशन के लिए एक तंत्र प्रदान करते हैं ताकि किसी घटना के घटित होने पर तत्काल सूचनाएं प्राप्त हो सकें, जैसे कि सत्यापन सफल या विफल होना, बजाय इसके कि लगातार एक API को पोल किया जाए।

पहचान सत्यापन वर्कफ़्लो में वेबहुक की भूमिका

पहचान सत्यापन के संदर्भ में, वेबहुक आपके पहचान प्रदाता और आपके एप्लिकेशन के बीच एक महत्वपूर्ण संचार चैनल के रूप में कार्य करते हैं। यह बार-बार एक API एंडपॉइंट से यह जांचने के बजाय कि क्या आपका ग्राहक जानें (KYC) या अपना व्यवसाय जानें (KYB) प्रक्रिया पूरी हो गई है, एक वेबहुक यह जानकारी उपलब्ध होते ही आपको भेज देता है। यह इवेंट-ड्रिवन दृष्टिकोण रीयल-टाइम अनुप्रयोगों के लिए मौलिक है, जो तत्काल उपयोगकर्ता ऑनबोर्डिंग, लेनदेन अनुमोदन या धोखाधड़ी अलर्ट को सक्षम करता है।

एक उपयोगकर्ता को एक सेवा के लिए साइन अप करने पर विचार करें। वे सत्यापन के लिए अपने पहचान दस्तावेज जमा करते हैं। वेबहुक के बिना, आपके एप्लिकेशन को एक पोलिंग तंत्र की आवश्यकता होगी, जो विलंबता का परिचय देता है और अनावश्यक संसाधनों का उपभोग करता है। वेबहुक के साथ, जैसे ही पहचान सत्यापन प्रदाता दस्तावेजों को संसाधित करता है और एक स्थिति निर्धारित करता है (उदाहरण के लिए, VERIFIED, REJECTED, PENDING_REVIEW), यह आपके द्वारा कॉन्फ़िगर किए गए URL पर एक HTTP POST अनुरोध भेजता है। आपका एप्लिकेशन तब इस घटना को संसाधित करता है, उपयोगकर्ता की स्थिति को अपडेट करता है, बाद की कार्रवाइयों को ट्रिगर करता है, या उन्हें सीधे सूचित करता है।

यह रीयल-टाइम क्षमता केवल गति के बारे में नहीं है; यह उपयोगकर्ता अनुभव और परिचालन दक्षता के बारे में भी है। उदाहरण के लिए, एक वॉलेट स्क्रीनिंग (KYT (अपने लेनदेन को जानें)) परिदृश्य में, एक चिह्नित लेनदेन की तत्काल सूचना त्वरित कार्रवाई की अनुमति देती है, संभावित रूप से धोखाधड़ी को रोकती है। इसी तरह, चल रही निगरानी के लिए, किसी ग्राहक की राजनीतिक रूप से उजागर व्यक्ति (PEP) स्थिति या प्रतिबंध सूची उपस्थिति में परिवर्तन तुरंत सूचित किया जा सकता है।

विश्वसनीय वेबहुक आर्किटेक्चर के मुख्य सिद्धांत

पहचान सत्यापन के लिए एक विश्वसनीय वेबहुक प्रणाली के निर्माण के लिए कई वास्तुशिल्प सिद्धांतों पर सावधानीपूर्वक विचार करने की आवश्यकता है।

1. सुरक्षा

पहचान डेटा की संवेदनशील प्रकृति को देखते हुए, सुरक्षा सर्वोपरि है। वेबहुक पेलोड में अक्सर व्यक्तिगत पहचान योग्य जानकारी (PII) या इसके सीधे लिंक होते हैं। मजबूत सुरक्षा उपायों को लागू करना गैर-परक्राम्य है।

  • केवल HTTPS: हमेशा यह सुनिश्चित करें कि आपके वेबहुक एंडपॉइंट HTTPS पर सेवा प्रदान किए जाते हैं ताकि डेटा को ट्रांजिट में एन्क्रिप्ट किया जा सके।
  • हस्ताक्षर सत्यापन: सबसे महत्वपूर्ण सुरक्षा उपाय। आपके पहचान सत्यापन प्रदाता को एक साझा रहस्य का उपयोग करके प्रत्येक वेबहुक पेलोड पर हस्ताक्षर करना चाहिए। एक वेबहुक प्राप्त होने पर, आपके एप्लिकेशन को इस हस्ताक्षर को सत्यापित करना होगा। यह पुष्टि करता है कि अनुरोध वैध प्रेषक से उत्पन्न हुआ है और पेलोड के साथ छेड़छाड़ नहीं की गई है। उदाहरण के लिए, एक सामान्य दृष्टिकोण में एक X-Didit-Signature हेडर शामिल होता है जिसमें पेलोड और एक टाइमस्टैम्प का हैश होता है।
  • IP श्वेतसूची: यदि आपका प्रदाता इसका समर्थन करता है, तो आने वाले वेबहुक अनुरोधों को ज्ञात IP पतों के एक सेट तक सीमित करें। यह स्पूफ किए गए अनुरोधों के खिलाफ सुरक्षा की एक अतिरिक्त परत जोड़ता है।
  • रिप्ले हमले की रोकथाम: हस्ताक्षरित पेलोड में एक टाइमस्टैम्प शामिल करें और उन अनुरोधों को अस्वीकार करें जो वर्तमान समय से काफी पुराने हैं। यह रिप्ले हमलों को कम करने में मदद करता है जहां एक हमलावर एक पुराना, वैध वेबहुक फिर से भेजता है।
  • इनपुट सत्यापन: उन्हें संसाधित करने से पहले हमेशा आने वाले वेबहुक पेलोड की संरचना और सामग्री को मान्य करें।

2. विश्वसनीयता और आइडम्पोटेंसी

वेबहुक, किसी भी नेटवर्क संचार की तरह, विफल हो सकते हैं। आपके आर्किटेक्चर को इसका हिसाब देना चाहिए।

  • पुनः प्रयास तंत्र: आपके पहचान सत्यापन प्रदाता को एक पुनः प्रयास रणनीति (उदाहरण के लिए, घातीय बैकऑफ़) लागू करनी चाहिए यदि आपका एंडपॉइंट अनुपलब्ध है या एक त्रुटि लौटाता है (उदाहरण के लिए, एक 5xx स्थिति कोड)। इसके विपरीत, आपके एंडपॉइंट को टाइमआउट से बचने के लिए जल्दी से (कुछ सेकंड के भीतर) जवाब देना चाहिए, भले ही प्रसंस्करण जटिल हो। यदि प्रसंस्करण में अधिक समय लगता है, तो वेबहुक को तुरंत स्वीकार करें और काम को एक अतुल्यकालिक कतार में स्थगित करें।
  • आइडम्पोटेंसी: वेबहुक को कई बार वितरित किया जा सकता है, या तो पुनः प्रयास या नेटवर्क समस्याओं के कारण। आपकी प्रणाली को प्रतिकूल प्रभावों के बिना डुप्लिकेट घटनाओं को संभालने के लिए डिज़ाइन किया जाना चाहिए। इसमें अक्सर एक अद्वितीय घटना आईडी (वेबहुक पेलोड में प्रदान की गई) को संग्रहीत करना और यह जांचना शामिल होता है कि कार्रवाई करने से पहले उस घटना को पहले ही संसाधित किया जा चुका है या नहीं। उदाहरण के लिए, यदि किसी विशिष्ट उपयोगकर्ता आईडी के लिए एक VERIFIED स्थिति दो बार आती है, तो इसे फिर से संसाधित करने से उपयोगकर्ता को फिर से ऑनबोर्ड नहीं करना चाहिए या डुप्लिकेट रिकॉर्ड नहीं बनाना चाहिए।
  • अतुल्यकालिक प्रसंस्करण: एक वेबहुक प्राप्त होने पर, प्रेषक को तुरंत एक 200 OK स्थिति कोड लौटाएं। घटना के वास्तविक प्रसंस्करण (उदाहरण के लिए, डेटाबेस अपडेट, अन्य सेवाओं को ट्रिगर करना) को अतुल्यकालिक हैंडलिंग के लिए एक संदेश कतार (जैसे RabbitMQ, Kafka, SQS) में धकेलें। यह आपके वेबहुक एंडपॉइंट को टाइमआउट होने से रोकता है और अधिक लचीला प्रसंस्करण की अनुमति देता है।

3. स्केलेबिलिटी

जैसे-जैसे आपका उपयोगकर्ता आधार बढ़ता है, वैसे-वैसे पहचान सत्यापन घटनाओं की मात्रा भी बढ़ेगी। आपके वेबहुक आर्किटेक्चर को तदनुसार स्केल करना चाहिए।

  • स्टेटलेस एंडपॉइंट: अपने वेबहुक रिसीवर को एक स्टेटलेस सेवा के रूप में डिज़ाइन करें। यह लोड बैलेंसर के पीछे अधिक उदाहरण जोड़कर क्षैतिज रूप से स्केल करना आसान बनाता है।
  • संदेश कतारें: जैसा कि ऊपर उल्लेख किया गया है, संदेश कतारें वेबहुक रिसेप्शन को उसके प्रसंस्करण से अलग करने के लिए महत्वपूर्ण हैं। वे यातायात में स्पाइक्स को अवशोषित करते हैं, बफरिंग प्रदान करते हैं, और घटनाओं के समानांतर प्रसंस्करण को सक्षम करते हैं।
  • डेटाबेस अनुकूलन: सुनिश्चित करें कि आपका डेटाबेस वेबहुक घटनाओं द्वारा उत्पन्न राइट लोड को संभाल सकता है। प्रासंगिक फ़ील्ड को अनुक्रमित करें और प्रश्नों को अनुकूलित करें।

4. अवलोकन क्षमता और निगरानी

यह जानना कि चीजें कब गलत होती हैं, एक स्वस्थ प्रणाली को बनाए रखने के लिए महत्वपूर्ण है।

  • लॉगिंग: पेलोड, हेडर और प्रसंस्करण परिणामों सहित सभी आने वाले वेबहुक के लिए व्यापक लॉगिंग लागू करें। त्रुटियों और पुनः प्रयासों को लॉग करें।
  • अलर्टिंग: अपने वेबहुक एंडपॉइंट पर उच्च त्रुटि दरों, अपनी अतुल्यकालिक कतारों में प्रसंस्करण विफलताओं, या घटना प्रसंस्करण में लंबे समय तक देरी के लिए अलर्ट सेट करें।
  • ट्रेसिंग: एक वेबहुक घटना के जीवनचक्र का पालन करने के लिए वितरित ट्रेसिंग का उपयोग करें, रिसेप्शन से लेकर उसके प्रसंस्करण तक, खासकर जब कई सेवाएं शामिल हों।

एक वेबहुक रिसीवर को लागू करना

आइए एक पहचान सत्यापन स्थिति अपडेट के लिए एक वेबहुक रिसीवर कैसा दिख सकता है, इसका एक सरलीकृत उदाहरण देखें। यह मानते हुए कि Didit एक वेबहुक अधिसूचना भेजता है जब एक KYC जांच पूरी हो जाती है:

import json
import hmac
import hashlib
import os
from flask import Flask, request, abort
from celery import Celery # For asynchronous processing

app = Flask(__name__)

# Configure Celery (example with Redis as broker)
app.config['CELERY_BROROKER_URL'] = 'redis://localhost:6379/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'
celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)

# Your shared secret for webhook signature verification
WEBHOOK_SECRET = os.environ.get('DIDIT_WEBHOOK_SECRET')

@celery.task
def process_kyc_event(event_data):
    # This function runs asynchronously
    event_id = event_data.get('id')
    user_id = event_data.get('user_id')
    status = event_data.get('status')
    # In a real application, you'd check if event_id has already been processed
    # and then update your database, trigger emails, etc.
    print(f"Processing KYC Event ID: {event_id} for User: {user_id} with Status: {status}")
    # Example: Update user status in database
    # db.update_user_status(user_id, status)

@app.route('/webhooks/didit', methods=['POST'])
def didit_webhook():
    if not WEBHOOK_SECRET:
        app.logger.error("DIDIT_WEBHOOK_SECRET is not set.")
        abort(500)

    signature_header = request.headers.get('X-Didit-Signature')
    if not signature_header:
        app.logger.warning("Missing X-Didit-Signature header.")
        abort(400, description="Missing signature header")

    # Extract timestamp and signature from the header
    # Format: t=<timestamp>,v1=<signature>
    signature_parts = dict(part.split('=', 1) for part in signature_header.split(','))
    timestamp = signature_parts.get('t')
    expected_signature = signature_parts.get('v1')

    if not timestamp or not expected_signature:
        app.logger.warning("Invalid X-Didit-Signature format.")
        abort(400, description="Invalid signature header format")

    # Replay attack prevention: check timestamp (e.g., within 5 minutes)
    # current_time = int(time.time())
    # if abs(current_time - int(timestamp)) > 300:
    #     app.logger.warning("Webhook timestamp too old or in the future.")
    #     abort(400, description="Invalid timestamp")

    payload = request.get_data(as_text=True)
    signed_payload = f"{timestamp}.{payload}"

    # Calculate the expected signature
    hashed = hmac.new(WEBHOOK_SECRET.encode('utf-8'), signed_payload.encode('utf-8'), hashlib.sha256)
    calculated_signature = hashed.hexdigest()

    if not hmac.compare_digest(calculated_signature, expected_signature):
        app.logger.warning("Invalid webhook signature.")
        abort(403, description="Invalid signature")

    try:
        event_data = request.json
        # Immediately acknowledge and defer processing
        process_kyc_event.delay(event_data) # Send to Celery queue
        return {"status": "success", "message": "Webhook received and queued"}, 200
    except Exception as e:
        app.logger.error(f"Error parsing webhook payload: {e}")
        abort(400, description="Invalid JSON payload")

if __name__ == '__main__':
    app.run(debug=True, port=5000)

यह उदाहरण Celery का उपयोग करके हस्ताक्षर सत्यापन और अतुल्यकालिक प्रसंस्करण को प्रदर्शित करता है। एक उत्पादन वातावरण के लिए, आप Gunicorn या uWSGI जैसे एक विश्वसनीय वेब सर्वर का उपयोग करेंगे, और सुनिश्चित करेंगे कि आपके Celery कार्यकर्ता ठीक से कॉन्फ़िगर और मॉनिटर किए गए हैं।

मुख्य बातें

  • वेबहुक रीयल-टाइम पहचान सत्यापन के लिए महत्वपूर्ण हैं, जो KYC/KYB स्थिति परिवर्तनों जैसी घटनाओं पर तत्काल प्रतिक्रियाओं को सक्षम करते हैं।
  • सुरक्षा सर्वोपरि है: हमेशा HTTPS का उपयोग करें, हस्ताक्षर सत्यापन लागू करें, और IP श्वेतसूची और रिप्ले हमले की रोकथाम पर विचार करें।
  • विश्वसनीयता के लिए आइडम्पोटेंसी की आवश्यकता होती है, प्रेषक से पुनः प्रयास तंत्र, और रिसीवर की तरफ अतुल्यकालिक प्रसंस्करण के साथ तत्काल स्वीकृति।
  • स्केलेबिलिटी स्टेटलेस एंडपॉइंट्स और संदेश कतारों के प्रभावी उपयोग के माध्यम से प्राप्त की जाती है।
  • एक स्वस्थ वेबहुक प्रणाली को बनाए रखने के लिए व्यापक अवलोकन क्षमता (लॉगिंग, निगरानी, अलर्टिंग) आवश्यक है।

अक्सर पूछे जाने वाले प्रश्न

वेबहुक क्या है और यह एक API कॉल से कैसे भिन्न है?

एक वेबहुक एक स्वचालित संदेश है जो एक एप्लिकेशन से भेजा जाता है जब एक विशिष्ट घटना होती है, जो एक "रिवर्स API" के रूप में कार्य करता है जहां सर्वर क्लाइंट को डेटा भेजता है। एक API कॉल, इसके विपरीत, तब होता है जब एक क्लाइंट स्पष्ट रूप से सर्वर से डेटा का अनुरोध करता है।

वेबहुक प्रसंस्करण के लिए आइडम्पोटेंसी क्यों महत्वपूर्ण है?

आइडम्पोटेंसी यह सुनिश्चित करती है कि एक ही वेबहुक घटना को कई बार संसाधित करने का वही प्रभाव होगा जो इसे एक बार संसाधित करने का होता है। यह महत्वपूर्ण है क्योंकि नेटवर्क समस्याओं या पुनः प्रयास तंत्र के कारण वेबहुक को एक से अधिक बार वितरित किया जा सकता है, जिससे डुप्लिकेट कार्रवाइयों या डेटा विसंगतियों को रोका जा सकता है।

मैं अपने वेबहुक एंडपॉइंट को कैसे सुरक्षित कर सकता हूं?

हमेशा HTTPS का उपयोग करके, आने वाले पेलोड के हस्ताक्षर को सत्यापित करके, IP श्वेतसूची लागू करके, और रिप्ले हमलों को रोकने के लिए हस्ताक्षरों में टाइमस्टैम्प शामिल करके अपने वेबहुक एंडपॉइंट को सुरक्षित करें।

मेरे वेबहुक एंडपॉइंट को क्या लौटाना चाहिए?

आपके वेबहुक एंडपॉइंट को रसीद को स्वीकार करने के लिए जितनी जल्दी हो सके एक HTTP 200 OK स्थिति कोड लौटाना चाहिए। यदि प्रसंस्करण में समय लगता है, तो वास्तविक कार्य को एक अतुल्यकालिक कतार में स्थगित करें।

क्या होता है अगर मेरा वेबहुक एंडपॉइंट डाउन है?

यदि आपका वेबहुक एंडपॉइंट डाउन है या एक त्रुटि लौटाता है, तो एक अच्छी तरह से डिज़ाइन किया गया पहचान सत्यापन प्रदाता आमतौर पर एक घातीय बैकऑफ़ रणनीति के साथ वेबहुक को फिर से भेजने का प्रयास करेगा, जिससे आपके एंडपॉइंट के फिर से उपलब्ध होने पर अंततः वितरण सुनिश्चित होगा।

Didit पहचान और धोखाधड़ी के लिए अपने बुनियादी ढांचे के हिस्से के रूप में विश्वसनीय वेबहुक समर्थन प्रदान करता है। हमारा एक API 1,000 से अधिक डेटा स्रोतों के साथ एकीकृत होता है, जो उपयोगकर्ता सत्यापन (KYC), व्यवसाय सत्यापन (KYB), लेनदेन निगरानी, और वॉलेट स्क्रीनिंग (KYT) के लिए रीयल-टाइम सत्यापन स्थिति प्रदान करता है। आप मिनटों में एकीकृत कर सकते हैं और गतिशील और उत्तरदायी पहचान वर्कफ़्लो बनाने के लिए हमारी सुरक्षित, रीयल-टाइम सूचनाओं का लाभ उठा सकते हैं। सार्वजनिक पे-पर-यूज़ मूल्य निर्धारण और हर महीने 500 मुफ्त जांच के साथ, Didit संगठनों को अत्यधिक कुशल और अनुपालन पहचान सत्यापन प्रक्रियाओं को डिजाइन करने का अधिकार देता है।

Didit के साथ शुरुआत करें

Didit पहचान और धोखाधड़ी के लिए बुनियादी ढांचा है — एक API, सार्वजनिक पे-पर-यूज़ मूल्य निर्धारण, और हर महीने 500 मुफ्त सत्यापन। अपने प्रवाह में उपयोगकर्ता सत्यापन जोड़ें और 5 मिनट में एकीकृत करें।

पहचान और धोखाधड़ी के लिए इंफ्रास्ट्रक्चर।

KYC, KYB, ट्रांज़ैक्शन मॉनिटरिंग और वॉलेट स्क्रीनिंग के लिए एक API। 5 मिनट में इंटीग्रेट करें।

इस पेज को समराइज़ करने के लिए AI से पूछें
रीयल-टाइम पहचान सत्यापन के लिए वेबहुक आर्किटेक्चर