डेवलपर टूल · JWT डिकोडर
JWT पेलोड एन्क्रिप्टेड नहीं हैं: टोकन वाला कोई भी व्यक्ति उन्हें पढ़ सकता है
· यह क्यों मायने रखती है
जेडब्ल्यूटी गोपनीयता सुरक्षा
Base64url स्क्रैम्बलिंग जैसा दिखता है लेकिन यह एक प्रतिवर्ती एन्कोडिंग है। यह पोस्ट दिखाती है कि हस्ताक्षरित टोकन के दावे कितने पठनीय हैं, उनमें क्या है, और आपको इसके बजाय JWE की आवश्यकता कब होती है।
यह एन्क्रिप्टेड दिखता है - गलतफहमी जो व्यक्तिगत डेटा को टोकन में डाल देती है
लंबे Base64url खंड बिखरे हुए दिखते हैं, जो टीमों को उन्हें छिपा हुआ डेटा मानने के लिए प्रेरित करता है। दृश्य प्रभाव भ्रामक है. हस्ताक्षरित JWT रखने वाला कोई भी व्यक्ति सार्वजनिक एन्कोडिंग को उलट सकता है और हस्ताक्षर या सत्यापन कुंजी के बिना JSON पेलोड को पढ़ सकता है।
ToolAcre हेडर और पेलोड को स्थानीय रूप से डिकोड करके उस संपत्ति को प्रदर्शित करता है। यह एन्क्रिप्शन को नहीं तोड़ता क्योंकि सामान्य JWS पेलोड एन्क्रिप्टेड नहीं होते हैं। निरीक्षण में आसानी से टोकन डिज़ाइन को आकार देना चाहिए: केवल उस जानकारी को एन्कोड करें जिसे प्रत्येक वैध धारक और प्रत्येक आकस्मिक प्राप्तकर्ता देख सके।
हस्ताक्षरित, सीलबंद नहीं: एक वैध JWS अखंडता की रक्षा कर सकता है, पेलोड गोपनीयता की नहीं
एक वैध हस्ताक्षर या MAC एक उचित रूप से कॉन्फ़िगर किए गए सत्यापनकर्ता को परिवर्तनों का पता लगाने और टोकन को विश्वसनीय कुंजी सामग्री से जोड़ने की सुविधा दे सकता है। यह सत्यापनकर्ता की नीति के भीतर सत्यनिष्ठा और मूल साक्ष्य है। यह संरक्षित सामग्री को क्लाइंट, प्रॉक्सी, लॉगर या कॉम्पैक्ट स्ट्रिंग प्राप्त करने वाले किसी अन्य व्यक्ति से नहीं छिपाता है।
डिकोडर उस अखंडता को भी स्थापित नहीं कर सकता क्योंकि यह कभी सत्यापित नहीं करता है। यह दिखाता है कि टोकन अपने बारे में क्या कहता है और हस्ताक्षर बाइट्स को असत्यापित के रूप में रिपोर्ट करता है। यह अंतर दो विपरीत गलतियों से बचाता है: यह मानना कि पढ़ने योग्य का अर्थ जाली है, और यह मानना कि हस्ताक्षरित का अर्थ गोपनीय है।
एक डिकोडर क्या दिखाता है - प्रत्येक दावा, सादे JSON में, बिना किसी कुंजी की आवश्यकता के
हेडर और पेलोड के लिए, ToolAcre Base64url का अनुवाद करता है, पैडिंग पुनर्स्थापित करता है, बाइट्स को UTF-8 के रूप में पुनर्प्राप्त करता है और JSON ऑब्जेक्ट को पार्स करता है। कोई रहस्य भाग नहीं लेता. दावा तालिका तब स्ट्रिंग मानों को सीधे और संरचित मानों को JSON टेक्स्ट के रूप में दिखाती है, जिसमें `sub`, `aud` और `exp` जैसे पंजीकृत नामों का विवरण होता है।
वह आउटपुट एक पारदर्शिता सहायता है, सत्य दैवज्ञ नहीं। एक मनगढ़ंत टोकन उसी विषय और भूमिका को वैध के रूप में प्रदर्शित कर सकता है। किसी दावे को पढ़ने के लिए किसी कुंजी की आवश्यकता नहीं होती; यह मानते हुए कि उपभोक्ता सेवा में सफल सत्यापन के साथ-साथ जारीकर्ता, दर्शक, समय और आवेदन की जांच की आवश्यकता होती है।
जहां टोकन लीक होते हैं - लॉग, URL, रेफरर हेडर, ब्राउज़र इतिहास और तृतीय-पक्ष स्क्रिप्ट
टोकन एप्लिकेशन लॉग, कॉपी किए गए समर्थन संदेशों, URL, रेफरर प्रचार, ब्राउज़र इतिहास, स्क्रीनशॉट और स्क्रिप्ट के माध्यम से लीक हो सकते हैं जो फ़ील्ड तक पहुंच सकते हैं। सटीक पथ सिस्टम पर निर्भर करते हैं, लेकिन पेलोड की पठनीयता का मतलब है कि एक समाप्त या अनुपयोगी टोकन अभी भी व्यक्तिगत या परिचालन जानकारी का खुलासा कर सकता है।
कॉम्पैक्ट क्रेडेंशियल्स को URL क्वेरी स्ट्रिंग्स और रूटीन लॉग से बाहर रखें। डायग्नोस्टिक्स साझा करने से पहले उन्हें दोबारा संपादित करें। एक हस्ताक्षर दावों को साफ़ नहीं करता है, और परिवहन एन्क्रिप्शन केवल अंतिम बिंदुओं के बीच यात्रा करते समय डेटा की सुरक्षा करता है; अधिकृत समापन बिंदु और आकस्मिक भंडारण अभी भी सादा पाठ टोकन वर्ण देख सकते हैं।
पेलोड में क्या होता है - पहचानकर्ता और प्राधिकरण डेटा, कभी भी ऐसे रहस्य या डेटा नहीं जिन्हें धारक को नहीं देखना चाहिए
पेलोड को आमतौर पर पहचानकर्ताओं और प्राधिकरण संदर्भ की आवश्यकता होती है ताकि प्राप्तकर्ता सत्यापन के बाद निर्णय ले सकें। उन्हें पासवर्ड, निजी कुंजी या जानकारी नहीं रखनी चाहिए जिसे टोकन धारक को पढ़ने से रोका जाना चाहिए। व्यक्तिगत डेटा को न्यूनतम करें और प्रोफ़ाइल फ़ील्ड के सुविधाजनक दोहराव से बचें जिसकी किसी उपभोक्ता सेवा को आवश्यकता नहीं है।
भूमिकाएँ और कार्यक्षेत्र केवल इसलिए गुप्त नहीं हैं क्योंकि वे एन्कोडेड हैं, बल्कि सत्यापित होने तक वे अभी भी अविश्वसनीय हैं। दावा सेट को कम से कम प्रकटीकरण के साथ-साथ कम से कम विशेषाधिकार के आधार पर डिज़ाइन करें। यदि किसी उपभोक्ता को अपना दस्तावेज़ीकृत कार्य करने के लिए किसी फ़ील्ड की आवश्यकता नहीं है, तो उस फ़ील्ड को छोड़ देने से प्रत्येक रिसाव परिणाम कम हो जाता है।
कारगर उदाहरण - एक नमूना टोकन को डिकोड करना और एक दर्शक जो सीखेगा उसे सूचीबद्ध करना
`sub`, `email`, `tenant`, `roles`, `iat` और `exp` युक्त सिंथेटिक पेलोड को डिकोड करें। एक दर्शक बिना किसी कुंजी के नामित खाता पहचानकर्ता, पता, संगठन संदर्भ, घोषित अनुमतियां और समय सीखता है। क्या वे दावे वास्तविक हैं यह एक अलग प्रश्न है; उनका पाठ पहले ही प्रकट किया जा चुका है।
केवल समाप्त हो चुकी या परीक्षण सामग्री का उपयोग करके, आपके जारीकर्ता द्वारा उत्पादित प्रत्येक टोकन प्रोफ़ाइल के साथ ऑडिट दोहराएं। प्रत्येक क्षेत्र और उसके उपभोक्ता को रिकॉर्ड करें। ToolAcre दृश्य सामग्री की गणना करने में मदद कर सकता है, लेकिन यह आपके संगठन के लिए वैध प्रसंस्करण, संवेदनशीलता या अवधारण नियम तय नहीं कर सकता है।
एन्क्रिप्टेड कॉम्पैक्ट टोकन में पांच भाग होते हैं, जिन्हें यह JWS डिकोडर डिक्रिप्ट करने के बजाय पहचानता है
जब दावों को धारक या मध्यस्थों से गोपनीय रखा जाना चाहिए, तो एक एन्क्रिप्टेड डिज़ाइन की आवश्यकता हो सकती है। कॉम्पैक्ट JWE के पांच भाग हैं और यह प्राप्तकर्ता डिक्रिप्शन कुंजियों का उपयोग करता है। ToolAcre पांच खंडों को एन्क्रिप्टेड इनपुट के रूप में पहचानता है और बताता है कि यह बिना कुंजी के सामग्री को प्रकट नहीं कर सकता है।
एन्क्रिप्शन इस डिकोडर से परे कुंजी वितरण, एल्गोरिदम नीति और परिचालन विफलता मोड का परिचय देता है। यह सत्यनिष्ठा और प्राधिकरण जांच की आवश्यकता को भी दूर नहीं करता है। इसे पेलोड के कॉस्मेटिक अपग्रेड के बजाय ख़तरे वाले मॉडल से चुनें, जिसमें कम डेटा होना चाहिए।
टेकअवे: मान लें कि पेलोड सार्वजनिक है - ToolAcre JWT डिकोडर में अपने स्वयं के टोकन में से एक को डिकोड करें और ऑडिट करें कि यह क्या उजागर करता है
मान लें कि एक सामान्य JWT पेलोड जहां भी टोकन यात्रा करता है, पढ़ने योग्य है। दावा एक्सपोज़र का ऑडिट करने के लिए ToolAcre के डिकोड-ओनली व्यू का उपयोग करें, न कि यह साबित करने के लिए कि मान किसने जारी किए। रहस्यों और अनावश्यक व्यक्तिगत क्षेत्रों को अस्पष्ट करने के लिए Base64url पर निर्भर रहने के बजाय उन्हें हटा दें।
यदि गोपनीयता वास्तव में आवश्यक है, तो एक ऐसे तंत्र का उपयोग करें जिसके दस्तावेजी सुरक्षा गुणों में यह शामिल हो और तदनुसार कुंजियों का प्रबंधन करें। चाहे हस्ताक्षरित हो या एन्क्रिप्टेड, विश्वास अभी भी कॉन्फ़िगर किए गए क्रिप्टोग्राफ़िक सत्यापन और नीति से आता है, इस तथ्य से कभी नहीं कि एक डिकोडर संरचित आउटपुट प्रदर्शित करता है।