यह क्या करता है
JSON Web Token (JWT, RFC 7519) एक छोटी, URL-सुरक्षित स्ट्रिंग है जिसके तीन हिस्से बिंदुओं से अलग होते हैं: साइनिंग एल्गोरिदम बताने वाला हेडर, क्लेम वाला पेलोड, और पहले दो हिस्सों पर सिग्नेचर। API JWT को bearer टोकन के रूप में और पहचान प्रदाता ID टोकन के रूप में इस्तेमाल करते हैं।
यह टूल JSON पेलोड से टोकन बनाकर साइन करता है। समर्थित:
- HS256, HS384, HS512: साझा सीक्रेट के साथ HMAC, टेक्स्ट या Base64 में।
- RS256, RS384, RS512 और PS256, PS384, PS512: PEM प्राइवेट कुंजी से RSA सिग्नेचर।
- ES256, ES384, ES512: EC प्राइवेट कुंजी से ECDSA सिग्नेचर।
इस्तेमाल कैसे करें
- पेलोड को JSON ऑब्जेक्ट के रूप में लिखें या उदाहरण पर क्लिक करें।
- एल्गोरिदम चुनें और इनपुट बॉक्स के ऊपर सीक्रेट लिखें या PEM प्राइवेट कुंजी पेस्ट करें।
- चाहें तो iat को अभी का समय करें, समाप्ति (exp) जोड़ें, या कुंजी ID जैसे अतिरिक्त हेडर फ़ील्ड जोड़ें।
- आउटपुट से टोकन कॉपी करें। उसे जाँचने के लिए JWT डिकोडर में पेस्ट करें।
उदाहरण
सीक्रेट your-256-bit-secret के साथ नीचे का पेलोड HS256 से साइन करने पर jwt.io का जाना-पहचाना उदाहरण टोकन बनता है:
{"sub":"1234567890","name":"John Doe","iat":1516239022}
हेडर हमेशा {"alg":"HS256","typ":"JWT"} के रूप में लिखा जाता है, उसके बाद आपके जोड़े गए फ़ील्ड; alg हमेशा चुने गए एल्गोरिदम के अनुसार रहता है।
अच्छी आदतें
exp क्लेम से टोकन को कम समय के लिए वैध रखें, और iss व aud सेट करें ताकि एक सेवा का टोकन दूसरी सेवा में दोबारा इस्तेमाल न हो सके। सर्वर पर हमेशा अनुमति वाले एल्गोरिदम की स्पष्ट सूची के साथ सिग्नेचर जाँचें और none को अस्वीकार करें। HMAC सीक्रेट लंबे और रैंडम होने चाहिए, कम से कम हैश आउटपुट जितने (HS256 के लिए 32 बाइट)।
अक्सर पूछे जाने वाले सवाल
› कौन-सा एल्गोरिदम चुनूँ?
वही जो आपका सर्वर वेरिफ़ाई करता है। HS256 साझा सीक्रेट इस्तेमाल करता है और एक ही सिस्टम के भीतर आम है। RS256 और ES256 प्राइवेट कुंजी से साइन करते हैं और कोई भी पब्लिक कुंजी से जाँच सकता है, जो कई सेवाओं द्वारा जाँचे जाने वाले टोकन के लिए ठीक है। ES256 के सिग्नेचर RS256 से काफ़ी छोटे होते हैं।
› कौन-से प्राइवेट कुंजी फ़ॉर्मैट स्वीकार होते हैं?
PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 RSA (BEGIN RSA PRIVATE KEY) और SEC1 EC (BEGIN EC PRIVATE KEY) वाली PEM कुंजियाँ। एन्क्रिप्टेड कुंजी को पहले बिना पासफ़्रेज़ के एक्सपोर्ट करें। ES256, ES384 और ES512 के लिए कुंजी क्रमशः P-256, P-384 या P-521 कर्व पर होनी चाहिए।
› क्या JWT का पेलोड गुप्त होता है?
नहीं। हेडर और पेलोड सिर्फ़ Base64URL में एन्कोड होते हैं, और टोकन रखने वाला कोई भी उन्हें पढ़ सकता है। सिग्नेचर बदलाव रोकता है, पढ़ना नहीं। JWT पेलोड में कभी पासवर्ड या दूसरे राज़ न रखें।
› क्या मेरा सीक्रेट या प्राइवेट कुंजी कहीं सेव या भेजी जाती है?
नहीं। साइनिंग आपके ब्राउज़र में Web Crypto API से होती है। सीक्रेट या कुंजी सिर्फ़ इस पेज की मेमोरी में रहती है: न सेव होती है, न एड्रेस बार में लिखी जाती है, न शेयर लिंक में जाती है। फिर भी प्रोडक्शन कुंजियाँ ऐसे वेब पेज में पेस्ट न करें जिस पर आपका नियंत्रण न हो।