> डिकोड | निरीक्षण | सत्यापन <
// JSON Web Token (JWT) को तुरंत डिकोड और निरीक्षण करें
स्थानीय प्रोसेसिंग
100% क्लाइंट-साइड JWT डिकोडिंग। आपके टोकन कभी भी आपके ब्राउज़र से बाहर नहीं जाते।
ऑटो-डिकोड
पेस्ट या टाइप करते समय JWT टोकन को स्वचालित रूप से डिकोड करें।
पूर्ण टोकन निरीक्षण
हेडर, पेलोड और सिग्नेचर देखें। एल्गोरिदम और समाप्ति की जांच करें।
// JWT डिकोडिंग के बारे में
JWT संरचना:
JSON Web Token (JWT) तीन Base64URL-एन्कोडेड भागों से मिलकर बना है जो बिंदुओं से अलग होते हैं: हेडर.पेलोड.सिग्नेचर। हेडर एल्गोरिदम और टोकन प्रकार निर्दिष्ट करता है। पेलोड में दावे (डेटा) होते हैं। सिग्नेचर टोकन की अखंडता को सत्यापित करता है।
उदाहरण:
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0In0.signature → {"alg":"HS256"} + {"sub":"1234"}
सामान्य उपयोग के मामले:
- >वेब एप्लिकेशन में प्रमाणीकरण टोकन की डीबगिंग
- >OAuth 2.0 और OpenID Connect टोकन का निरीक्षण
- >टोकन की समाप्ति और दावों का सत्यापन
- >RFC 7519 के अनुसार JWT संरचना को समझना
- >Base64URL एन्कोडिंग अखंडता की जांच
>> अक्सर पूछे जाने वाले प्रश्न
प्र: JSON Web Token (JWT) क्या है?
उ: JWT (JSON Web Token) एक खुला मानक (RFC 7519) है जो पक्षों के बीच JSON ऑब्जेक्ट के रूप में सुरक्षित रूप से जानकारी प्रसारित करने के लिए है। यह कॉम्पैक्ट, URL-सुरक्षित है और प्रमाणीकरण के लिए व्यापक रूप से उपयोग किया जाता है।
प्र: JWT के तीन भाग कौन से हैं?
उ: JWT तीन भागों से मिलकर बना है जो बिंदुओं से अलग होते हैं: हेडर (एल्गोरिदम और प्रकार), पेलोड (दावे और डेटा), और सिग्नेचर (सत्यापन हैश)। प्रत्येक भाग Base64URL-एन्कोडेड है।
प्र: क्या गुप्त कुंजी के बिना JWT को डिकोड किया जा सकता है?
उ: हाँ, JWT के हेडर और पेलोड को कोई भी डिकोड कर सकता है क्योंकि वे केवल Base64URL-एन्कोडेड (एन्क्रिप्टेड नहीं) हैं। गुप्त कुंजी केवल सिग्नेचर को सत्यापित करने के लिए आवश्यक है।
प्र: JWT और सत्र-आधारित प्रमाणीकरण में क्या अंतर है?
उ: सत्र सर्वर पर सत्र ID कुकी के साथ स्थिति संग्रहीत करते हैं। JWT स्टेटलेस हैं — टोकन में ही सभी आवश्यक जानकारी होती है।
प्र: JWT समाप्ति कैसे काम करती है?
उ: JWT पेलोड में exp दावा Unix टाइमस्टैम्प के रूप में समाप्ति समय निर्दिष्ट करता है। इस समय के बाद, टोकन को अमान्य माना जाना चाहिए।
// आम JWT हस्ताक्षर एल्गोरिदम
हेडर का alg मान तय करता है कि हस्ताक्षर कैसे बनेगा। HS* साझा सीक्रेट का उपयोग करता है; RS*, PS*, ES* और EdDSA कुंजी-जोड़ी का।
| alg | एल्गोरिदम |
|---|---|
| HS256 | HMAC + SHA-256 |
| HS512 | HMAC + SHA-512 |
| RS256 | RSA PKCS#1 v1.5 + SHA-256 |
| PS256 | RSASSA-PSS + SHA-256 |
| ES256 | ECDSA P-256 + SHA-256 |
| EdDSA | Ed25519 |
// कोड में JWT सत्यापित करें
केवल डिकोड करने से कुछ सत्यापित नहीं होता। सत्यापन करते समय अनुमत एल्गोरिदम हमेशा स्पष्ट रूप से दें।
Node.js (jsonwebtoken) jwt.verify(token, secret, { algorithms: ['HS256'] })
Python (PyJWT) jwt.decode(token, key, algorithms=["HS256"])
PHP (firebase/php-jwt) JWT::decode($token, new Key($key, 'HS256'))
Go (golang-jwt) jwt.Parse(token, keyFunc, jwt.WithValidMethods([]string{"HS256"}))
Java (jjwt) Jwts.parser().verifyWith(key).build().parseSignedClaims(token)
>> और प्रश्न
प्र: मानक क्लेम iss, sub, aud, exp, nbf, iat और jti का क्या अर्थ है?
उ: iss जारीकर्ता है, sub विषय (आमतौर पर उपयोगकर्ता ID), aud इच्छित प्राप्तकर्ता, exp समाप्ति समय, nbf वैधता शुरू होने का समय, iat जारी होने का समय और jti टोकन की अद्वितीय ID। समय Unix सेकंड में होते हैं।
प्र: क्या JWT एन्क्रिप्टेड होता है?
उ: सामान्य हस्ताक्षरित JWT (JWS) एन्क्रिप्टेड नहीं होता, केवल Base64URL में एन्कोड होता है, इसलिए कोई भी उसकी सामग्री पढ़ सकता है। हस्ताक्षर केवल छेड़छाड़ से बचाता है। इसमें संवेदनशील डेटा न रखें या एन्क्रिप्टेड JWE का उपयोग करें।
प्र: JWT का हस्ताक्षर कैसे सत्यापित करें?
उ: आपको कुंजी चाहिए: HS256 के लिए साझा सीक्रेट या RS256/ES256 के लिए सार्वजनिक कुंजी। सर्वर हेडर.पेलोड का हस्ताक्षर दोबारा गणना करके मिलान करता है। यह डिकोडर ब्राउज़र में चलता है और आपके लिए हस्ताक्षर सत्यापित नहीं करता; किसी भरोसेमंद लाइब्रेरी का उपयोग करें।
प्र: JWT में आम सुरक्षा गलतियाँ कौन-सी हैं?
उ: आम हैं: टोकन के अपने alg (खासकर none) पर भरोसा करना, कमज़ोर HS256 सीक्रेट, exp, iss और aud की जाँच न करना, पेलोड में संवेदनशील डेटा और लंबी अवधि वाले टोकन localStorage में रखना।