JWT (JSON वेब टोकन) एक खुला मानक (RFC 7519) है जो पक्षों के बीच सुरक्षित रूप से जानकारी संचारित करने के लिए एक संक्षिप्त और स्वतंत्र तरीका परिभाषित करता है। इस जानकारी को सत्यापित और विश्वसनीय माना जा सकता है क्योंकि यह डिजिटल रूप से हस्ताक्षरित है।
JWT तीन भागों से बना होता है, जो डॉट (.) से अलग होते हैं: हेडर (Header), पेलोड (Payload) और हस्ताक्षर (Signature)। हेडर हस्ताक्षर एल्गोरिदम निर्दिष्ट करता है, पेलोड में दावे होते हैं, और हस्ताक्षर यह सत्यापित करने के लिए उपयोग किया जाता है कि संदेश में कोई छेड़छाड़ नहीं की गई है।
JWT के सामान्य उपयोग के परिदृश्य
प्रमाणीकरण (सबसे आम परिदृश्य), सूचना विनिमय (JWT सुरक्षित रूप से जानकारी संचारित कर सकते हैं क्योंकि उन्हें हस्ताक्षरित किया जा सकता है), अधिकार (उपयोगकर्ता अनुमति जानकारी शामिल करना) और सिंगल साइन-ऑन कार्यान्वयन।
हस्ताक्षर एल्गोरिदम के प्रकार
JWT कई हस्ताक्षर एल्गोरिदम का समर्थन करता है, जो मुख्य रूप से दो श्रेणियों में विभाजित हैं: HMAC आधारित सममित एल्गोरिदम (जैसे HS256) और RSA/ECDSA आधारित असममित एल्गोरिदम (जैसे RS256, ES256)। सममित एल्गोरिदम हस्ताक्षर और सत्यापन के लिए समान कुंजी का उपयोग करते हैं, जबकि असममित एल्गोरिदम निजी कुंजी से हस्ताक्षर करते हैं और सार्वजनिक कुंजी से सत्यापन करते हैं।
JWT में संवेदनशील जानकारी (जैसे पासवर्ड) संग्रहीत न करें, क्योंकि JWT का पेलोड भाग केवल Base64 एन्कोडेड है, एन्क्रिप्टेड नहीं। उच्च सुरक्षा वाले अनुप्रयोगों के लिए, कम समाप्ति समय का उपयोग करने और टोकन रोटेशन रणनीति लागू करने की सिफारिश की जाती है।
JWT समाप्त होने के बाद कैसे संभालें?
जब JWT समाप्त हो जाता है, तो सर्वर इस टोकन को अस्वीकार कर देगा। अनुशंसित प्रक्रिया यह है कि रिफ्रेश टोकन (Refresh Token) तंत्र को लागू किया जाए, जहां क्लाइंट रिफ्रेश टोकन का उपयोग करके नया एक्सेस टोकन प्राप्त कर सकता है, बिना उपयोगकर्ता को फिर से लॉगिन करने के लिए कहा जाए। रिफ्रेश टोकन में आमतौर पर लंबी समाप्ति अवधि होती है, लेकिन इसे सावधानी से संग्रहीत किया जाना चाहिए।
सख्ती से कहें तो, JWT को स्टेटलेस टोकन के रूप में डिजाइन किया गया है, जिसे वास्तव में रद्द नहीं किया जा सकता। लेकिन कुछ सामान्य समाधान हैं: रद्द किए गए टोकन की ब्लैकलिस्ट बनाए रखना (जो JWT के स्टेटलेस लाभ को कम कर सकता है), कम समाप्ति समय के साथ रिफ्रेश टोकन का उपयोग करना, या टोकन में संस्करण पहचानकर्ता एम्बेड करना, सर्वर पुराने संस्करणों को अस्वीकार कर सकता है।
JWT और सत्र में क्या अंतर है?
JWT एक स्वतंत्र टोकन है जिसमें सभी आवश्यक जानकारी शामिल होती है, जो वितरित प्रणालियों के लिए उपयुक्त है, और सर्वर को सत्र स्थिति संग्रहीत करने की आवश्यकता नहीं होती है। सत्र सर्वर-साइड संग्रहण पर आधारित होता है, जिसमें सत्र स्थिति को बनाए रखने की आवश्यकता होती है, और यह एकल सर्वर आर्किटेक्चर के लिए अधिक उपयुक्त है। JWT विस्तार के लिए अधिक अनुकूल है, लेकिन रद्द करना जटिल है; सत्र को रद्द करना आसान है, लेकिन विस्तारशीलता कम है।