ट्यूटोरियल
JWT को लीक किए बिना कैसे डिकोड करें
एक JSON Web Token में असली डेटा होता है: यह किस उपयोगकर्ता को जारी किया गया, यह क्या अनुमतियाँ देता है, यह कब समाप्त होता है। इसे किसी अनजान ऑनलाइन डिकोडर में चिपकाने का मतलब है वह डेटा, और अक्सर एक अभी भी वैध सेशन, ऐसे सर्वर को सौंप देना जिस पर आपका नियंत्रण नहीं है। नीचे दिया गया डिकोडर पूरी तरह आपके ब्राउज़र में चलता है, इसलिए आप पढ़ सकते हैं कि किसी token के अंदर क्या है, जाँच सकते हैं कि वह समाप्त हुआ या नहीं, और जब आप सीक्रेट जानते हों तो HMAC हस्ताक्षर की पुष्टि कर सकते हैं, और यह सब आपके टैब से एक भी नेटवर्क अनुरोध बाहर गए बिना।
चरण दर चरण
- JWT डिकोडर खोलें और अपना token इनपुट बॉक्स में चिपकाएँ। एक JWT तीन Base64Url टुकड़ों से बना होता है जो बिंदुओं से जुड़े होते हैं: header, payload और signature। आप इसे Bearer प्रीफ़िक्स के साथ या उसके बिना चिपका सकते हैं; टूल दोनों ही तरह से संरचना पढ़ लेता है और प्रारूप गलत होने पर तुरंत बता देता है।
- डिकोड किए गए header और payload को पढ़ें। header हस्ताक्षर एल्गोरिदम (उदाहरण के लिए HS256 या RS256) और मौजूद होने पर की-आईडी दिखाता है। payload इसके claims सूचीबद्ध करता है: token किसके लिए है (sub), इसे किसने जारी किया (iss), और टाइमस्टैम्प। टूल संख्यात्मक iat, nbf और exp फ़ील्ड को पढ़ने योग्य तारीखों में बदल देता है और दर्शाता है कि token अभी भी वैध है या पहले ही समाप्त हो चुका है।

- यदि token HS256 का उपयोग करता है और आपके पास साझा सीक्रेट है, तो सीक्रेट को सत्यापन फ़ील्ड में चिपकाएँ और सत्यापित करें पर क्लिक करें। टूल header और payload पर HMAC की दोबारा गणना करता है और उसकी तुलना signature से करता है, ताकि आप जान सकें कि token असली है या उससे छेड़छाड़ की गई है। RS256 या ES256 token के लिए, हस्ताक्षर एक निजी कुंजी से होता है जो आपके पास नहीं है, इसलिए टूल इसके claims का निरीक्षण करता है पर signature सत्यापित करने का दावा नहीं करता।

