एक सुरक्षित, लोकल JWT एनकोडर
यह jwt encoder डेवलपर्स को सीधे ब्राउज़र में JSON Web Tokens को तेज़ी से ड्राफ्ट, मॉडिफाई और साइन करने की सुविधा देता है। चाहे आप ऑथेंटिकेशन फ्लो बना रहे हों, API एंडपॉइंट की टेस्टिंग कर रहे हों, या किसी माइक्रोसर्विस को डीबग कर रहे हों, आप कस्टम स्क्रिप्ट लिखे बिना या अपने क्रेडेंशियल्स को थर्ड-पार्टी सर्वर पर एक्सपोज़ किए बिना तुरंत वैलिड टोकन जनरेट कर सकते हैं।
चूँकि यह टूल आपके ब्राउज़र के नेटिव Web Crypto API पर निर्भर करता है, इसलिए सभी डेटा प्रोसेसिंग और क्रिप्टोग्राफ़िक साइनिंग पूरी तरह से आपके डिवाइस पर ही होती है। आपका JSON पेलोड और सीक्रेट कीज़ कभी भी अपलोड, स्टोर या लॉग नहीं किए जाते हैं। यह लोकल-फर्स्ट अप्रोच ऑनलाइन JWT साइन करने को सुरक्षित बनाती है, यहाँ तक कि संवेदनशील डेवलपमेंट या स्टेजिंग क्रेडेंशियल्स के साथ काम करते समय भी।
JWT टोकन कैसे बनाएं
JWT टोकन बनाने के लिए, आपको तीन चीज़ों की ज़रूरत होती है: एक हेडर (जो एल्गोरिदम तय करता है), एक पेलोड (जिसमें आपका डेटा होता है), और एक सीक्रेट की (जो टोकन को सुरक्षित करती है)।
अपना एल्गोरिदम चुनकर शुरुआत करें। यह टूल एक बेहतरीन HS256 jwt generator के रूप में काम करता है, लेकिन HS384 और HS512 को भी सपोर्ट करता है। ये सिमेट्रिक HMAC एल्गोरिदम हैं, जिसका मतलब है कि टोकन को साइन करने और बाद में उसे वेरिफाई करने के लिए एक ही सीक्रेट की का इस्तेमाल किया जाता है। नंबर जितना बड़ा होगा (जैसे, 512), हैश का आकार उतना ही बड़ा होगा, जो थोड़ी लंबी टोकन स्ट्रिंग के बदले ज़्यादा मज़बूत क्रिप्टोग्राफ़िक सुरक्षा देता है।
इसके बाद, दिए गए टेक्स्ट एरिया में अपना पेलोड डिफाइन करें। पेलोड एक वैध JSON होना चाहिए। जैसे ही आप JSON को एडिट करते हैं या सीक्रेट की अपडेट करते हैं, यह टूल रियल-टाइम में सिग्नेचर को रीकैलकुलेट करता है, और अगर आपके JSON स्ट्रक्चर में कोई सिंटैक्स एरर है तो तुरंत फीडबैक देता है। एक बार आपका पेलोड और सीक्रेट सेट हो जाने के बाद, फाइनल टोकन कॉपी करने और आपके एप्लिकेशन के Authorization हेडर या कुकीज़ में इस्तेमाल करने के लिए तैयार हो जाता है।
टोकन जनरेट करने के सामान्य उपयोग
आधुनिक वेब डेवलपमेंट के लिए एक भरोसेमंद jwt generator का होना बहुत ज़रूरी है। डेवलपर्स अक्सर इस टूल का उपयोग कई तरह की टेस्टिंग और डीबगिंग के लिए करते हैं:
API एंडपॉइंट्स की टेस्टिंग: Postman या Insomnia जैसे API क्लाइंट्स के साथ काम करते समय, सुरक्षित रूट्स को एक्सेस करने के लिए अक्सर एक वैध bearer token की ज़रूरत होती है। लॉग इन करके टोकन प्राप्त करने के लिए अपनी पूरी फ्रंटएंड एप्लिकेशन को रन करने के बजाय, आप यहाँ अपनी ज़रूरत के सटीक यूज़र ID और रोल्स के साथ मैन्युअल रूप से टोकन जनरेट कर सकते हैं।
ऑथेंटिकेशन लॉजिक की डीबगिंग: अगर आपका बैकएंड टोकन रिजेक्ट कर रहा है, तो मैन्युअल रूप से टोकन जनरेट करने से समस्या को पहचानने में मदद मिलती है। आप यह चेक कर सकते हैं कि दिक्कत किसी गलत सीक्रेट की (secret key), खराब पेलोड, या साइनिंग एल्गोरिथम के मिसमैच की वजह से तो नहीं है।
एज केसेस (Edge Cases) बनाना: सिक्योरिटी के लिए यह टेस्ट करना बहुत ज़रूरी है कि आपका बैकएंड एक्सपायर्ड टोकन, मिसिंग क्लेम्स, या अनऑथराइज्ड रोल्स को कैसे हैंडल करता है। आप इन एज केसेस को बनाने के लिए यहाँ JSON पेलोड में आसानी से बदलाव कर सकते हैं और यह सुनिश्चित कर सकते हैं कि आपका सर्वर सही HTTP स्टेटस कोड के साथ रिस्पॉन्स दे।
टाइमस्टैम्प और क्लेम मैनेज करना
JSON Web Tokens में कुछ खास फ़ील्ड्स होते हैं, जिन्हें क्लेम (claims) कहा जाता है, जो टोकन की लाइफसाइकिल और यूज़र के बारे में जानकारी देते हैं। सबसे आम टाइम-बेस्ड क्लेम iat (Issued At) और exp (Expiration Time) हैं। इन दोनों क्लेम में Unix टाइमस्टैम्प का इस्तेमाल होता है, जो 1 जनवरी 1970 से अब तक बीते हुए सेकंड्स की संख्या है।
टेस्टिंग के दौरान इन टाइमस्टैम्प को मैन्युअल रूप से कैलकुलेट करना मुश्किल हो सकता है। आपके काम को तेज़ करने के लिए, इस टूल में पेलोड एडिटर के ऊपर क्विक-एक्शन बटन दिए गए हैं।
- iat = now पर क्लिक करने से
iatफ़ील्ड में तुरंत मौजूदा Unix टाइम जुड़ या अपडेट हो जाता है। - exp = +1h या exp = +24h पर क्लिक करने से भविष्य का टाइमस्टैम्प कैलकुलेट होता है और उसके अनुसार
expफ़ील्ड अपडेट हो जाता है।
इससे यह सुनिश्चित होता है कि आपके जनरेट किए गए टोकन तुरंत मान्य (valid) हों और आपके सर्वर का टाइम-वैलिडेशन लॉजिक उन्हें समय से पहले रिजेक्ट न करे।
Base64 सीक्रेट्स को हैंडल करना
जब आप ऑनलाइन JWT साइन करने की कोशिश करते हैं, तो सीक्रेट की (secret key) एन्कोडिंग से निपटना एक आम समस्या होती है। कई बैकएंड सिस्टम और ट्यूटोरियल आपके HMAC सीक्रेट के लिए एक मजबूत, रैंडम बाइट ऐरे जनरेट करने और इसे आपके एनवायरनमेंट वेरिएबल्स में Base64 स्ट्रिंग के रूप में स्टोर करने की सलाह देते हैं।
अगर आपका सर्वर टोकन को साइन या वेरिफाई करने से पहले इस Base64 स्ट्रिंग को रॉ बाइट्स (raw bytes) में डिकोड करता है, तो Base64 स्ट्रिंग को सीधे किसी स्टैंडर्ड जनरेटर में पेस्ट करने से इनवैलिड सिग्नेचर मिलेगा। जनरेटर Base64 कैरेक्टर्स को प्लेन टेक्स्ट मान लेगा, जिससे सिग्नेचर मैच नहीं होगा।
इसे हल करने के लिए, बस Secret is Base64 encoded बॉक्स को चेक करें। यह टूल HMAC hash अप्लाई करने से पहले आपकी सीक्रेट स्ट्रिंग को उसके ओरिजिनल रॉ बाइट्स में डिकोड कर देगा, जिससे यह सुनिश्चित होगा कि जनरेट हुआ सिग्नेचर आपके बैकएंड एनवायरनमेंट से पूरी तरह मैच करता है।
JWT संरचना को समझना
जब आप कोई टोकन जनरेट करते हैं, तो इसकी संरचना को आसानी से समझने के लिए आउटपुट को कलर-कोडेड (रंगों वाले) फॉर्मेट में दिखाया जाता है। एक स्टैण्डर्ड JWT तीन भागों से मिलकर बना होता है, जो डॉट (.) द्वारा अलग होते हैं:
- हेडर (लाल): इसमें टोकन के बारे में मेटाडेटा होता है, मुख्य रूप से साइनिंग एल्गोरिथम (जैसे,
{"alg":"HS256","typ":"JWT"})। यह आपके चुने गए एल्गोरिथम के आधार पर अपने आप जनरेट होता है और Base64-URL एन्कोडेड होता है। - पेलोड (नीला): आपका मुख्य JSON डेटा, यह भी Base64-URL एन्कोडेड होता है। टोकन हाथ लगने पर कोई भी इस हिस्से को आसानी से पढ़ सकता है, इसलिए आपको पेलोड में कभी भी पासवर्ड या अत्यधिक संवेदनशील डेटा नहीं रखना चाहिए।
- सिग्नेचर (हरा): एन्कोडेड हेडर और एन्कोडेड पेलोड का क्रिप्टोग्राफ़िक हैश, जिसे आपकी सीक्रेट की (secret key) का उपयोग करके साइन किया जाता है। यह इस बात की गारंटी देता है कि ट्रांसफर के दौरान टोकन के साथ कोई छेड़छाड़ नहीं की गई है।
अगर आपके पास पहले से कोई टोकन है और आप सीक्रेट की के बिना उसका कंटेंट देखना चाहते हैं, तो हेडर और पेलोड को सुरक्षित रूप से जांचने के लिए आप इसे हमारे JWT Decoder में पेस्ट कर सकते हैं।