JWT Decoder
JSON Web Token को डिकोड और जाँचें
JWT टोकन
JWT (JSON Web Token) क्या है?
JSON Web Token (JWT) एक कॉम्पैक्ट, URL-सुरक्षित टोकन फॉर्मेट है जिसे RFC 7519 में परिभाषित किया गया है। यह claims के एक सेट को JSON ऑब्जेक्ट के रूप में एनकोड करता है, फिर उसे साइन करता है — और वैकल्पिक रूप से एन्क्रिप्ट करता है — ताकि प्राप्तकर्ता यह सत्यापित कर सके कि डेटा में कोई छेड़छाड़ नहीं की गई है। JWT REST API, सिंगल साइन-ऑन सिस्टम और माइक्रोसर्विस ऑथराइज़ेशन में स्टेटलेस ऑथेंटिकेशन का वास्तविक मानक है।
JWT की संरचना: Header · Payload · Signature
हर JWT तीन base64url-एनकोडेड सेगमेंट से मिलकर बना होता है जो डॉट्स से अलग होते हैं। Header और Payload सादा JSON होते हैं — कोई भी इन्हें पढ़ सकता है — जबकि Signature एक क्रिप्टोग्राफिक मान होता है जिसे केवल सही key से सत्यापित किया जा सकता है।
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"alg": "HS256",
"typ": "JWT"
}{
"sub": "user123",
"name": "Alice",
"role": "admin",
"iat": 1717200000,
"exp": 1717203600
}JWT डिकोडर क्यों उपयोग करें?
कच्चे JWT यादृच्छिक टेक्स्ट की तरह दिखते हैं। यह टूल तुरंत Header और Payload को फॉर्मेटेड JSON के रूप में प्रदर्शित करता है ताकि आप एक भी लाइन कोड लिखे बिना claims की जांच कर सकें, एक्सपायरी समय देख सकें और एल्गोरिदम विकल्पों का ऑडिट कर सकें।
मानक JWT Claims संदर्भ
RFC 7519 सात पंजीकृत claim नाम परिभाषित करता है। ये अनिवार्य नहीं हैं, लेकिन इंटरऑपरेबिलिटी के लिए इनका उपयोग दृढ़ता से अनुशंसित है। आप Payload में कोई भी कस्टम claim जोड़ सकते हैं।
| Claim | विवरण | प्रकार |
|---|---|---|
| iss | जारीकर्ता — यह पहचानता है कि टोकन किसने जारी किया — जैसे आपके ऑथ सर्वर का URL या एप्लिकेशन का नाम। | string |
| sub | विषय — JWT जिस प्रिंसिपल के बारे में है उसे पहचानता है — आमतौर पर एक यूज़र ID या सर्विस अकाउंट। | string |
| aud | श्रोता — इच्छित प्राप्तकर्ताओं की पहचान करता है। प्राप्त करने वाले पक्ष को यह सत्यापित करना होगा कि यह उनके पहचानकर्ता से मेल खाता है। | string | string[] |
| exp | समाप्ति समय — Unix टाइमस्टैम्प जिसके बाद टोकन स्वीकार नहीं किया जाना चाहिए। चोरी हुए टोकन से नुकसान सीमित करने के लिए इसे हमेशा सेट करें। | number |
| nbf | इससे पहले नहीं — Unix टाइमस्टैम्प जिससे पहले टोकन स्वीकार नहीं किया जाना चाहिए। भविष्य-दिनांकित टोकन शेड्यूल करने के लिए उपयोगी। | number |
| iat | जारी किया गया — Unix टाइमस्टैम्प जब टोकन जारी किया गया था। टोकन की आयु की गणना के लिए उपयोग किया जाता है। | number |
| jti | JWT ID — टोकन के लिए एक अद्वितीय पहचानकर्ता। सर्वर-साइड पर उपयोग किए गए JTI मानों को संग्रहीत और जांचकर निरसन सक्षम करता है। | string |
JWT साइनिंग एल्गोरिदम
alg header claim घोषित करता है कि किस एल्गोरिदम ने टोकन को साइन किया। यह विकल्प सुरक्षा, प्रदर्शन और इस बात को प्रभावित करता है कि तृतीय-पक्ष सेवाएं private key के बिना टोकन सत्यापित कर सकती हैं या नहीं।
| एल्गोरिदम | परिवार | Key प्रकार | नोट्स |
|---|---|---|---|
| HS256 | HMAC | Symmetric | सबसे सामान्य। साझा सीक्रेट — जिसके पास सीक्रेट है वह साइन और वेरिफाई दोनों कर सकता है। |
| HS384 | HMAC | Symmetric | मजबूत HMAC वेरिएंट; मध्यम प्रदर्शन लागत। |
| HS512 | HMAC | Symmetric | सबसे मजबूत HMAC वेरिएंट। |
| RS256 | RSA | Asymmetric | सबसे व्यापक रूप से उपयोग किया जाने वाला असममित एल्गोरिदम (Google, Auth0, Okta)। पब्लिक key private key के बिना वेरिफाई करती है। |
| RS384 | RSA | Asymmetric | उच्च-सुरक्षा RS वेरिएंट। |
| RS512 | RSA | Asymmetric | सबसे मजबूत RS वेरिएंट। |
| ES256 | ECDSA | Asymmetric | एलिप्टिक कर्व — RSA से छोटे signatures, मोबाइल और IoT पर लोकप्रिय। |
| PS256 | RSA-PSS | Asymmetric | RSA-PSS: PKCS1v1.5-आधारित RS256 से अधिक आधुनिक और सुरक्षित। |
| none | — | — | कोई signature नहीं — गंभीर रूप से खतरनाक। प्रोडक्शन में alg: none वाले टोकन कभी स्वीकार न करें। |
सुरक्षा विचार
JWT को डिकोड करना हमेशा सुरक्षित है। उचित signature सत्यापन के बिना JWT पर भरोसा करना सुरक्षित नहीं है। जब भी आप अपने एप्लिकेशन में टोकन का उपयोग करें, इन नियमों को ध्यान में रखें।
- –डेवलपर टूल्स या इस टूल में JWT डिकोड और निरीक्षण करना
- –टोकन का जीवनकाल समझने के लिए exp, iat और nbf का उपयोग करना
- –डीबगिंग के लिए Payload claims लॉग करना (संवेदनशील व्यक्तिगत जानकारी छोड़ें)
- –टोकन कैसे साइन किया गया यह समझने के लिए alg header पढ़ना
- –सर्वर-साइड पर signature सत्यापित किए बिना Payload में claims पर भरोसा करना
- –alg: none वाले टोकन स्वीकार करना — इसका मतलब है कोई signature नहीं है
- –उच्च-सुरक्षा एप्लिकेशन में localStorage में access tokens संग्रहीत करना (httpOnly cookies पसंद करें)
- –संवेदनशील अनुमतियां ले जाने वाले टोकन के लिए exp को भविष्य में बहुत दूर सेट करना
सामान्य उपयोग के मामले
कोड में JWT डिकोड करना
Header और Payload base64url-एनकोडेड हैं — बस एन्कोडिंग को उलट दें। Base64url + को - से और / को _ से बदलता है, और = padding को छोड़ देता है। केवल Signature को सीक्रेट key की आवश्यकता होती है।
function decodeJWT(token) {
const [, payload] = token.split('.')
const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
return JSON.parse(json)
}const [, payload] = token.split('.')
const decoded = JSON.parse(
Buffer.from(payload, 'base64url').toString()
)import base64, json
def decode_jwt(token):
payload = token.split('.')[1]
padding = '=' * (-len(payload) % 4)
return json.loads(base64.urlsafe_b64decode(payload + padding))TOKEN="eyJhbGc..." echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .