अलविदा छोटे सेशन - वेब पर कुकी मैनेजमेंट को बेहतर बनाने के लिए, सर्विस वर्कर के इस्तेमाल का प्रस्ताव

William Denniss
Owen Campbell-Moore

हम सभी को यह पसंद है कि खास ऐप्लिकेशन आपसे सिर्फ़ एक बार लॉगिन करने के लिए कहेंगे और फिर आपको तब तक याद रखेंगे, जब तक आप उन्हें लॉग आउट करने की सूचना नहीं देते. माफ़ करें, वेब हमेशा इस तरह से काम नहीं करता है.

अब डिवाइस, खास तौर पर मोबाइल डिवाइस, अपनी ज़रूरतों के हिसाब से बनाए जा रहे हैं और ज़्यादा साइटें एचटीटीपीएस पर पूरा ट्रैफ़िक भेज रही हैं. इससे टोकन चोरी होने का खतरा कम हो जाता है. इसलिए, वेबसाइटों को कम समय तक चलने वाली कुकी से जुड़ी अपनी नीतियों पर फिर से विचार करना चाहिए. साथ ही, ऐसे सेशन का इस्तेमाल करना चाहिए जो उपयोगकर्ता के लिए ज़्यादा आसान हों.

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

अगर आपने इस तरीके का इस्तेमाल किया है, तो हमारे पास एक तकनीकी समाधान है. इसकी मदद से, आपको स्टेटलेस ऑथेंटिकेशन कुकी की अपने-आप फिर से पुष्टि करने में मदद मिल सकती है. इसमें, एक अन्य लंबे समय तक चलने वाले टोकन का इस्तेमाल किया जाता है. इसका इस्तेमाल कुछ समय तक चलने वाली पुष्टि करने वाली मौजूदा कुकी को रीफ़्रेश करने के लिए किया जा सकता है. नए सर्विस वर्कर पैटर्न का इस्तेमाल करने से, हम लंबे समय तक चलने वाले टोकन के साथ नियमित रूप से "चेक इन" कर पाते हैं और उपयोगकर्ता की पुष्टि (उदाहरण के लिए, यह देखना कि क्या उन्होंने हाल ही में अपना पासवर्ड नहीं बदला है या फिर सेशन रद्द नहीं किया है) और नई अल्पकालिक पुष्टि कुकी फिर से जारी कर सकते हैं.

वेब पर सुरक्षित लंबे सेशन पर माइग्रेट करने के लिए एक व्यवहारिक प्रस्ताव

यहां से, इस पोस्ट में एक नई तकनीक के बारे में बताया गया है. साथ ही, हमने यह सुझाव दिया है कि इसे 2-Cookie-Handoff (2CH) नाम दें. हमें उम्मीद है कि हम इस लेख में, कम्यूनिटी के सुझाव, राय या शिकायत जानना चाहेंगे कि यह तरीका अच्छा है या नहीं. अगर ऐसा है, तो हम इंडस्ट्री के साथ मिलकर, 2CH का इस्तेमाल करने के सबसे सही तरीकों का दस्तावेज़ तैयार करने के लिए काम कर रहे हैं.

सर्विस वर्कर एक नई तकनीक है, जो Chrome, Firefox, Opera जैसे कई ब्राउज़र पर काम करती है और जल्द ही Edge पर आने वाली है. इनकी मदद से, मौजूदा पेजों में बदलाव किए बिना, क्लाइंट पर एक कॉमन पॉइंट कोड का इस्तेमाल करके, अपनी साइट के सभी नेटवर्क अनुरोधों को रोका जा सकता है. इससे, लॉग इन किए हुए उन उपयोगकर्ताओं के लिए "2CH वर्कर" सेट अप हो जाता है जो मोबाइल ऐप्लिकेशन की तरह, आपके पेज पर किए जा रहे सभी नेटवर्क अनुरोधों को बीच में रोक सकते हैं. साथ ही, टोकन स्वैप करते हैं.

ज़्यादातर मामलों में, आपके सर्वर में पहले से ही एक एंडपॉइंट होता है, जिसका इस्तेमाल मोबाइल ऐप्लिकेशन नया कम समय तक चलने वाला नया टोकन पाने के लिए करते हैं. आम तौर पर, इसमें OAuth प्रोटोकॉल का इस्तेमाल किया जाता है. वेब पर ऊपर दिए गए पैटर्न को चालू करने के लिए, उस एंडपॉइंट को सिर्फ़ यह समझने के लिए अपडेट करना होगा कि सर्विस वर्कर कब उसे कॉल कर रहा है. इसके बाद, कुछ देर तक चलने वाली सेशन कुकी को इस तरह फ़ॉर्मैट करना ज़रूरी है कि साइट के अन्य पेज पहले से इसकी उम्मीद कर रहे हों.

अगर आपके सर्वर में पहले से ऐसा एंडपॉइंट नहीं है, तो सिर्फ़ ब्राउज़र सेशन मैनेजमेंट के लिए यह एंडपॉइंट बनाया जा सकता है.

दो कुकी हैंडऑफ़ का क्रम

सर्विस वर्कर के साथ बने दो टोकन वाला पैटर्न, OAuth 2.0 पैटर्न का अच्छी तरह से पालन करता है. अगर आपके पास पहले से OAuth टोकन एंडपॉइंट है, तो आप अपने वेब की पुष्टि करने के लिए, इसे सर्विस वर्कर के साथ फिर से इस्तेमाल कर सकते हैं.

यह भी हो सकता है कि अगर उपयोगकर्ता किसी ऐसे ब्राउज़र पर जाए जो सर्विस वर्कर के साथ काम न करता हो, तो क्या होता है. अगर आप ऊपर बताए गए तरीके को लागू करते हैं, तो उन्हें कोई बदलाव नहीं दिखेगा. साथ ही, उन्हें छोटे-छोटे सेशन मिलते रहेंगे.

हमने क्लाइंट और बैकएंड का एक सैंपल पब्लिश किया है. हम आशा करते हैं कि आप इसे खुद आज़माएं और सेशन मैनेजमेंट से जुड़े सर्वे में हिस्सा लें.