JWT क्या है?
JSON Web Token तीन Base64url सेगमेंट — header.payload.signature — की कॉम्पैक्ट स्ट्रिंग है जो किसी यूज़र या क्लाइंट के बारे में क्लेम (सब्जेक्ट, रोल, एक्सपायरी) और एक ऐसा सिग्नेचर ले जाती है जिसे रिसीवर सत्यापित कर सकता है। RFC 7519 में परिभाषित और साइनिंग नियम RFC 7515 व 7518 में, यह OAuth 2.0 एक्सेस टोकन और OpenID Connect ID टोकन का सामान्य फ़ॉर्मेट है। पेलोड केवल एन्कोडेड है, एन्क्रिप्टेड नहीं: टोकन रखने वाला कोई भी इसे पढ़ सकता है।
सुरक्षा नोट: डिकोड करना सत्यापित करना नहीं है। सर्वर को पिन की गई एल्गोरिद्म से सिग्नेचर जाँचना, alg=none अस्वीकार करना और exp, iss व aud सत्यापित करने चाहिए — और कहीं भी पेस्ट किया गया असली टोकन एक्सपायर होने तक एक सीक्रेट है।
गाइड पढ़ें: JWT क्या है? JSON Web Token समझें
JWT जनरेटर कैसे इस्तेमाल करें
- पेलोड JSON एडिट करें (iss, sub, aud, roles जैसे क्लेम)।
- HMAC एल्गोरिदम चुनें और वही साझा सीक्रेट डालें जो आपका API इस्तेमाल करता है।
- चाहें तो अभी से आगे की एक्सपायरी सेट करें (जैसे 60 मिनट) और iat स्टैम्प करें।
- Generate पर क्लिक करें और साइन किया हुआ टोकन अपने Authorization हेडर में कॉपी करें।
JWT जनरेटर की खूबियाँ
- हेडर और पेलोड JSON एडिट करने योग्य, साथ में एक वास्तविक नमूना
- WebCrypto से HS256, HS384 और HS512 साइनिंग — कुछ भी ब्राउज़र से बाहर नहीं जाता
- सीक्रेट UTF-8 टेक्स्ट के रूप में या Base64/Base64url एन्कोडेड बाइट के रूप में
- एक क्लिक वाले "exp from now (+minutes)" और "iat = now" हेल्पर
- छोटे सीक्रेट, गायब exp या पहले से एक्सपायर टोकन पर चेतावनी देता है
- तीनों सेगमेंट, उनके साइज़ और तुरंत इस्तेमाल लायक curl कमांड दिखाता है
JWT जनरेटर का उदाहरण
API टेस्ट के लिए टोकन साइन करना
इनपुट:
Payload: {"sub":"user_8f3a2c","aud":"api://orders","roles":["admin"]}
Algorithm: HS256 · Secret: your-256-bit-secret · exp: +60 minutesआउटपुट:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzhmM2EyYyIsImF1ZCI6ImFwaTovL29yZGVycyIsInJvbGVzIjpbImFkbWluIl0sImV4cCI6MTcwMDAwMzYwMH0.<signature>JWT जनरेटर के बारे में अक्सर पूछे जाने वाले सवाल
कौन-से एल्गोरिदम समर्थित हैं?
HS256, HS384 और HS512 — यानी HMAC परिवार, जिसे सिर्फ़ एक साझा सीक्रेट चाहिए। असममित एल्गोरिदम (RS256, ES256…) के लिए प्राइवेट की चाहिए; उसे RSA Key Generator से बनाएँ और अपनी सर्वर लाइब्रेरी से साइन करें।
अभी से आगे की एक्सपायरी कैसे सेट करूँ?
"Set exp from now" में मिनटों की संख्या डालें। टूल exp क्लेम को मौजूदा समय + उस अवधि से बदल देता है और चाहें तो iat पर भी मौजूदा समय स्टैम्प कर देता है।
सीक्रेट कितना लंबा होना चाहिए?
कम से कम हैश आउटपुट जितना: HS256 के लिए 32 बाइट, HS384 के लिए 48 और HS512 के लिए 64 (RFC 7518 §3.2)। इसे बनाने के लिए Random Secret Generator इस्तेमाल करें; सीक्रेट छोटा होने पर टूल चेतावनी देता है।
क्या यह टोकन मेरे बैकएंड के साथ काम करेगा?
हाँ, बशर्ते बैकएंड वही सीक्रेट, वही एल्गोरिदम और वैसी ही क्लेम अपेक्षाएँ (issuer, audience, expiry) इस्तेमाल करता हो। आउटपुट पूरी तरह RFC 7519 के अनुरूप है और उसी इनपुट पर jsonwebtoken, PyJWT तथा jose जैसी लाइब्रेरियों के नतीजे से मेल खाता है।
क्या मेरा सीक्रेट अपलोड होता है?
नहीं। साइनिंग आपके ब्राउज़र में crypto.subtle से होती है; सीक्रेट और टोकन कभी आपके डिवाइस से बाहर नहीं जाते।
तकनीकी नोट्स
हेडर और पेलोड कॉम्पैक्ट JSON के रूप में सीरियलाइज़ होते हैं, बिना पैडिंग के Base64url में एन्कोड होते हैं और डॉट से जोड़ दिए जाते हैं। उस साइनिंग इनपुट का HMAC crypto.subtle.sign से निकाला जाता है और तीसरे सेगमेंट के रूप में जोड़ दिया जाता है — ठीक वैसे ही जैसे RFC 7515 बताता है। हेडर की alg वैल्यू हमेशा चुने हुए एल्गोरिदम पर सेट रहती है, ताकि टोकन एकरूप बना रहे।
संदर्भ
- RFC 7519: JSON Web Token (JWT)JWT फ़ॉर्मेट — हेडर, पेलोड, सिग्नेचर — और रजिस्टर्ड क्लेम iss, sub, aud, exp, nbf, iat और jti को परिभाषित करता है।
- RFC 7515: JSON Web Signature (JWS)JWT कैसे साइन और सीरियलाइज़ होता है: प्रोटेक्टेड हेडर, साइनिंग इनपुट और कॉम्पैक्ट सीरियलाइज़ेशन।
- RFC 7518: JSON Web Algorithms (JWA)alg हेडर के पीछे की एल्गोरिद्म: HS256/384/512, RS256, ES256 और हर एक के लिए की-साइज़ की आवश्यकताएँ।