बिना डाउनटाइम के webhook सीक्रेट को कैसे रोटेट करें?

बिना डाउनटाइम के webhook सीक्रेट रोटेट करने के लिए नया सीक्रेट तब डिप्लॉय करें, जब Bird डिलीवरी को अब भी दोनों सीक्रेट से साइन कर रहा हो।

आपके रिसीवर अलग-अलग समय पर डिप्लॉय हो सकते हैं। ओवरलैप की वजह से पुराने सीक्रेट वाला रिसीवर और नए सीक्रेट वाला रिसीवर, दोनों एक ही डिलीवरी को प्रमाणित कर पाते हैं।

पूरे डिप्लॉयमेंट के दौरान डिलीवरी का सत्यापन करते रहें, ताकि किसी हमलावर का अनुरोध कोई काम शुरू न करवा सके।

सीक्रेट रोटेट करने पर क्या होता है?

Bird आपको एक नया साइनिंग सीक्रेट देता है। इसे 24 घंटे के भीतर डिप्लॉय करें, जब तक Bird पुराने सीक्रेट से भी साइन कर रहा है।

अपने एंडपॉइंट के लिए rotateWebhookSecret को कॉल करें। उसका secret सहेज लें, जो whsec_ से शुरू होने वाली एक गैर-खाली स्ट्रिंग है, क्योंकि यह केवल उसी प्रतिक्रिया में लौटाया जाता है।

ओवरलैप के दौरान Bird हर डिलीवरी को दोनों सीक्रेट से साइन करता है। webhook-signature हेडर में स्पेस से अलग किए गए सिग्नेचर होते हैं, और हर सिग्नेचर v1, से शुरू होता है।

रिसीवर संबंधित सीक्रेट का उपयोग करके किसी भी सिग्नेचर का सत्यापन कर सकता है। डिप्लॉयमेंट 24 घंटे के भीतर पूरा करें, क्योंकि उसके बाद पुराना सीक्रेट साइन करना बंद कर देता है।

मेरे हैंडलर को क्या करना होगा?

जब दिया गया कोई भी सिग्नेचर किसी भरोसेमंद सीक्रेट से मेल खाए, तो आपके हैंडलर को डिलीवरी स्वीकार करनी होगी।

जो रिसीवर केवल पहला सिग्नेचर जाँचता है, वह सीक्रेट बदलने के बाद मान्य डिलीवरी अस्वीकार कर सकता है।

Standard Webhooks विनिर्देश सिग्नेचर की एक सूची तय करता है, ताकि रोटेशन के दौरान रिसीवर हर सिग्नेचर आज़मा सकें। किसी लाइव एंडपॉइंट को रोटेट करने से पहले अपने वेरिफ़ायर को कई सिग्नेचर के साथ टेस्ट करें।

बदलाव के पूरे दौरान टाइमस्टैम्प और डुप्लिकेट की जाँच चालू रखें। सिग्नेचर सत्यापन इन जाँचों के बारे में बताता है।

सुरक्षित क्रम क्या है?

नया सीक्रेट सहेजें और डिप्लॉय करें। पुराने सीक्रेट का ओवरलैप समाप्त होने से पहले पुष्टि करें कि सत्यापन काम कर रहा है।

  1. एंडपॉइंट सीक्रेट रोटेट करें और लौटाया गया मान तुरंत संग्रहीत करें।
  2. 24 घंटे के ओवरलैप के भीतर नया मान हर रिसीवर इंस्टेंस पर डिप्लॉय करें।
  3. रिसीवर लॉग और Bird के डिलीवरी प्रयासों के माध्यम से पुष्टि करें कि रिसीवर नए सीक्रेट से डिलीवरी का सत्यापन कर रहे हैं।
  4. ओवरलैप के बाद पिछले सीक्रेट को अपने आप समाप्त होने दें।

रोटेशन ऑपरेशन में हटाने का कोई अलग चरण नहीं है। अगर पुराना सीक्रेट उजागर हो गया था, तो रिसीवरों को नया सीक्रेट मिलने के बाद उनमें पुराने सीक्रेट पर भरोसा करना बंद करें। केवल रोटेट करने से, पुराने सीक्रेट पर भरोसा करने वाले रिसीवर ओवरलैप के दौरान असुरक्षित रहते हैं।

अगर मैं तुरंत फिर से रोटेट करूँ तो क्या होगा?

जब तक एंडपॉइंट पर एक साथ पाँच मान्य सीक्रेट नहीं हो जाते, तब तक अगला रोटेशन सफल हो सकता है।

एक सीक्रेट से शुरू करने पर, पुराने सीक्रेट समाप्त होने से पहले चार रोटेशन इन पाँचों स्लॉट को भर सकते हैं। उसके बाद का रोटेशन WebhookTooManySecrets के साथ विफल होता है। इसलिए बार-बार रोटेट करने वाला लूप ज़रूरत पड़ने पर नया सीक्रेट जारी होने से रोक सकता है।

फिर से रोटेट करने से पहले किसी पुराने सीक्रेट के समाप्त होने की प्रतीक्षा करें। बार-बार रोटेट करने के बाद भी आपको नया सीक्रेट अपने रिसीवरों पर डिप्लॉय करना होगा।

बदलाव के दौरान विफल हुई डिलीवरी का क्या होता है?

Bird विफल डिलीवरी के लिए फिर से प्रयास करता है, इसलिए सत्यापन ठीक करने पर फिर से प्रयास की अवधि के दौरान वे डिलीवरी वापस मिल सकती हैं।

समय-समायोजन से पहले यह शेड्यूल लगभग 27.5 घंटे तक चलता है। फिर से प्रयास पूरे होने के बाद भी किसी विफल डिलीवरी को रीप्ले के ज़रिए वापस पाया जा सकता है; विफल webhook के फिर से प्रयास में रीप्ले की समय-सीमा बताई गई है।

जिस अनुरोध को आप सत्यापित नहीं कर सकते, उसके लिए त्रुटि लौटाएँ। 2xx लौटाने पर डिलीवरी सफल मान ली जाती है, और इस वजह से वह विफल इवेंट के रीप्ले से बाहर हो जाती है।

संक्षेप में

  1. ओवरलैप के दौरान डिप्लॉय करें।

    Bird 24 घंटे तक पुराने और नए दोनों सीक्रेट से साइन करता है, जिससे रिसीवर को नया मान अपनाने का समय मिलता है।

  2. मेल खाने वाला कोई भी सिग्नेचर स्वीकार करें।

    जो रिसीवर केवल पहला सिग्नेचर जाँचता है, वह रोटेशन के दौरान किसी वैध डिलीवरी को अस्वीकार कर सकता है।

  3. नया सीक्रेट तुरंत सेव करें।

    नया सीक्रेट केवल रोटेट रिस्पॉन्स में ही लौटाया जाता है।

  4. रोटेशन की सीमा पाँच सीक्रेट है।

    एक वैध सीक्रेट से शुरू करने पर चार रोटेशन सभी उपलब्ध स्लॉट भर देते हैं, और कोई पुराना सीक्रेट समाप्त होने तक नए स्लॉट नहीं मिलते।

उसी नेटवर्क पर बनाएँ।

एक टेस्ट API key आपको तुरंत मिल जाती है। भुगतान विधि जोड़ने और सेंडर सत्यापित करने पर प्रोडक्शन अनलॉक होता है।

आपका अगला आइडिया। जुड़ने के लिए तैयार।