![translation](https://cdn.durumis.com/common/trans.png)
यह एक AI अनुवादित पोस्ट है।
भाषा चुनें
durumis AI द्वारा संक्षेपित पाठ
- JSON Web Token (JWT) एक एन्क्रिप्टेड टोकन है जो जानकारी को सुरक्षित रूप से भेजने के लिए उपयोग किया जाता है।
- JWT हेडर, पेलोड और सिग्नेचर से बना होता है, और सिग्नेचर डेटा की अखंडता की गारंटी देता है।
- JWT को अलग से स्थिति जानकारी का प्रबंधन करने की आवश्यकता नहीं होती है, जिससे वितरित वातावरण में स्केलेबिलिटी बढ़ती है।
JWT क्या है?
JSON वेब टोकन (JWT) JSON ऑब्जेक्ट के माध्यम से जानकारी को सुरक्षित रूप से प्रसारित करने की एक विधि है, जो एक खुला मानक (RFC 7519) है। जैसा कि नाम से पता चलता है, यह आवश्यक जानकारी को टोकन में रखता है और इसे एन्क्रिप्ट करके उपयोग करता है।
JWT को एक हस्ताक्षरित टोकन (हस्ताक्षरित टोकन) के रूप में वर्णित किया गया है। सार्वजनिक/निजी कुंजी जोड़ी का उपयोग करके हस्ताक्षर करते समय, यह हस्ताक्षर केवल उस पार्टी द्वारा किया जा सकता है जिसके पास निजी कुंजी है। यह सुनिश्चित करता है कि जो कुंजी धारण करता है, वह यह सत्यापित कर सकता है कि टोकन वैध है या नहीं।
JWT संरचना
JWT को हेडर (हेडर), पेलोड (पेलोड) और सिग्नेचर (हस्ताक्षर) में विभाजित किया गया है।
प्रत्येक भाग Base64 एन्कोडेड है और एक अवधि (.) द्वारा अलग किया गया है।
हेडर
{
"alg": "HS256",
"typ": "JWT"
हेडर में दो मुख्य जानकारी होती है। टोकन का प्रकार (typ) और उपयोग किया गया हस्ताक्षर एल्गोरिथम (alg)। हस्ताक्षर एल्गोरिथम का उपयोग हस्ताक्षर उत्पन्न करने और सत्यापित करने के लिए किया जाता है।
typ को "JWT" के रूप में निर्दिष्ट किया गया है, और alg को HMAC, SHA256 आदि लिखा गया है। उपरोक्त उदाहरण के अनुसार, निजी कुंजी का उपयोग करके HS256 एल्गोरिथम का उपयोग किया जाता है।
पेलोड
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
पेलोड में टोकन में पारित किए जाने वाले दावे शामिल हैं। उपयोगकर्ता पहचान जानकारी या टोकन के गुणों को कुंजी-मूल्य जोड़ी के रूप में संग्रहीत किया जाता है। दूसरे शब्दों में, आप जो चाहें डाल सकते हैं!
मानक विनिर्देश में, कुंजी का नाम संक्षिप्त रूप से 3 अक्षरों में परिभाषित किया गया है।
पंजीकृत दावे इस प्रकार हैं।
- iss (Issuer) : टोकन जारीकर्ता (टोकन जारीकर्ता की अद्वितीय पहचान जानकारी शामिल है)
- sub (Subject) : टोकन जिस इकाई के लिए है
- aud (Audience) : टोकन प्राप्तकर्ता
- exp (Expiration Time) : टोकन समाप्ति समय (इस समय के बाद, यह अब मान्य नहीं है)
- nbf (Not Before) : टोकन सक्रियण तिथि (इस समय से पहले, टोकन का उपयोग नहीं किया जा सकता है)
- iat (Issued At) : टोकन जारी करने का समय
- jti (JWT Id) : JWT टोकन पहचानकर्ता (जब कई जारीकर्ता होते हैं, तो यह मान उन्हें अलग करने के लिए उपयोग किया जाता है)
यदि आप अन्य आवश्यक मानों को शामिल करना चाहते हैं, तो आप उन्हें जोड़ सकते हैं।
हालांकि, पेलोड एन्क्रिप्टेड नहीं है, लेकिन यह एक हस्ताक्षरित मान है, इसलिए इसमें संवेदनशील जानकारी शामिल नहीं है।
डिकोडिंग करने पर, हर कोई इसे देख सकता है।jwt.io आप इसे वेबसाइट पर तुरंत देख सकते हैं।
हस्ताक्षर
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
your-256-bit-secret
हेडर और पेलोड को बेस64 एन्कोड किया गया है, एक अवधि (.) द्वारा अलग किया गया है, और फिर your-256-bit-secret सर्वर द्वारा उपयोग की जाने वाली निजी कुंजी का उपयोग करके हस्ताक्षरित किया गया है।
इसलिए, केवल टोकन जारी करने वाले सर्वर ही निजी कुंजी का उपयोग करके हस्ताक्षर (हस्ताक्षर) को डिक्रिप्ट कर सकते हैं।
डिक्रिप्शन पर विचार करते समय, निजी कुंजी का उपयोग करके हस्ताक्षर को डिक्रिप्ट करें, और फिर जांचें कि क्या base64UrlEncode(header) JWT के हेडर मान से मेल खाता है, और क्या base64UrlEncode(payload) मेल खाता है।
हेडर और पेलोड को छोड़कर, हस्ताक्षर को छोड़कर, केवल एन्कोड किया जाता है, इसलिए आप सामग्री में जानकारी देख सकते हैं, लेकिन जानकारी की अखंडता और सुरक्षा हस्ताक्षर द्वारा बनाए रखी जाती है।
JWT में स्वयं सभी आवश्यक जानकारी होती है, इसलिए यह स्व-निहित है, और राज्यहीन सेशन की कमियों को दूर करने के लिए डिज़ाइन किया गया है, JWT को अलग स्टोरेज की आवश्यकता नहीं है।
सर्वर को सेशन बनाए रखने की आवश्यकता नहीं है, इसलिए यह राज्यहीन है, जिससे वितरित सिस्टम और माइक्रोसर्विस आर्किटेक्चर में स्केलेबिलिटी में सुधार होता है।
हस्ताक्षर, डिजिटल हस्ताक्षर द्वारा संरक्षित, डेटा की अखंडता सुनिश्चित करता है।