Webhook प्रमाणीकरण - अपने एंडपॉइंट सुरक्षित करें
finlight आपकी webhook डिलीवरी को सुरक्षित करने के लिए कई प्रमाणीकरण विधियाँ प्रदान करता है। प्रत्येक webhook में डिफ़ॉल्ट रूप से सिग्नेचर सत्यापन शामिल होता है, और बढ़ी हुई सुरक्षा के लिए वैकल्पिक अतिरिक्त प्रमाणीकरण परतें उपलब्ध हैं।
finlight चार प्रमाणीकरण विधियों का समर्थन करता है जिन्हें व्यक्तिगत रूप से या संयोजन में उपयोग किया जा सकता है:
कोई नहीं
डिफ़ॉल्ट सिग्नेचर सत्यापन के अलावा कोई अतिरिक्त प्रमाणीकरण नहीं।
कब उपयोग करें:
- परीक्षण और विकास वातावरण
- सुरक्षित नेटवर्क के पीछे आंतरिक एंडपॉइंट
- जब सिग्नेचर सत्यापन पर्याप्त सुरक्षा प्रदान करता हो
नोट: इस सेटिंग की परवाह किए बिना, सिग्नेचर सत्यापन हर webhook अनुरोध में शामिल रहता है।
X-Finlight-Key हेडर
प्रत्येक webhook अनुरोध के साथ एक कस्टम X-Finlight-Key हेडर में आपकी API कुंजी भेजता है।
कॉन्फ़िगरेशन:
- webhook सेटअप के दौरान अपनी API कुंजी प्रदान करें
- कुंजी
X-Finlight-Keyहेडर में शामिल की जाएगी
कार्यान्वयन: आपके एंडपॉइंट को आने वाले हेडर को मान्य करना चाहिए:
const finlightKey = req.headers['x-finlight-key']
if (finlightKey !== 'your-expected-api-key') {
return res.status(401).send('Invalid API key')
}
भेजे गए हेडर:
X-Finlight-Key: your-api-key-value
X-Webhook-Signature: sha256=signature
X-Webhook-Timestamp: 2024-01-15T10:30:00.000Z
बेसिक प्रमाणीकरण
उपयोगकर्ता नाम/पासवर्ड क्रेडेंशियल्स के साथ HTTP बेसिक प्रमाणीकरण।
कॉन्फ़िगरेशन:
- webhook सेटअप के दौरान उपयोगकर्ता नाम और पासवर्ड सेट करें
- क्रेडेंशियल्स base64-एन्कोडेड होते हैं और
Authorizationहेडर में भेजे जाते हैं
कार्यान्वयन: आपका एंडपॉइंट मानक HTTP बेसिक प्रमाणीकरण प्राप्त करता है:
const auth = req.headers.authorization
if (!auth || !auth.startsWith('Basic ')) {
return res.status(401).send('Missing Basic Auth')
}
const credentials = Buffer.from(auth.slice(6), 'base64').toString()
const [username, password] = credentials.split(':')
if (username !== 'expected-user' || password !== 'expected-pass') {
return res.status(401).send('Invalid credentials')
}
भेजे गए हेडर:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
X-Webhook-Signature: sha256=signature
X-Webhook-Timestamp: 2024-01-15T10:30:00.000Z
सिग्नेचर सत्यापन
स्वचालित सुरक्षा: आपके चुने हुए प्रमाणीकरण तरीके की परवाह किए बिना, हर webhook अनुरोध में सिग्नेचर सत्यापन शामिल होता है।
यह कैसे काम करता है:
- finlight webhook भेजते समय एक टाइमस्टैम्प उत्पन्न करता है
- इस प्रकार जोड़कर एक संदेश बनाता है:
timestamp + '.' + payload - आपके webhook की गुप्त कुंजी का उपयोग करके HMAC-SHA256 से संदेश पर हस्ताक्षर करता है
- हेडर में सिग्नेचर और टाइमस्टैम्प दोनों भेजता है
शामिल किए गए हेडर:
X-Webhook-Signature: sha256=computed-signature
X-Webhook-Timestamp: 2024-01-15T10:30:00.000Z
सिग्नेचर एल्गोरिदम:
message = timestamp + '.' + JSON.stringify(payload)
signature = HMAC-SHA256(message, webhook_secret)
सुरक्षा सर्वोत्तम प्रथाएँ
टाइमस्टैम्प सत्यापन
अनुरोध टाइमस्टैम्प को मान्य करके रीप्ले अटैक को रोकें:
function isTimestampValid(timestamp, toleranceSeconds = 300) {
const now = Date.now()
const requestTime = new Date(timestamp).getTime()
const difference = Math.abs(now - requestTime) / 1000
return difference <= toleranceSeconds
}
क्रेडेंशियल्स का सुरक्षित भंडारण
- पर्यावरण चर: सभी गुप्त मानों को पर्यावरण चर में संग्रहीत करें
- सीक्रेट प्रबंधन: AWS Secrets Manager, HashiCorp Vault या समान का उपयोग करें
- कभी हार्ड-कोड न करें: गुप्त मानों को कभी संस्करण नियंत्रण में कमिट न करें
- नियमित रोटेशन: webhook गुप्त मानों को समय-समय पर अपडेट करें
webhook सेटअप मार्गदर्शन के लिए, मुख्य webhooks दस्तावेज़ देखें। व्यापक परीक्षण के लिए, webhook परीक्षण गाइड देखें।