JWT डिकोडर
डिकोड किया गया header और payload देखने के लिए एक JWT पेस्ट करें, एक्सपायरी जैसे स्टैंडर्ड क्लेम्स को समझाया गया। कुछ भी अपलोड नहीं होता, सिग्नेचर कभी वेरिफ़ाई या किसी सीक्रेट के ख़िलाफ़ चेक नहीं होते।
Header
Payload
यह कैसे काम करता है
एक JWT डॉट्स से जुड़े तीन Base64URL सेगमेंट होते हैं: header, payload, signature। टूल डॉट्स पर स्प्लिट करता है, फिर पहले दो सेगमेंट्स को URL-सेफ़ अल्फ़ाबेट को वापस स्टैंडर्ड Base64 में मैप करके डिकोड करता है (- को +, _ को /), JWT द्वारा छोड़ी गई पैडिंग को रीस्टोर करते हुए, atob() चलाते हुए, और TextDecoder से बाइट्स को UTF-8 के रूप में डिकोड करते हुए। हर सेगमेंट को फिर JSON.parse किया जाता है और प्रेटी-प्रिंट किया जाता है। स्टैंडर्ड क्लेम्स (iss, sub, aud, exp, nbf, iat, jti) को ह्यूमन लेबल्स मिलते हैं, यूनिक्स टाइमस्टैंप्स पढ़ने लायक तारीख़ों में बदल जाते हैं, और exp की तुलना आपकी घड़ी से की जाती है यह बताने के लिए कि टोकन एक्सपायर हो चुका है या नहीं। तीसरा सेगमेंट, सिग्नेचर, कभी पार्स ही नहीं होता।
यही वह भेद है जिस पर यह टूल सख़्त है: डिकोड करना वेरिफ़ाई करना नहीं है। किसी भी JWT का payload किसी के भी द्वारा पढ़ा जा सकता है, यह एनकोडेड है, एन्क्रिप्टेड नहीं। टोकन को असली साबित करने का मतलब है सिग्नेचर को दोबारा कैलकुलेट करना, जिसके लिए साइनिंग सीक्रेट (HMAC के लिए) या इशूअर की की (RSA/ECDSA के लिए) चाहिए होती है। यह टूल जानबूझकर "अपना सीक्रेट पेस्ट करें" बॉक्स ऑफ़र नहीं करता: प्रोडक्शन साइनिंग सीक्रेट्स को वेब पेजेज़ में पेस्ट करने की आदत डालना एक ऐसा रिस्क है जिसे कोई भी सुविधा जस्टिफ़ाई नहीं कर सकती, और वेरिफ़िकेशन वैसे भी आपके सर्वर पर होनी चाहिए। किसी ऐसे डिकोड किए गए क्लेम पर कभी भरोसा न करें जिसे आपने सर्वर-साइड वेरिफ़ाई न किया हो।
यह सब इस पेज के JavaScript में atob और टेक्स्ट डिकोडिंग APIs इस्तेमाल करते हुए चलता है। डेवटूल्स का Network टैब खोलकर एक असली टोकन पेस्ट करें और देखें: कोई रिक्वेस्ट नहीं होती, टोकन कभी ब्राउज़र टैब से बाहर नहीं जाता।