JWT डिकोडर
कोई JSON Web Token पेस्ट करें और उसका हेडर और पेलोड फ़ॉर्मेट किए गए JSON में पढ़ें। एक्सपायरी और जारी होने का समय तारीख के रूप में दिखता है, साथ में यह भी कि टोकन अभी वैध है या नहीं। डिकोडिंग पूरी तरह आपके ब्राउज़र में होती है, जो तब ज़रूरी है जब टोकन कोई चालू क्रेडेंशियल हो।
0 अक्षर · 0 शब्द · 0 पंक्तियाँ
0 अक्षर · 0 शब्द · 0 पंक्तियाँ
यह पूरी तरह इसी ब्राउज़र टैब में चलता है। आपका टेक्स्ट न अपलोड होता है, न सेव किया जाता है।
रजिस्टर्ड क्लेम
RFC 7519 §4.1 में तय सात क्लेम नाम। सभी वैकल्पिक हैं; समय 1970-01-01 UTC से सेकंड में होता है।
| क्लेम | मतलब |
|---|---|
iss | Issuer: टोकन किसने बनाया और साइन किया |
sub | Subject: वह यूज़र या इकाई जिसके बारे में टोकन है |
aud | Audience: टोकन किसके लिए है |
exp | Expiration time: इस क्षण के बाद टोकन अस्वीकार करें |
nbf | Not before: इस क्षण से पहले टोकन अस्वीकार करें |
iat | Issued at: टोकन कब बनाया गया |
jti | JWT ID: यूनिक पहचानकर्ता, रीप्ले रोकने के लिए |
आम alg मान
| alg मान | मतलब |
|---|---|
HS256 | SHA-256 के साथ HMAC; एक साझा सीक्रेट से साइन और जाँच दोनों होती है |
RS256 | SHA-256 के साथ RSA PKCS#1 v1.5 सिग्नेचर; प्राइवेट की साइन करती है, पब्लिक की जाँचती है |
PS256 | SHA-256 के साथ RSA-PSS |
ES256 | SHA-256 के साथ P-256 कर्व पर ECDSA; छोटे सिग्नेचर |
EdDSA | Ed25519 या Ed448 सिग्नेचर |
none | बिना साइन वाला टोकन; सर्वर को इसे अस्वीकार करना चाहिए |
JSON Web Token के अंदर क्या होता है
JWT की परिभाषा RFC 7519 (मई 2015) में दी गई है, जिसमें इसे अंग्रेज़ी शब्द "jot" की तरह बोलने का सुझाव है। आम साइन किया हुआ रूप डॉट से जुड़ी तीन Base64url स्ट्रिंग का होता है: header.payload.signature। header में alg फ़ील्ड साइनिंग एल्गोरिद्म बताती है, जैसे HS256 या RS256, और अक्सर kid में की (key) ID होती है। payload में क्लेम होते हैं, यानी JSON फ़ील्ड जैसे sub (यूज़र), iss (जारी करने वाला), aud (जिसके लिए टोकन बना है) और exp, nbf व iat, जो 1 जनवरी 1970 UTC से सेकंड में गिना गया समय हैं। डिकोडर इन तीनों को आपके लोकल समय और ISO 8601 में बदलता है, और बताता है कि टोकन की मियाद खत्म हो चुकी है, अभी वैध नहीं हुआ है, या अपनी वैधता अवधि के भीतर है।
Base64url एक एन्कोडिंग है, एन्क्रिप्शन नहीं, इसलिए जिसके पास भी टोकन है वह उसका payload वैसे ही पढ़ सकता है जैसे यह पेज दिखाता है। क्लेम में पासवर्ड, कार्ड नंबर या कोई और गोपनीय जानकारी कभी न रखें। डॉट से अलग किए गए पाँच हिस्सों वाला टोकन JWE होता है, यानी एन्क्रिप्टेड टोकन; उसकी सामग्री बिना की (key) के नहीं पढ़ी जा सकती, और डिकोडर यही बताता है। Authorization हेडर से कॉपी हुआ शुरुआती "Bearer " अपने आप हटा दिया जाता है।
यहाँ सिग्नेचर वेरिफ़ाई क्यों नहीं होता
सिग्नेचर यह साबित करता है कि header और payload उसी ने बनाए हैं जिसके पास की (key) है और उसके बाद उनमें बदलाव नहीं हुआ। इसे जाँचने के लिए वह की चाहिए: HS256 जैसे HMAC एल्गोरिद्म के लिए साझा सीक्रेट, या RS256, ES256 या EdDSA के लिए जारीकर्ता की पब्लिक की। किसी भी वेब पेज में प्रोडक्शन का साइनिंग सीक्रेट डालना ठीक नहीं है, और जो डिकोडर बिना की के टोकन की गारंटी देने का दिखावा करे वह झूठा भरोसा देगा, इसलिए यह टूल सिग्नेचर दिखाता है पर उसे वेरिफ़ाई नहीं करता। जो दिखे उसे टोकन का किया हुआ दावा मानें, तथ्य नहीं।
वेरिफ़िकेशन आपके सर्वर पर होना चाहिए, किसी मेंटेन की जा रही लाइब्रेरी से और अपेक्षित एल्गोरिद्म तय करके। दो पुरानी गलतियाँ इसका कारण बताती हैं: alg "none" को स्वीकार करना, जिससे कोई भी बिना साइन किया टोकन गढ़ सकता है, और एल्गोरिद्म कन्फ़्यूज़न, जिसमें RS256 की उम्मीद रखने वाले सर्वर को पब्लिक की को HMAC सीक्रेट मानकर HS256 सिग्नेचर जाँचने के लिए चकमा दिया जाता है। डिकोडर डीबग करने के लिए है: यह देखने के लिए कि प्रोवाइडर कौन से क्लेम जारी करता है, गलत audience पकड़ने के लिए, या यह पता लगाने के लिए कि सेशन इसलिए फेल हुआ क्योंकि exp एक मिनट पहले निकल गया। Base64url हिस्सों को सीधे पढ़ने के लिए Base64 डिकोडर इस्तेमाल करें।
अक्सर पूछे जाने वाले सवाल
- क्या JWT डिकोडर में असली एक्सेस टोकन पेस्ट करना सुरक्षित है?
- इस पेज पर टोकन आपके ब्राउज़र से बाहर नहीं जाता। फिर भी, वैध टोकन मियाद खत्म होने तक पासवर्ड की तरह काम करता है, इसलिए एक्सपायर्ड या टेस्ट टोकन ही इस्तेमाल करें और लाइव टोकन को स्क्रीनशॉट और चैट से दूर रखें।
- मेरा टोकन अभी-अभी जारी हुआ है, फिर भी एक्सपायर क्यों दिख रहा है?
- पहले अपने डिवाइस की घड़ी जाँचें। कुछ जारीकर्ता एक्सेस टोकन की उम्र केवल कुछ मिनट रखते हैं, और लॉग से कॉपी किया टोकन दिखने से ज़्यादा पुराना हो सकता है। सेकंड की जगह मिलीसेकंड में लिखा exp इसका उलटा करता है और हज़ारों साल आगे की तारीख़ पर पहुँच जाता है।
- क्या कोई मेरे JWT का पेलोड बदल सकता है?
- वे इसे एडिट करके दोबारा एन्कोड कर सकते हैं, लेकिन सिग्नेचर मेल नहीं खाएगा। सही की और एल्गोरिद्म से सिग्नेचर जाँचने वाला सर्वर बदले हुए टोकन को अस्वीकार कर देता है।
- JWS और JWE में क्या अंतर है?
- JWS (RFC 7515) साइन किया हुआ होता है, उसके तीन हिस्से होते हैं और उसे कोई भी पढ़ सकता है। JWE (RFC 7516) एन्क्रिप्टेड होता है, उसके पाँच हिस्से होते हैं और payload केवल की रखने वाला ही पढ़ सकता है।
- क्या लॉग आउट करने से JWT अमान्य हो जाता है?
- अपने आप नहीं। साइन किया हुआ JWT exp तक वैध रहता है, जब तक सर्वर डिनायलिस्ट न रखे या सेशन रिकॉर्ड न जाँचे। इसीलिए एक्सेस टोकन की उम्र आमतौर पर छोटी रखी जाती है।