header.payload.signature
JWT डिकोडर
JSON Web Token (JWT) डॉट से अलग किए 3 Base64url हिस्सों का होता है: हेडर, पेलोड और सिग्नेचर। टोकन पेस्ट करके उसके क्लेम और समय पढ़ें; वह यहाँ डिकोड होता है, सत्यापित नहीं।
- iat 1700000000 = 2023-11-14 22:13:20 UTC
- exp 1700003600 = 2023-11-14 23:13:20 UTC
- HS256 = 32 B
टोकन इसी टैब में रहता है और कहीं नहीं भेजा जाता। डिकोड हुआ टोकन भरोसेमंद टोकन नहीं होता: सिग्नेचर यहाँ कभी जाँचा नहीं जाता।
Scanned by NortonTM Safe Web
एक नज़र में
- क़ीमत
- कोई शुल्क नहीं
- खाता
- ज़रूरत नहीं
- मानक
- RFC 7519 (JWT), RFC 7515 (JWS), RFC 7516 (JWE)
- सिग्नेचर
- सत्यापित नहीं — टोकन सिर्फ़ डिकोड होता है
- समय
- exp, nbf और iat UTC में दिखते हैं और आपकी घड़ी से तुलना होती है
- अपलोड
- कोई नहीं — टोकन आपके ब्राउज़र टैब में रहता है
एक नमूना टोकन और आम एल्गोरिदम
इस पेज का नमूना टोकन एक फेंक दी जाने वाली कुंजी पर HMAC-SHA-256 से साइन किया गया है। पेज ने उसे डिकोड करके पहली तालिका बनाई।
| क्लेम | मान | समय (UTC) |
|---|---|---|
| iss | auth.example.com | — |
| sub | user-42 | — |
| aud | api | — |
| iat | 1700000000 | 2023-11-14 22:13:20 UTC |
| exp | 1700003600 | 2023-11-14 23:13:20 UTC |
| alg | परिवार | हैश | सिग्नेचर का आकार |
|---|---|---|---|
| HS256 | HMAC | SHA-256 | 32 B |
| HS512 | HMAC | SHA-512 | 64 B |
| RS256 | RSASSA-PKCS1-v1_5 | SHA-256 | 256 B (2048-bit key) |
| ES256 | ECDSA P-256 | SHA-256 | 64 B |
| ES512 | ECDSA P-521 | SHA-512 | 132 B |
| EdDSA | EdDSA | — | 64 B (Ed25519) |
JWT कैसे डिकोड करें
टोकन पेस्ट करें
पूरा टोकन पेस्ट करें, शुरू में Bearer के साथ या बिना। इसमें डॉट से अलग किए 3 हिस्से होते हैं, या एन्क्रिप्टेड JWE हो तो 5।
हिस्से पढ़ें
हेडर और पेलोड फ़ॉर्मेट किए JSON के रूप में दिखते हैं, और हर क्लेम तालिका में सूचीबद्ध होता है। समय exp, nbf और iat UTC में दिखाए जाते हैं।
समय जाँचें
पेज exp और nbf की तुलना आपके डिवाइस की घड़ी से करता है और बताता है कि टोकन की अवधि खत्म हुई या नहीं। यह नहीं बताता कि टोकन असली है या नहीं।
JWT कैसे बना होता है
JWT (RFC 7519) header.payload.signature के रूप में लिखा जाता है। हेडर और पेलोड JSON ऑब्जेक्ट हैं, हर एक बिना पैडिंग के Base64url में एन्कोड (RFC 4648, खंड 5), और सिग्नेचर उसी एन्कोडिंग में कच्चे बाइट हैं। डिकोडिंग सिर्फ़ एन्कोडिंग बदलती है, इसलिए टोकन रखने वाला कोई भी उसका पेलोड पढ़ सकता है: उसमें गोपनीय बातें न रखें। हेडर alg में सिग्नेचर एल्गोरिदम का नाम देता है, जैसे HS256 (SHA-256 के साथ HMAC, 32 बाइट का सिग्नेचर) या RS256 (SHA-256 के साथ RSA, 2048-बिट कुंजी के लिए 256 बाइट)।
यह पेज टोकन डिकोड करता है और इससे ज़्यादा कुछ नहीं करता। यह सिग्नेचर नहीं जाँचता, क्योंकि उसके लिए कुंजी चाहिए, और यह नहीं बता सकता कि टोकन असली है, रद्द किया गया है या किसी सर्वर ने स्वीकार किया है। यह exp, nbf और iat क्लेम की, जो 1970-01-01 UTC से सेकंड गिनते हैं, आपके डिवाइस की घड़ी से तुलना करता है और उन्हें UTC तारीख़-समय के रूप में छापता है। 5 हिस्सों वाला टोकन JWE है: उसकी सामग्री एन्क्रिप्टेड होती है, इसलिए सिर्फ़ उसका हेडर दिखाया जा सकता है।
JWT से जुड़े सवाल
JWT कैसे डिकोड करें?
टोकन को बॉक्स में पेस्ट करें। पेज उसे डॉट पर बाँटता है, पहले दो हिस्सों को Base64url से बदलता है और JSON के रूप में दिखाता है। शुरू का Bearer अनदेखा किया जाता है। नमूना टोकन के लिए हेडर {"alg":"HS256","typ":"JWT"} है।
क्या यह पेज सिग्नेचर सत्यापित करता है?
नहीं। सत्यापन के लिए गोपनीय कुंजी या सार्वजनिक कुंजी चाहिए, और यह पेज कभी माँगता नहीं। जो टोकन यहाँ डिकोड हो जाए वह फिर भी जाली, बदला हुआ या रद्द हो सकता है। सिग्नेचर को अपने सर्वर कोड में किसी अनुरक्षित JWT लाइब्रेरी से सत्यापित करें।
exp, iat और nbf का क्या मतलब है?
ये 1970-01-01 UTC से सेकंडों में समय हैं (RFC 7519)। exp वह समय है जब टोकन की अवधि खत्म होती है, nbf वह समय है जिससे पहले उसे स्वीकार नहीं करना चाहिए, और iat वह जब वह जारी हुआ। नमूना टोकन में iat 1700000000 यानी 2023-11-14 22:13:20 UTC है और exp 1700003600 उससे एक घंटा बाद।
क्या यहाँ असली टोकन पेस्ट करना सुरक्षित है?
टोकन आपके ब्राउज़र टैब में रहता है और कहीं नहीं भेजा जाता। फिर भी चालू टोकन एक क्रेडेंशियल है: उसे रखने वाला कोई भी उसकी अवधि खत्म होने तक उसे इस्तेमाल कर सकता है। अपने ही टोकन पेस्ट करें, और हो सके तो अवधि खत्म हुए या टेस्ट टोकन चुनें।
मेरे टोकन में 5 हिस्से क्यों हैं?
5 हिस्सों वाला टोकन JWE है, यानी एन्क्रिप्टेड JSON Web Token (RFC 7516)। उसका पेलोड पाने वाले के लिए एन्क्रिप्ट होता है, इसलिए यह पेज सिर्फ़ हेडर और हिस्सों के आकार दिखाता है। सामग्री यहाँ पढ़ी नहीं जा सकती।
"not Base64url" या "not JSON" का क्या मतलब है?
पहले दो हिस्सों में से हर एक Base64url टेक्स्ट होना चाहिए जो JSON ऑब्जेक्ट में डिकोड हो। पेज बताता है कि कौन-सा हिस्सा विफल हुआ और क्यों: वर्णमाला से बाहर का अक्षर, UTF-8 न होने वाले बाइट, या किसी लाइन और कॉलम पर गलती वाला JSON। छोटा कटा टोकन या अतिरिक्त अक्षर आम कारण हैं।