आपको कभी भी किसी अनजान साइट पर token क्यों नहीं चिपकाना चाहिए
एक JWT एन्क्रिप्टेड नहीं होती। header और payload केवल Base64Url-एन्कोडेड होते हैं, जिसका मतलब है कि token पाने वाला कोई भी इसके अंदर हर claim पढ़ सकता है: ईमेल, उपयोगकर्ता आईडी, भूमिकाएँ, आंतरिक फ़्लैग। यदि token एक ऐसा एक्सेस token है जो समाप्त नहीं हुआ है, तो जिसके पास भी वह है वह उसे दोबारा भेजकर आपके रूप में काम कर सकता है, जब तक वह समाप्त न हो जाए। जब आप किसी होस्ट किए गए डिकोडर में एक जीवित token चिपकाते हैं, तो आप यह सब उस सर्वर के लॉग में भेज देते हैं। token को अपनी ही मशीन पर, बिना किसी अपलोड के, डिकोड करना ही उसे देखने वालों का दायरा बढ़ाए बिना उसका निरीक्षण करने का एकमात्र तरीका है। आप डिकोड करते समय नेटवर्क पैनल खोलकर पुष्टि कर सकते हैं कि कोई ट्रैफ़िक नहीं है।
signature आपको क्या बता सकता है और क्या नहीं
signature ही वह है जो किसी को claims बदलकर बच निकलने से रोकता है। HS256 token के लिए, वही सीक्रेट हस्ताक्षर और सत्यापन दोनों करता है, इसलिए यदि आप सीक्रेट जानते हैं तो आप यहीं पूरी तरह पुष्टि कर सकते हैं कि token प्रामाणिक है। RS256 और ES256 token के लिए, एक निजी कुंजी token पर हस्ताक्षर करती है और केवल उससे मेल खाती सार्वजनिक कुंजी ही उसे सत्यापित करती है; निजी कुंजी कभी जारीकर्ता को नहीं छोड़ती, इसलिए क्लाइंट-साइड टूल इसके claims पढ़ सकता है पर उस सार्वजनिक कुंजी के बिना ईमानदारी से signature सिद्ध नहीं कर सकता। डिकोड किए गए payload को जारीकर्ता के एक दावे के रूप में मानें, प्रमाण के रूप में नहीं, जब तक कि सत्यापन कुंजी के मालिक द्वारा signature की जाँच न हो जाए। सीक्रेट को अलग से हैश या तुलना करने के लिए, इस साइट का हैश जनरेटर भी स्थानीय रूप से चलता है।
JWT structure और प्रत्येक भाग क्या reveal करता है
JWT तीन Base64url-encoded segments हैं जो dots से separated हैं: header, payload, और signature। Header token type ("JWT") और algorithm declare करता है: HS256 (HMAC-SHA-256, एक shared secret) या RS256 (RSA-SHA-256, एक public/private key pair) सबसे सामान्य हैं। Payload में claims होते हैं जैसे `sub` (subject, आमतौर पर user ID), `iat` (issued-at Unix timestamp), `exp` (expiration Unix timestamp), `aud` (intended audience), और custom application claims जैसे roles या scopes। Base64url encryption नहीं है: यह Base64 का URL-safe variant है जो `+` को `-` से और `/` को `_` से replace करता है, और padding को omit करता है। कोई भी जो raw token string रखता है वह signing key के बिना header और payload decode कर सकता है। केवल signature segment को verify करने के लिए key की आवश्यकता होती है। यही कारण है कि किसी external online decoder में live production token पेस्ट करना एक security risk है: यदि token का `exp` अभी भी future में है और service input को log करती है, तो जो session यह represent करता है वह compromised हो सकता है।
इस गाइड में इस्तेमाल किए गए टूल
अक्सर पूछे जाने वाले सवाल
क्या मेरा token डिकोड करते समय किसी सर्वर पर भेजा जाता है?
नहीं। डिकोडर token को विभाजित करता है, header और payload को Base64Url-डिकोड करता है, और उन्हें मेमोरी में दिखाता है। वैकल्पिक HMAC जाँच आपके ब्राउज़र के अंतर्निहित Web Crypto API का उपयोग करती है। कुछ भी नेटवर्क पर नहीं जाता, और यह मायने रखता है क्योंकि एक JWT में अक्सर व्यक्तिगत डेटा और एक ऐसा सेशन होता है जो अभी भी सक्रिय है। डिकोड करते समय अपने ब्राउज़र का नेटवर्क पैनल खोलें और आप देखेंगे कि कोई अनुरोध बाहर नहीं जाता।
क्या यह टूल RS256 या ES256 signature सत्यापित कर सकता है?
पूरी तरह नहीं, और यह बहाना भी नहीं करेगा। HS256 हस्ताक्षर और सत्यापन दोनों के लिए एक ही साझा सीक्रेट का उपयोग करता है, इसलिए वह सीक्रेट चिपकाने पर टूल आपके ब्राउज़र में signature की पुष्टि कर सकता है। RS256 और ES256 हस्ताक्षर के लिए एक निजी कुंजी और सत्यापन के लिए एक अलग सार्वजनिक कुंजी का उपयोग करते हैं; टूल इसके claims और समय-सीमा को पढ़ता और मान्य करता है पर ऐसे signature का दावा नहीं करता जिसे वह जाँच नहीं सकता। उन token के लिए, उस सेवा पर सत्यापित करें जिसके पास सार्वजनिक कुंजी है।