डेवलपर टूल · JWT डिकोडर
JWT हेडर की व्याख्या: एल्ग, टाइप, किड और अविश्वास योग्य फ़ील्ड
· यह काम किस प्रकार करता है
जेडब्ल्यूटी सुरक्षा प्रमाणीकरण
हेडर सत्यापनकर्ता को बताता है कि टोकन पर हस्ताक्षर कैसे किए गए और किस कुंजी का उपयोग करना है। यह पोस्ट प्रत्येक सामान्य हेडर फ़ील्ड के बारे में बताती है, एक सत्यापनकर्ता किस पर भरोसा कर सकता है, और किन फ़ील्ड पर टोकन से ही कभी भरोसा नहीं किया जाना चाहिए।
छोटी JSON वस्तु को कोई नहीं पढ़ता है - और यह सत्यापन निर्णयों को प्रभावित करता है
हेडर नज़रअंदाज करने के लिए काफी छोटा है, फिर भी इसके क्षेत्र अक्सर सत्यापन रूटिंग में भाग लेते हैं। इससे दृश्यता को अधिकार के साथ भ्रमित करना खतरनाक हो जाता है। ToolAcre हेडर को JSON ऑब्जेक्ट के रूप में डिकोड करता है और उसके गुण दिखाता है, लेकिन प्रत्येक बाइट टोकन धारक से आया है और अविश्वसनीय इनपुट बना हुआ है।
एक सत्यापनकर्ता हेडर मान का उपयोग केवल विश्वसनीय कॉन्फ़िगरेशन से स्थापित बाधाओं के अंदर ही कर सकता है। इसे टोकन को एक स्वीकृत एल्गोरिदम, जारीकर्ता या दूरस्थ कुंजी स्रोत का आविष्कार नहीं करने देना चाहिए। डिकोडर का कार्य पठनीय JSON प्लस चेतावनियों पर समाप्त होता है; यह कभी भी कोई कुंजी नहीं चुनता या अनुमति देने या अस्वीकार करने का निर्णय नहीं देता।
एल्ग डिस्प्ले: डिकोडर केवल इसके कार्यान्वयन में नामित एल्गोरिदम की व्याख्या करता है
`alg` उस एल्गोरिदम की घोषणा करता है जिसमें टोकन के दावों का उपयोग किया गया था। ToolAcre में HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384 के लिए व्याख्यात्मक नोट्स हैं। ES512, PS256, PS384 और PS512, साथ ही `none` के लिए एक चेतावनी। किसी भी अन्य स्ट्रिंग को समर्थित मानने के बजाय अपरिचित के रूप में प्रदर्शित किया जाता है।
यह सूची एक प्रदर्शन सुविधा है, न कि एल्गोरिदम की एक सूची जिसे ToolAcre सत्यापित कर सकता है: यह उनमें से किसी को भी सत्यापित नहीं करता है। बैकएंड को अपने अनुमत विकल्पों को स्वतंत्र रूप से पिन करना होगा और बेमेल को अस्वीकार करना होगा। `alg: RS256` को पढ़ना यह साबित नहीं कर सकता कि RSA का उपयोग किया गया था, ठीक वैसे ही जैसे `alg: none` को पढ़ने से एक अहस्ताक्षरित टोकन को सुरक्षित रूप से अधिकृत नहीं किया जा सकता है।
टाइप और सिटी - टोकन प्रकार की घोषणा, एक्सेस टोकन के लिए at+jwt प्रोफ़ाइल, और नेस्टेड JWTs
`typ` निर्माता द्वारा इच्छित मीडिया प्रकार या प्रोफ़ाइल का वर्णन करता है। ToolAcre चेतावनी देता है जब एक स्ट्रिंग मान `JWT` से भिन्न होता है; यह प्रोफ़ाइल शब्दार्थ को लागू नहीं करता है। एक `cty` फ़ील्ड नेस्टेड सामग्री का वर्णन कर सकता है, लेकिन वर्तमान डिकोडर में कोई नेस्टेड-टोकन प्रसंस्करण पथ नहीं है और वह उस फ़ील्ड की व्याख्या नहीं करता है।
स्पष्ट टाइपिंग एक सत्यापनकर्ता को विभिन्न टोकन वर्गों को अलग रखने में मदद कर सकती है जब उसकी नीति अपेक्षित मूल्यों को परिभाषित करती है। चेक अभी भी उस सत्यापनकर्ता का है। एक टोकन केवल एक पसंदीदा लेबल की घोषणा करके खुद को एक एक्सेस टोकन नहीं बना सकता है, और एक डिकोड पैनल यह निर्धारित नहीं कर सकता है कि किस एप्लिकेशन एंडपॉइंट को इसका उपभोग करना चाहिए।
किड - मुख्य पहचानकर्ता जो सत्यापनकर्ताओं को बिना डाउनटाइम के कुंजी घुमाने देता है
`kid` एक प्रमुख पहचानकर्ता है, मुख्य सामग्री नहीं और स्वामित्व का प्रमाण नहीं है। एक सेवा जो कई विश्वसनीय कुंजियों को घुमाती है, एक उम्मीदवार का पता लगाने के लिए एक प्रमाणित जारीकर्ता संदर्भ और एक प्रतिबंधित पहचानकर्ता का उपयोग कर सकती है। पहचानकर्ता को फ़ाइल पथ, क्वेरी खंड या मनमाने ढंग से URL के बजाय नियंत्रित लुकअप में इनपुट रहना चाहिए।
ToolAcre `kid` को हेडर JSON में दृश्यमान छोड़ देता है लेकिन इसका समाधान नहीं करता है। यह संयम मायने रखता है: सार्वजनिक डिकोडिंग पेज पर कोई विश्वसनीय कुंजी स्टोर उपलब्ध नहीं है। यदि 401 रोटेशन का अनुसरण करता है, तो प्रदर्शित पहचानकर्ता की तुलना सर्वर-साइड कुंजी सूची और लॉग से करें, बिना यह माने कि टोकन की सुझाई गई कुंजी वैध है।
jku, x5u, jwk और x5c - हेडर फ़ील्ड जो कुंजियों की ओर इशारा करते हैं, और क्यों एक सत्यापनकर्ता को उन्हें कभी नहीं लाना चाहिए या उन पर आँख बंद करके भरोसा नहीं करना चाहिए
`jku` और `x5u` जैसे फ़ील्ड स्थानों को नाम दे सकते हैं, जबकि `jwk` और `x5c` कुंजी-संबंधित डेटा ले जा सकते हैं। उनकी उपस्थिति उन स्थानों या मूल्यों को विश्वसनीय नहीं बनाती है। URL प्राप्त करना या एम्बेडेड सामग्री को केवल इसलिए स्वीकार करना क्योंकि एक असत्यापित हेडर ने इसे प्रदान किया था, अनुरोधकर्ता को एक सुरक्षा निर्णय सौंपता है।
एक सुरक्षित सत्यापनकर्ता टोकन के बाहर स्थापित जारीकर्ता संबंध और नेटवर्क नीति के माध्यम से कुंजी प्राप्त करता है। ToolAcre न तो हेडर URL लाता है और न ही एम्बेडेड कुंजियों से विश्वास बनाता है। समीक्षा के दौरान, इनमें से किCAक फ़ील्ड को देखना सत्यापनकर्ता कॉन्फ़िगरेशन का निरीक्षण करने का संकेत है, न कि हेडर का पालन करने का निर्देश।
आलोचना - एक सत्यापनकर्ता को एक्सटेंशन को समझना या अस्वीकार करना होगा
`crit` संकेत देता है कि विशेष एक्सटेंशन को प्राप्तकर्ता द्वारा समझने की आवश्यकता होती है। ऐसे एक्सटेंशन का समर्थन करने वाले सत्यापनकर्ता को अज्ञात महत्वपूर्ण नामों के लिए एक स्पष्ट कार्यान्वयन और अस्वीकृति पथ की आवश्यकता होती है। किसी अपरिचित महत्वपूर्ण मार्कर को अनदेखा करने से निर्माता और उपभोक्ता संरक्षित सामग्री की अलग-अलग व्याख्या कर सकते हैं।
डिकोड-केवल कार्यान्वयन `crit` को संसाधित नहीं करता है, इसलिए यह अनुकूलता का दावा किए बिना कच्ची सरणी दिखा सकता है। यह निरीक्षण और सत्यापन के बीच एक और सीमा है। यदि कोई उत्पादन टोकन महत्वपूर्ण एक्सटेंशन पर निर्भर करता है, तो पठनीय JSON से समर्थन का अनुमान लगाने के बजाय वास्तविक लाइब्रेरी और कॉन्फ़िगरेशन में व्यवहार को सत्यापित करें।
व्यावहारिक उदाहरण - एक यथार्थवादी हेडर को पढ़ना और यह तय करना कि कौन से फ़ील्ड सत्यापन की सूचना देते हैं और कौन से केवल सूचनात्मक हैं
`{"alg":"RS256","typ":"JWT","kid":"rotate-7"}` पर विचार करें. ToolAcre सभी तीन फ़ील्ड को सुंदर ढंग से प्रिंट करता है और बताता है कि RS256 सत्यापन के लिए जारीकर्ता सार्वजनिक कुंजी की आवश्यकता होती है। एक समीक्षक घोषित एल्गोरिदम और कुंजी पहचानकर्ता को नोट कर सकता है, फिर उनकी तुलना सर्वर की पिन की गई नीति और विश्वसनीय कुंजी सेट से कर सकता है।
फ़ील्ड जांच को सूचित करते हैं लेकिन स्वतंत्र रूप से कुछ भी निर्णय नहीं लेते हैं। यदि सर्वर केवल किसी अन्य एल्गोरिदम की अनुमति देता है, सही जारीकर्ता सेट में `rotate-7` नहीं ढूंढ पाता है या हस्ताक्षर को अस्वीकार कर देता है, तो पठनीय हेडर उस परिणाम को ओवरराइड नहीं करता है। समान रूप से, वैध हस्ताक्षर की पुनः गणना किए बिना हेडर टेक्स्ट को बदलना स्वीकार नहीं किया जाना चाहिए।
टेकअवे: हेडर इनपुट है, प्राधिकार नहीं - ToolAcre JWT डिकोडर हेडर दिखाता है ताकि आप इसे पढ़ सकें; सत्यापनकर्ता को स्वतंत्र रूप से निर्णय लेना होगा कि किस पर भरोसा किया जाए
JWT हेडर को इनपुट मानें, प्राधिकारी नहीं। इसके मान कॉन्फ़िगरेशन द्वारा पहले से ही अधिकृत विकल्पों में से चयन करने, संभावित रोटेशन समस्या की पहचान करने या प्रोफ़ाइल बेमेल की व्याख्या करने में मदद कर सकते हैं। वे अपने स्वयं के एल्गोरिदम, कुंजी, URL या टोकन प्रकार में विश्वास स्थापित नहीं कर सकते।
परीक्षण हेडर को पढ़ने के लिए ToolAcre का उपयोग करें और लापता `alg`, `none` या अप्रत्याशित `typ` जैसे संदिग्ध मान प्रदर्शित करें। फिर प्रत्येक परिणामी निर्णय के लिए कॉन्फ़िगर किए गए सत्यापनकर्ता के पास जाएं। डिकोडिंग प्रामाणिकता, अखंडता, प्राधिकरण या जारीकर्ता की पहचान साबित नहीं करती है, भले ही हेडर कितना भी विश्वसनीय लगे।