इसका इस्तेमाल कैसे करें
- टोकन को JWT में चिपकाएँ। उसके तीन भाग बिंदुओं से अलग होते हैं।
- साइनिंग एल्गोरिदम पढ़ें, ताकि देखें कि टोकन खुद को किस तरह साइन किया हुआ बताता है।
- एक्सपायरी जाँचें। हरा मतलब है कि आपके डिवाइस के समय पर टोकन अब भी वैध है।
- क्लेम और पेलोड पढ़ें, ताकि पता चले कि टोकन किसके लिए है और उसमें क्या है।
JWT में क्या होता है
JSON Web Token तीन भागों से बनता है जो बिंदुओं से अलग होते हैं। पहले दो JSON ऑब्जेक्ट हैं जो base64url में लिखे हैं: हेडर बताता है कि टोकन कैसे साइन हुआ, और पेलोड में क्लेम होते हैं, यानी ऐसे कथन जैसे टोकन किसके लिए है और कब खत्म होता है। तीसरा भाग सिग्नेचर है।
RFC 7519 सात रजिस्टर्ड क्लेम नाम परिभाषित करता है: iss, sub, aud, exp, nbf, iat और jti। तालिका हर एक को समझाती है, और तीन समय वाले क्लेम हिंदी में तारीख के रूप में भी दिखाए जाते हैं।
डिकोड करना जाँचना नहीं है
यह पेज टोकन सिर्फ डिकोड करता है। वह सिग्नेचर की जाँच नहीं करता, क्योंकि उसके लिए वह कुंजी चाहिए जिससे टोकन साइन हुआ था, और जाँचने वाली कुंजी गुप्त होती है। डिकोड किया टोकन फिर भी जाली हो सकता है, इसलिए सिर्फ इसलिए कि कोई क्लेम यहाँ पढ़ा जा सकता है, उस पर भरोसा न करें।
टोकन जाँचने के लिए आपके सर्वर या लाइब्रेरी को सही कुंजी और अपेक्षित एल्गोरिदम से सिग्नेचर जाँचना होगा, और गलत सिग्नेचर वाला टोकन ठुकराना होगा।
एक्सपायरी कैसे पढ़ी जाती है
exp क्लेम 1 जनवरी 1970 की 00:00 UTC से गिनी गई सेकंड की संख्या है। RFC 7519 का खंड 4.1.4 कहता है कि टोकन उस क्षण पर या उसके बाद स्वीकार नहीं होना चाहिए, इसलिए ठीक उसी समय वह पहले से खत्म माना जाता है।
जिस टोकन में exp क्लेम नहीं है, वह कभी खत्म नहीं होता। पेज यह लाल रंग में दिखाता है, क्योंकि जो टोकन कभी खत्म नहीं होता, वह जोखिम है जिसे जानना जरूरी है।
उदाहरण: RFC 7519 का नमूना टोकन
RFC 7519 खंड 3.1 के उदाहरण में हेडर का alg HS256 है, और पेलोड में iss joe, exp 1300819380 और एक कस्टम क्लेम है। exp का मान 22 मार्च 2011 को 18:43 UTC है, इसलिए पेज टोकन को खत्म हुआ दिखाता है। सिग्नेचर की जाँच नहीं होती, इसलिए परिणाम किसी भी सिग्नेचर के लिए वही रहता है।
| क्लेम | मान | मतलब |
|---|---|---|
| iss | joe | Issuer: टोकन किसने बनाया |
| exp | 1300819380 (22 मार्च 2011, 18:43 UTC) | समाप्ति का समय |
| http://example.com/is_root | true | एक कस्टम क्लेम |
अक्सर पूछे जाने वाले सवाल
क्या मेरा टोकन किसी सर्वर को भेजा जाता है?
नहीं। टोकन आपके ब्राउज़र में डिकोड होता है, और पेज उसे न सहेजता है न भेजता है। आप यह पेज लोड होने के बाद इंटरनेट बंद करके टोकन डिकोड करके जाँच सकते हैं।
क्या यह पेज जाँचता है कि टोकन असली है?
नहीं। वह सिर्फ हेडर और क्लेम पढ़ता है। सिग्नेचर जाँचने के लिए वह कुंजी चाहिए जिससे टोकन साइन हुआ था, और यह पेज वह कभी नहीं माँगता। यह जाँच आपके एप्लिकेशन को करनी होगी।
जब मेरा एप्लिकेशन टोकन अब भी स्वीकार करता है, तो पेज यह क्यों कहता है कि टोकन खत्म हो गया?
आपका एप्लिकेशन ग्रेस पीरियड दे सकता है, या वह एक्सपायरी अपनी घड़ी से जाँच सकता है। पेज exp की तुलना आपके डिवाइस के समय से करता है, इसलिए गलत डिवाइस घड़ी से भी परिणाम बदल सकता है।
algorithm none का क्या मतलब है?
हेडर कहता है कि टोकन में कोई सिग्नेचर नहीं है। ऐसा टोकन कोई भी लिख सकता है, इसलिए सेवा को उसे किसी भी जरूरी काम के लिए स्वीकार नहीं करना चाहिए। पेज इसे नोट के साथ चिह्नित करता है।
एक तारीख मेरी उम्मीद से अलग समय क्यों दिखाती है?
तारीख आपकी भाषा और समय क्षेत्र में दिखती है, और अंत में समय क्षेत्र का नाम होता है। उसके पहले की संख्या टोकन में सहेजा मान है: UTC में 1970 से गिनी गई सेकंड।
क्या यह पेज एन्क्रिप्टेड टोकन पढ़ सकता है?
नहीं। एन्क्रिप्टेड टोकन के पाँच भाग होते हैं, और कुंजी के बिना उसकी सामग्री नहीं पढ़ी जा सकती। यह पेज सिर्फ साइन किए टोकन पढ़ता है, जिनमें तीन भाग होते हैं।
स्रोत
- RFC 7519: JSON Web Token (JWT) (अंग्रेजी में)
- RFC 7518: JSON Web Algorithms, the alg values in section 3.1 (अंग्रेजी में)
- RFC 4648: base64url encoding in section 5 (अंग्रेजी में)
आँकड़े और टेक्स्ट आखिरी बार मंगलवार, 10 नवंबर 2026 को जाँचे गए।