JWT डिकोडर
JSON Web Token पेस्ट करके उसका हेडर और पेलोड पढ़ें, जिसमें खत्म होने और जारी होने के समय असली तारीख़ों में दिखते हैं।
पूरी तरह आपके ब्राउज़र में चलता है
सिग्नेचर जाँचा नहीं गया। यह पेज टोकन को डिकोड करता है; यह नहीं जाँचता कि वह असली है। कोई भी किसी भी सामग्री के साथ टोकन बना सकता है।
- एल्गोरिदम
- -
- प्रकार
- -
- की ID
- -
- हिस्से
- -
समय
| क्लेम | आपका टाइम ज़ोन, फिर UTC | सापेक्ष |
|---|
क्लेम
| क्लेम | मतलब | मान |
|---|
1 MB तक के टोकन। सिर्फ़ डिकोडिंग: सिग्नेचर दिखाया जाता है, पर जाँचा नहीं जाता।
JWT कैसे डिकोड करें
- टोकन को बॉक्स में पेस्ट करें। शुरू में लगा
Bearerऔर आसपास के स्पेस या कोट नज़रअंदाज़ किए जाते हैं। - नीचे हेडर और पेलोड पढ़ें, और खत्म होने, शुरू होने से पहले और जारी होने के समय अपने टाइम ज़ोन और UTC में देखें।
- डिकोड किया पेलोड या हेडर कहीं और चाहिए तो उसे फ़ॉर्मैट किए JSON के रूप में कॉपी करें।
JSON Web Token के अंदर क्या होता है
साइन किया हुआ JWT बिंदुओं से जुड़े Base64url टेक्स्ट के तीन टुकड़े होता है: हेडर, पेलोड और सिग्नेचर। हेडर और पेलोड बस Base64url में लिखा JSON होते हैं, इसीलिए कोई भी उन्हें पढ़ सकता है। Base64url एक एन्कोडिंग है, एन्क्रिप्शन नहीं, इसलिए JWT पेलोड में कभी सीक्रेट न रखें, जब तक टोकन एन्क्रिप्टेड न हो।
पेलोड में क्लेम होते हैं। कुछ नाम पंजीकृत हैं: iss (टोकन किसने जारी किया), sub (वह किसके बारे में है), aud (वह किसके लिए है), exp (वह कब खत्म होगा), nbf (इससे पहले मान्य नहीं), iat (कब जारी हुआ) और jti (अनोखी ID)। सेवाएँ अपने क्लेम भी जोड़ती हैं, जैसे रोल, स्कोप या ईमेल पता।
सिग्नेचर ही क्लेम को भरोसेमंद बनाता है, और उसे जाँचने के लिए साइनिंग की चाहिए, जो सिर्फ़ इश्यूअर और टोकन स्वीकार करने वाली सेवाओं के पास होनी चाहिए। यह डिकोडर जान-बूझकर पढ़ने पर ही रुक जाता है: यह दिखाता है कि टोकन क्या कहता है और कब खत्म होगा, जो आम तौर पर लॉगिन या API कॉल डीबग करते समय चाहिए होता है।
सुझाव
- किसी भी दूसरे Unix समय को तारीख़ में बदलने के लिए Unix टाइमस्टैम्प कन्वर्टर इस्तेमाल करें।
- बड़े पेलोड को JSON फ़ॉर्मैट और वैलिडेट करें से फ़ॉर्मैट या जाँचें।
- किसी अकेले Base64url हिस्से को हाथ से Base64 एन्कोड और डिकोड से डिकोड करें।
अक्सर पूछे जाने वाले सवाल
क्या यह सिग्नेचर जाँचता है?
नहीं। यह पेज सिर्फ़ टोकन को डिकोड करता है। कोई भी किसी भी हेडर और पेलोड के साथ टोकन बना सकता है, इसलिए यहाँ दिखने वाली सामग्री क्लेम है, सबूत नहीं। कोई टोकन असली है या नहीं, यह सिर्फ़ वही सेवा बता सकती है जिसके पास साइनिंग की (या RS256 और ES256 टोकन के लिए पब्लिक की) है, और उसे एक्सपायरी, ऑडियंस और इश्यूअर भी जाँचने होंगे।
क्या यहाँ टोकन पेस्ट करना सुरक्षित है?
यह पेज टोकन को कहीं नहीं भेजता: वह आपके ब्राउज़र में चलने वाले कोड से डिकोड होता है और सेव नहीं किया जाता। फिर भी, चालू एक्सेस टोकन जब तक मान्य है, पासवर्ड जैसा है। प्रोडक्शन टोकन किसी भी वेबसाइट पर पेस्ट करने से बचें, और डीबग करते समय एक्सपायर हो चुके या टेस्ट टोकन को तरजीह दें।
कुछ टोकन पढ़े क्यों नहीं जा सकते?
तीन की जगह पाँच हिस्सों वाला टोकन एन्क्रिप्टेड JWT (JWE) है। उसका हेडर पढ़ा जा सकता है, पर पेलोड एन्क्रिप्टेड है और सिर्फ़ पाने वाले की की से पढ़ा जा सकता है, इसलिए यह टूल हेडर दिखाता है और हिस्सों के बारे में समझाता है। दूसरी त्रुटियाँ, जैसे हिस्सों की गलत संख्या या ऐसा टेक्स्ट जो मान्य Base64url या JSON नहीं है, इस बताने के साथ दिखाई जाती हैं कि क्या गड़बड़ हुई।
समय कैसे निकाले जाते हैं?
exp, nbf और iat क्लेम NumericDate हैं: 1 जनवरी 1970 UTC से बीते सेकंड। इन्हें आपके डिवाइस के टाइम ज़ोन और UTC में दिखाया जाता है, और आपके डिवाइस की घड़ी से मिलाकर बताया जाता है कि टोकन एक्सपायर हुआ या नहीं। अगर आपकी घड़ी ग़लत है तो सापेक्ष समय भी ग़लत होंगे। मिलीसेकंड जैसा दिखने वाला मान चिह्नित किया जाता है, क्योंकि यह एक आम बग है।
alg, typ और kid का क्या मतलब है?
alg साइनिंग एल्गोरिदम है, जैसे HS256 (साझा सीक्रेट), RS256 या ES256 (की की जोड़ी)। typ आम तौर पर JWT होता है। kid वह की ID है जो इश्यूअर ने इस्तेमाल की, जो वेरिफ़ायर को बताती है कि सिग्नेचर किस की से जाँचना है। जिस टोकन में alg का मान none हो वह बिना साइन किया है और किसी भी ज़रूरी चीज़ के लिए कभी स्वीकार नहीं करना चाहिए।