डेवलपर टूल · JWT डिकोडर
RFC 8725 व्याख्या: JWT सत्यापनकर्ताओं के लिए सर्वोत्तम वर्तमान प्रथाएँ
· पेजभूमि
जेडब्ल्यूटी सुरक्षा प्रमाणीकरण
IETF ने ज्ञात JWT नुकसानों को एक सर्वोत्तम-वर्तमान-अभ्यास दस्तावेज़ में एकत्रित किया। यह पोस्ट अपनी अनुशंसाओं के माध्यम से चलती है और प्रत्येक को उस घटना के वर्ग से जोड़ती है जिसे वह रोकती है।
बार-बार होने वाली JWT विफलताएं एक सत्यापनकर्ता चेकलिस्ट को प्रेरित करती हैं; रिपॉजिटरी स्रोत प्रकाशन इतिहास स्थापित नहीं करते हैं
लचीले टोकन प्रारूप उन संयोजनों की अनुमति देते हैं जिन्हें एक सत्यापनकर्ता को रोकना होगा। बार-बार की जाने वाली गलतियों में एल्गोरिदम लेबल पर भरोसा करना, गलत जारीकर्ता या दर्शकों के तहत टोकन स्वीकार करना और हमलावर द्वारा चयनित प्रमुख सामग्री का पालन करना शामिल है। एक चेकलिस्ट उन व्यापक जोखिमों को वास्तविक स्वीकृति सीमा पर अस्वीकृति परीक्षणों में परिवर्तित करती है।
रूपरेखा किसी विशेष वर्ष के प्रकाशन इतिहास का श्रेय देती है, लेकिन भंडार स्रोत उस इतिहास को सत्यापित नहीं करते हैं, इसलिए यह खंड इसे छोड़ देता है। कार्रवाई योग्य भेद स्थानीय रूप से स्थापित किया गया है: ToolAcre केवल डिकोड करता है, जबकि प्रत्येक सर्वोत्तम-अभ्यास निर्णय एक कॉन्फ़िगर सत्यापनकर्ता का होता है।
एल्गोरिदम को पिन करें और किसी को अस्वीकार न करें - अनुशंसाएँ जो alg:none और मुख्य भ्रम को संबोधित करती हैं
हेडर से स्वतंत्र रूप से अनुमत एल्गोरिदम को पिन करें और हस्ताक्षर की आवश्यकता वाले प्रवाह में अहस्ताक्षरित इनपुट को अस्वीकार करें। प्रत्येक स्वीकृत एल्गोरिदम परिवार को सही कुंजी प्रकार से बांधें। किसी टोकन को सत्यापनकर्ता को असममित जाँच से HMAC पर स्विच करने न दें या `none` से जाँच को अक्षम न करने दें।
ToolAcre `none` को ध्वजांकित करता है और मान्यता प्राप्त लेबलों की व्याख्या करता है, लेकिन वे चेतावनियाँ कुछ भी लागू नहीं करती हैं। बैकएंड के विरुद्ध नकारात्मक परीक्षणों के साथ वास्तविक नीति साबित करें: अप्रत्याशित एल्गोरिदम, खाली हस्ताक्षर और गलत कुंजी प्रकार विफल होने चाहिए, भले ही उनके पहले दो खंड डिकोडेबल रहें।
दर्शकों और जारीकर्ता को मान्य करें - क्रॉस-सर्विस रीप्ले के विरुद्ध सिफ़ारिशें
विश्वसनीय कुंजी कॉन्फ़िगरेशन के तहत जारीकर्ता को प्रमाणित करें, फिर इच्छित दर्शकों की उपभोक्ता सेवा से तुलना करें। प्रासंगिक दावे की जाँच के बिना एक वैध हस्ताक्षर अभी भी गलत जगह पर एक टोकन को अधिकृत कर सकता है। कॉपी की गई जारीकर्ता स्ट्रिंग अपने आप में कुंजी बाइंडिंग नहीं है।
डिकोडर अपेक्षित कॉन्फ़िगरेशन को जाने बिना `iss` और `aud` मान दिखाता है। उस दृश्यता का उपयोग परीक्षण मामलों की पहचान करने के लिए करें, निर्णय देने के लिए नहीं। स्वीकृति परीक्षणों में गलत जारीकर्ता, गलत दर्शकों और हस्ताक्षर विफलता को अलग करना चाहिए ताकि परिचालन लॉग उपयोगी बने रहें।
टोकन प्रतिस्थापन के विरुद्ध बचाव के रूप में स्पष्ट टाइपिंग - टाइप हेडर का उपयोग करें
स्पष्ट टोकन टाइपिंग उन प्रोफाइलों को अलग कर सकती है जो अन्यथा समान दावा आकृतियों का पुन: उपयोग करते हैं। सत्यापनकर्ता को पता होना चाहिए कि वह किसी विशेष समापन बिंदु के लिए किस प्रकार की अपेक्षा करता है और प्रत्येक हस्ताक्षरित JWT को विनिमेय मानने के बजाय असंगत प्रोफाइल को अस्वीकार कर देना चाहिए।
`typ` हेडर सत्यापन तक अभी भी अविश्वसनीय है, और ToolAcre केवल तभी चेतावनी देता है जब इसकी स्ट्रिंग `JWT` से भिन्न होती है। यह एक्सेस-टोकन प्रोफाइल, नेस्टेड सामग्री या प्रदाता सम्मेलनों को मान्य नहीं करता है। एप्लिकेशन में प्रकार के नियमों को परिभाषित करें और प्रतिस्थापन प्रयासों का परीक्षण करें।
jku, x5u या एम्बेडेड कुंजियों पर भरोसा न करें - कुंजी-स्रोत अनुशंसाएँ
`jku`, `x5u`, एम्बेडेड JWK डेटा या प्रमाणपत्र सरणी को केवल इसलिए मुख्य स्रोत स्थापित न करने दें क्योंकि वे संरक्षित हेडर में दिखाई देते हैं। स्वतंत्र रूप से विश्वसनीय जारीकर्ता संबंध और प्रतिबंधित पुनर्प्राप्ति नीति के माध्यम से कुंजियों का समाधान करें। `kid` को केवल उस सीमा के भीतर एक चयनकर्ता के रूप में मानें।
ToolAcre हेडर मानों से कोई नेटवर्क लुकअप नहीं करता है। एक सामान्य निरीक्षक के लिए यह सही व्यवहार है। ऑडिट के दौरान, हेडर मेटाडेटा से फ़ाइल सिस्टम, कैश, डेटाबेस और नेटवर्क ऑपरेशंस तक हर पथ का पता लगाएं, फिर टोकन-नियंत्रित इनपुट से विश्वास बनाने वाले किसी भी पथ को अस्वीकार करें।
चयनित लाइब्रेरी और प्रोफ़ाइल में क्रिप्टोग्राफ़िक इनपुट और एन्क्रिप्टेड-सामग्री मार्गदर्शन की जाँच की जानी चाहिए
क्रिप्टोग्राफ़िक कार्यान्वयन को इनपुट को मान्य करना होगा और चयनित प्रोफ़ाइल के नियमों का पालन करना होगा। एन्क्रिप्शन डिज़ाइन को संपीड़न और अवलोकन योग्य डेटा के आसपास भी देखभाल की आवश्यकता होती है। सटीक APआई और डिफ़ॉल्ट लाइब्रेरी-विशिष्ट हैं और इस रिपॉजिटरी में मौजूद नहीं हैं, इसलिए यह आलेख स्विच का आविष्कार नहीं करता है या सार्वभौमिक समर्थन का दावा नहीं करता है।
तैनात लाइब्रेरी और संस्करण के लिए वर्तमान दस्तावेज़ पढ़ें, फिर विकृत-इनपुट और नीति-बेमेल परीक्षण बनाएं। डिकोडर की साफ़ INVALID_JWT त्रुटियाँ अच्छे निरीक्षण एर्गोनॉमिक्स को प्रदर्शित करती हैं, लेकिन वे इस बात का सबूत नहीं हैं कि एक अलग सत्यापनकर्ता क्रिप्टोग्राफ़िक एज मामलों को सही ढंग से संभालता है।
कारगर उदाहरण - चेकलिस्ट के विरुद्ध सत्यापन रूटीन का ऑडिट करना
विश्वसनीय जारीकर्ता कॉन्फ़िगरेशन, स्वीकृत एल्गोरिदम, मुख्य स्रोत, दर्शक, टोकन प्रकार, समय नीति और एप्लिकेशन दावों को सूचीबद्ध करके सत्यापन दिनचर्या का ऑडिट करें। प्रत्येक आइटम के लिए, एक नकारात्मक टोकन जोड़ें जो वाक्यात्मक रूप से पढ़ने योग्य हो लेकिन बिल्कुल एक अपेक्षा का उल्लंघन करता हो। वास्तविक सीमा पर अस्वीकृति की पुष्टि करें।
ToolAcre का उपयोग केवल यह निरीक्षण करने के लिए करें कि प्रत्येक फिक्स्चर क्या दावा करता है और सुनिश्चित करें कि इच्छित उत्परिवर्तन मौजूद है। इसके आउटपुट का उपयोग इस दावे के रूप में न करें कि फिक्स्चर अमान्य है। सत्यापनकर्ता प्रतिक्रिया और लॉग वह साक्ष्य प्रदान करते हैं, जबकि डिकोडर स्वीकृत और अस्वीकृत उदाहरणों में स्थिर रहता है।
टेकअवे: एक चेकलिस्ट, लाइब्रेरी नहीं - ToolAcre JWT डिकोडर आपको ऑडिट के दौरान टोकन का निरीक्षण करने में मदद करता है; प्रथाएँ आपके द्वारा लिखे गए सत्यापनकर्ता पर लागू होती हैं
सर्वोत्तम अभ्यास दस्तावेज़ एक चेकलिस्ट है, सत्यापन लाइब्रेरी नहीं। इसका मूल्य तब प्रकट होता है जब टीमें सिफारिशों को स्पष्ट कॉन्फ़िगरेशन, संकीर्ण विश्वास संबंधों और असफल परीक्षणों में अनुवाद करती हैं। एक डिकोडर उस कार्य के दौरान टोकन इनपुट को सुपाठ्य बना सकता है लेकिन नियंत्रण लागू नहीं कर सकता।
दस्तावेज़ीकरण और UI में सीमा बनाए रखें: डिकोडेड का अर्थ है पढ़ने योग्य, प्रामाणिक नहीं, असंशोधित, अधिकृत या स्वीकार्य। टोकन के बाहर नीति पिन करें, पहले सत्यापित करें और बाद में दावा लागू करें। ToolAcre उन सभी निर्णयों से पहले जानबूझकर रुक जाता है।