सुरक्षा और प्रमाणपत्र
JWT डिकोड और सत्यापित करने में क्या अंतर है?
JWT डिकोडिंग और सत्यापन अलग प्रश्नों के उत्तर देते हैं। डिकोडिंग टोकन की संरचना दिखाती है; सत्यापन तय करता है कि सुरक्षित सामग्री भरोसेमंद क्रिप्टोग्राफ़िक कुंजी और नीति से मेल खाती है या नहीं।
प्रकाशित
डिकोडिंग बिना कुंजी संरचना पढ़ती है
डिकोडर कॉम्पैक्ट टोकन को बाँटता, पढ़ने योग्य Base64URL सेगमेंट डिकोड करता और उनका JSON पार्स करता है। यह डीबगिंग में उपयोगी है, लेकिन हमलावर भी उतने ही पठनीय हेडर और पेलोड बना सकता है।
const [header, payload, signature] = token.split(".");सत्यापन भरोसेमंद कुंजी से अखंडता जाँचता है
सत्यापन सुरक्षित हेडर और पेलोड पर क्रिप्टोग्राफ़िक परिणाम फिर बनाता या जाँचता है। कुंजी और अनुमत एल्गोरिदम भरोसेमंद कॉन्फ़िगरेशन या सत्यापित issuer key set से आने चाहिए, मनमाने टोकन डेटा से नहीं।
verify(signature, encodedHeader + "." + encodedPayload, trustedKey);डिकोड और सत्यापन अलग प्रश्न पूछते हैं
| क्रिया | कुंजी चाहिए | प्रामाणिकता स्थापित करता है |
|---|---|---|
| डिकोड | नहीं | नहीं |
| सिग्नेचर या MAC सत्यापन | हाँ | केवल जब कुंजी और एल्गोरिदम नीति भरोसेमंद हों |
बदला हुआ टोकन भी सफलतापूर्वक डिकोड हो सकता है
पेलोड बदलकर फिर एन्कोड करने से मान्य JSON और सही रूप वाला तीन-सेगमेंट टोकन बन सकता है। पुराना सिग्नेचर सत्यापन में विफल होना चाहिए, इसलिए डिकोड किए admin या role दावे पर अकेले कभी भरोसा न करें।
सत्यापन में एल्गोरिदम और कुंजी नीति भी आती है
- केवल ऐप द्वारा अपेक्षित एल्गोरिदम स्वीकार करें।
- कुंजी भरोसेमंद issuer कॉन्फ़िगरेशन से चुनें।
- असुरक्षित alg=none टोकन अस्वीकार करें, जब तक विशेष रूप से बनाई बंद प्रणाली को उनकी स्पष्ट आवश्यकता न हो।
- कुंजी रोटेशन और kid मान सँभालें, लेकिन हमलावर द्वारा नियंत्रित कुंजी स्थान स्वीकार न करें।
मान्य सिग्नेचर आवश्यक है, पर्याप्त नहीं
क्रिप्टोग्राफ़िक सत्यापन के बाद iss, aud, exp, nbf और मौजूदा endpoint के लिए आवश्यक दावे जाँचें। दूसरी audience या समाप्त session का सही हस्ताक्षरित टोकन भी अस्वीकार होना चाहिए।
सुरक्षित JWT प्रक्रिया
- स्थानीय निरीक्षण और डीबगिंग के लिए डिकोड करें।
- ऐप backend में रखरखाव वाली JWT लाइब्रेरी से सत्यापित करें।
- अनुमत एल्गोरिदम और भरोसेमंद issuer कुंजियाँ तय रखें।
- audience, issuer और समय दावे जाँचें।
- सत्यापित और सीमित दावों से ही माँगी कार्रवाई अधिकृत करें।
उदाहरण आज़माएँ
डिकोडिंग और सत्यापन की सीमा देखें
पढ़े जा सकने वाले टोकन को लोड करके सिग्नेचर स्थिति असत्यापित रहने दें।
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFkYSBMb3ZlbGFjZSIsImFkbWluIjp0cnVlLCJpYXQiOjE3MDAwMDAwMDAsIm5iZiI6MTY5OTk5OTkwMCwiZXhwIjoyMTQ3NDgzNjQ3fQ.ZGVtby1zaWduYXR1cmUअपेक्षित परिणाम: हेडर और पेलोड पढ़े जाते हैं, लेकिन भरोसेमंद कुंजी के बिना प्रामाणिकता स्थापित नहीं होती।
सीमा देखें
सत्यापन का दावा किए बिना टोकन डिकोड करें
कृत्रिम टोकन देखकर समझें कि पढ़ने योग्य हेडर और पेलोड के साथ सिग्नेचर की स्थिति असत्यापित हो सकती है।