JWT टोकन को कैसे डीकोड और निरीक्षण करें
JSON Web Token (JWT) आधुनिक वेब एप्लिकेशन में प्रमाणीकरण संभालने का सबसे सामान्य तरीका है। जब प्रमाणीकरण पक्ष पर कुछ गलत होता है — एक उपयोगकर्ता बिना कारण लॉग आउट हो जाता है, अनुमतियाँ गलत हैं, या एक API 401 लौटाता है — JWT को डीकोड करना अक्सर डिबगिंग का पहला चरण होता है।
JWT में क्या होता है
एक JWT के तीन भाग होते हैं जो बिंदुओं से अलग होते हैं:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U
हेडर — एल्गोरिदम (HS256, RS256, आदि) और टोकन प्रकार शामिल करता है।
{"alg": "HS256", "typ": "JWT"}
पेलोड — उपयोगकर्ता और टोकन के बारे में क्लेम (दावे) शामिल करता है।
{"sub": "1234567890", "name": "Alice", "exp": 1700000000}
हस्ताक्षर — एक क्रिप्टोग्राफ़िक फ़िंगरप्रिंट जो गारंटी देता है कि टोकन बदला नहीं गया है। आप इसे हस्ताक्षर कुंजी के बिना नहीं पढ़ सकते।
सामान्य JWT क्लेम
| क्लेम | पूरा नाम | सामग्री |
|---|---|---|
sub |
Subject | उपयोगकर्ता ID या पहचानकर्ता |
exp |
Expiration | वैधता समाप्ति का Unix टाइमस्टैम्प |
iat |
Issued At | निर्माण का Unix टाइमस्टैम्प |
iss |
Issuer | टोकन बनाने वाला (आपका प्रमाणीकरण सर्वर) |
aud |
Audience | टोकन किसके लिए है |
nbf |
Not Before | इस तिथि से पहले टोकन मान्य नहीं है |
jti |
JWT ID | टोकन का अद्वितीय पहचानकर्ता |
JWT को कैसे डीकोड करें
- अपना टोकन पेस्ट करें — डीकोडर में पूरा JWT (हेडर.पेलोड.हस्ताक्षर फ़ॉर्मेट) दर्ज करें।
- डीकोड किए गए अनुभागों को देखें — टूल हेडर (एल्गोरिदम), पेलोड (क्लेम) और हस्ताक्षर को फ़ॉर्मेट किए गए JSON के रूप में प्रदर्शित करता है।
- क्लेम सत्यापित करें — समाप्ति तिथि, जारीकर्ता, विषय और कोई कस्टम क्लेम की जाँच करें।
JWT के साथ डिबग करना
समाप्त हो गया टोकन? exp क्लेम की जाँच करें। Unix टाइमस्टैम्प को पठनीय तिथि में कनवर्ट करें। यदि यह बीत गया है, तो टोकन समाप्त हो गया है और इसे रीफ़्रेश करने की आवश्यकता है।
गलत अनुमतियाँ? पेलोड में भूमिका या स्कोप क्लेम की तलाश करें। वे कार्यान्वयन के अनुसार भिन्न होते हैं लेकिन अक्सर "role": "admin" या "scope": "read write" की तरह दिखते हैं।
उपयोगकर्ता पहचान समस्या? sub क्लेम उपयोगकर्ता की पहचान करता है। सत्यापित करें कि यह अपेक्षित ID से मेल खाता है।
टोकन अस्वीकृत? aud क्लेम (ऑडियंस) की जाँच करें। यदि API एक विशिष्ट ऑडियंस की अपेक्षा करता है और टोकन में दूसरा है, तो इसे अस्वीकार किया जाएगा।
महत्वपूर्ण सुरक्षा नोट्स
- JWT एन्क्रिप्टेड नहीं हैं — कोई भी पेलोड को डीकोड कर सकता है। JWT में पासवर्ड, API कुंजी या अन्य रहस्य न डालें।
- हमेशा सर्वर-साइड पर हस्ताक्षर सत्यापित करें — एक डीकोडर आपको दिखाता है कि टोकन क्या दावा करता है, लेकिन केवल हस्ताक्षर सत्यापन यह प्रमाणित करता है कि इसे बदला नहीं गया है।
- समाप्ति की जाँच करें — समाप्त टोकन हमेशा अस्वीकार किए जाने चाहिए। यदि आपका एप्लिकेशन समाप्त टोकन स्वीकार करता है, तो यह एक सुरक्षा खामी है।
अक्सर पूछे जाने वाले प्रश्न
क्या मैं डीकोडर के साथ JWT हस्ताक्षर सत्यापित कर सकता हूँ?
नहीं। हस्ताक्षर सत्यापन के लिए हस्ताक्षर रहस्य या सार्वजनिक कुंजी की आवश्यकता होती है, जो आपके सर्वर पर रखी जाती है। एक डीकोडर आपको दिखाता है कि टोकन में क्या है, लेकिन क्रिप्टोग्राफ़िक सत्यापन आपके बैकएंड पर होना चाहिए। प्रोडक्शन में असत्यापित JWT पर कभी भरोसा न करें।
क्या किसी ऑनलाइन टूल में JWT पेस्ट करना सुरक्षित है?
हाँ, जब टूल आपके ब्राउज़र में चलता है। ब्राउज़र डीकोडर टोकन को स्थानीय रूप से प्रोसेस करते हैं — कुछ भी सर्वर पर नहीं भेजा जाता। उन टूल्स से बचें जो आपके टोकन के साथ नेटवर्क अनुरोध करते हैं।
exp क्लेम क्या है?
exp (समाप्ति) क्लेम एक Unix टाइमस्टैम्प है जो इंगित करता है कि टोकन कब समाप्त होता है। इस तिथि के बाद, टोकन को अस्वीकार किया जाना चाहिए। प्रमाणीकरण समस्याओं को डिबग करने के लिए हमेशा इस क्लेम की जाँच करें।
क्या JWT एन्क्रिप्ट किए जा सकते हैं?
मानक JWT (JWS) हस्ताक्षरित हैं लेकिन एन्क्रिप्टेड नहीं हैं — कोई भी पेलोड को डीकोड कर सकता है। JWE (JSON Web Encryption) टोकन एन्क्रिप्टेड हैं, लेकिन कम सामान्य हैं। मानक JWT पेलोड में कभी संवेदनशील डेटा (पासवर्ड, रहस्य) न डालें।