JSON Web Tokens डिकोड करें
JSON Web Token (JWT) एक कॉम्पैक्ट स्ट्रिंग है जिसका उपयोग सिस्टम के बीच पहचान और परमिशन की जानकारी पास करने के लिए किया जाता है — अक्सर लॉग इन करने के बाद Authorization: Bearer हेडर के रूप में। यह रैंडम टेक्स्ट जैसा दिखता है, लेकिन इसमें तीन Base64URL-एन्कोडेड भाग होते हैं: एक हेडर, क्लेम्स का एक पेलोड, और एक सिग्नेचर। यह JWT डिकोडर टोकन को विभाजित करता है, पहले दो भागों को पढ़ने योग्य JSON में डिकोड करता है और महत्वपूर्ण क्लेम्स को समझाता है। डिकोडिंग और वेरिफिकेशन आपके डिवाइस पर ही (locally) होते हैं, इसलिए आपका टोकन कभी भी कहीं और नहीं भेजा जाता।
फीचर्स
- हेडर और पेलोड डिकोड और प्रिटी-प्रिंट किए गए, जिनमें से प्रत्येक के साथ एक कॉपी बटन है।
- टाइम क्लेम्स की व्याख्या:
iat,nbf,expऔरauth_timeको इपोक (epoch) सेकंड से आपके टाइम ज़ोन की तारीखों में बदला गया है। - एक्सपायरी चेक जो आपको एक नज़र में बताता है कि टोकन एक्सपायर हो गया है या अभी तक एक्टिव नहीं हुआ है।
- आपके ब्राउज़र के Web Crypto API का उपयोग करके HS256, HS384 और HS512 के लिए HMAC सिग्नेचर वेरिफिकेशन।
- पेज लोड होने के बाद ऑफ़लाइन काम करता है; कोई भी डेटा कहीं नहीं भेजा जाता।
इसका उपयोग कब करें
ऑथेंटिकेशन डिबग करना। जब कोई रिक्वेस्ट 401 Unauthorized के साथ फेल हो जाती है, तो यह जांचने के लिए टोकन को डिकोड करें कि क्या यह एक्सपायर हो गया है, सही ऑडियंस (aud) के लिए जारी किया गया था, या इसमें अपेक्षित रोल्स और स्कोप्स (roles and scopes) मौजूद हैं।
API बनाना और टेस्ट करना। लाइव करने से पहले वेरिफाई करें कि आपका सर्वर टोकन में सही एक्सपायरी टाइम के साथ वही क्लेम्स डाल रहा है जो आप चाहते थे।
OAuth और OpenID Connect कैसे काम करते हैं, यह सीखना। आइडेंटिटी प्रोवाइडर्स के ID टोकन और एक्सेस टोकन अक्सर JWT होते हैं। किसी टेस्ट टोकन को डिकोड करने से पता चलता है कि प्रोवाइडर किसी यूज़र के बारे में क्या जानकारी शेयर करता है।
JWT की संरचना
header.payload.signature
- Header — टोकन का प्रकार और साइनिंग एल्गोरिदम, उदाहरण के लिए
{"alg":"HS256","typ":"JWT"}। - Payload — क्लेम्स। रजिस्टर्ड क्लेम्स में
iss(इश्यूअर),sub(सब्जेक्ट, आमतौर पर यूज़र ID),aud(ऑडियंस),exp,nbf,iatऔरjti(टोकन ID) शामिल होते हैं। ऐप्स इसमेंnameयाroleजैसे कस्टम क्लेम्स जोड़ते हैं। - Signature — इसे
header.payloadको किसी सीक्रेट (HMAC) या प्राइवेट की (RSA, ECDSA, EdDSA) के साथ साइन करके बनाया जाता है। यदि कोई हेडर या पेलोड का एक भी कैरेक्टर बदल देता है, तो सिग्नेचर मैच नहीं करता।
चूंकि पेलोड केवल एन्कोड किया गया होता है, इसलिए JWT में कभी भी पासवर्ड जैसे सीक्रेट्स न डालें। अन्य Base64 डेटा को डिकोड करने के लिए, Base64 टूल का उपयोग करें; किसी भी टाइमस्टैम्प की जांच करने के लिए, Unix Timestamp Converter का उपयोग करें।