JSON वेब टोकन - पेलोड सार्वजनिक क्यों है?


30

मैं आधार के डिकोडिंग के बाद सार्वजनिक रूप से दिखाई देने वाले JWT के दावे / पेलोड को बनाने के लिए तर्क को नहीं समझ सकता।

क्यूं कर?

ऐसा लगता है कि इसे गुप्त के साथ एन्क्रिप्ट किया जाना बहुत उपयोगी होगा।

क्या कोई समझा सकता है कि क्यों, या किस स्थिति में, इस डेटा को सार्वजनिक रखना उपयोगी है?


जब आप JWT लिखते हैं, तो आप शायद JWS से मतलब रखते हैं। क्योंकि JWE (जो कि JWT का "सबक्लास" भी है) वास्तव में इसे कंटेंट का प्रयास करता है।
एलेक्सी

जवाबों:


28

आप उन्हीं कारणों से पेलोड को एन्क्रिप्ट नहीं करने का चयन करते हैं, जो आप किसी और चीज को एन्क्रिप्ट नहीं करने के लिए चुनते हैं: लागत (हालांकि यह बहुत छोटा है) लाभ से अधिक है, और बहुत सारे डेटा को बस उस तरह से सुरक्षित करने की आवश्यकता नहीं है।

आपको ज्यादातर लोगों के खिलाफ सुरक्षा की जरूरत होती है, ताकि लोग डेटा से छेड़छाड़ कर सकें, ताकि गलत रिकॉर्ड अपडेट हो जाए, या किसी के चेकिंग अकाउंट में पैसा आ जाए, ऐसा नहीं है। JSON वेब टोकन के हस्ताक्षर को पूरा करता है, क्योंकि हेडर / पेलोड / हस्ताक्षर संयोजन के किसी भी हिस्से को बदलने से पैकेट अमान्य हो जाता है।

ध्यान दें कि आप अभी भी एसएसएल का उपयोग करके परिवहन लेयर पर पैकेट सुरक्षित कर सकते हैं।


आह, मैं देखता हूं, इसलिए अनिवार्य रूप से जेडब्ल्यूटी एक नया सीएसआरएफ टोकन है। आपकी व्याख्या के लिए धन्यवाद, इसने भ्रम को दूर कर दिया है।
ineedhelp

6
कोई JWT एक नया CSRF टोकन नहीं है। वे 2 अलग चीजें हैं।
ऐश

@ अगर किसी ऑपरेशन का विवरण JWT में संग्रहीत है और सर्वर पर मान्य है, तो क्या JWT अनिवार्य रूप से उस परिदृश्य में CSRF रोकथाम की भूमिका नहीं निभा रहा है? मैं समझता हूं कि एक वैनिला JWT का प्राथमिक उद्देश्य प्रमाणीकरण है, जो इस उत्तर से बहुत स्पष्ट है। मुझे लगता है कि मैं एक बार में अधिक डेटा जोड़ने और दो चीजों को पूरा करने की कल्पना कर रहा था।
ineedhelp

@RobertHarvey, आप JWT का गलत तरीके से उपयोग कर रहे हैं। JST JWS और JWE के लिए एक "छाता" शब्द है। JWS को प्रमाणित करना है, JWE को एन्क्रिप्ट करना है। तो "JSON वेब टोकन का उद्देश्य" प्रमाणित करना है "वास्तव में" JWS को प्रमाणित करना है "।
अलेक्सई

@Alexey: मैंने साथ में रहने के लिए अपने उत्तर में थोड़ा बदलाव किया।
रॉबर्ट हार्वे

4

RFC में शब्द हस्ताक्षर का उपयोग असममित क्रिप्टोग्राफी में एक डिजिटल हस्ताक्षर के अनुरूप है । असममित क्रिप्टोग्राफी में यदि प्रेषक किसी संदेश को अपनी निजी कुंजी के साथ एन्क्रिप्ट करता है, तो जिस किसी के पास भी संदेश है, वह प्रेषक की सार्वजनिक कुंजी के साथ इसे डिक्रिप्ट कर सकता है। इसलिए हस्ताक्षर शब्द के साथ लक्ष्य एक संदेश को गुप्त रखने के लिए नहीं है, लेकिन संदेश की अखंडता / प्रेषक को सत्यापित करने के लिए, जिसे बदल नहीं दिया गया है।

JWTs के मामले में भेजने की प्रणाली संदेश के निर्माता और उपभोक्ता दोनों हैं (नीचे चित्र देखें), और लक्ष्य यह सुनिश्चित करना है कि उपयोगकर्ता को दिए गए टोकन से छेड़छाड़ नहीं की गई (जैसे कि उन्नत विशेषाधिकार दिए गए)।

और @Robert के अनुसार, JWTs को अभी भी TLS के साथ एन्क्रिप्ट किया जाना चाहिए।

यहाँ JWTs और हस्ताक्षरों की एक अच्छी व्याख्या है, जहाँ से नीचे की छवि खट्टी है। JSON वेब टोकन (JWT) को समझने के लिए 5 आसान चरण

asdfasdf


2

रॉबर्ट हार्वे के उत्तर में जोड़ने के लिए, पेलोड को एन्क्रिप्ट करने का एक महत्वपूर्ण नुकसान है - इसका मतलब है कि सेवा के प्राप्तकर्ता को प्रमाणीकरण सर्वर (एन्क्रिप्शन कुंजी) के साथ एक गुप्त साझा करने की आवश्यकता है, यह समझने के लिए कि टोकन के वाहक को अधिकृत किया गया है या नहीं। या नहीं। इसके विपरीत कोई भी प्रमाणीकरण सर्वर द्वारा प्रकाशित केवल सार्वजनिक कुंजी का उपयोग करके एक JWT को मान्य कर सकता है।

यह ओपेनड कनेक्ट स्पेसिफिकेशन का एक महत्वपूर्ण हिस्सा है क्योंकि यह क्लाइंट एप्लिकेशन को ऑरिजनल सर्वर द्वारा जारी पहचान टोकन को मान्य करने की अनुमति देता है, इससे रिसोर्स सर्वर को तैनात करना भी आसान हो जाता है (क्योंकि उन्हें गुप्त एन्क्रिप्शन तक पहुंच के साथ तैनात करने की आवश्यकता नहीं है। कुंजी) और जारी किए गए JWT के साथ किसी भी समस्या का निदान करने का प्रयास करते समय भी मदद करता है।


आप असममित और सममित एन्क्रिप्शन तंत्र की तुलना करने की कोशिश कर रहे हैं, jwt RSA एन्क्रिप्शन का कार्यान्वयन है।
ऐनिमेट्रिक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.