क्या अनुमति और भूमिकाओं को JWT के पेलोड में शामिल किया जाना चाहिए?


9

क्या क्लाइंट की अनुमतियों और भूमिकाओं के बारे में जानकारी JWT में शामिल होनी चाहिए?

JWT टोकन में इस तरह की जानकारी होने से बहुत मदद मिलेगी क्योंकि एक वैध टोकन आने के बाद, उपयोगकर्ता के बारे में अनुमति के बारे में जानकारी निकालना आसान होगा और इसके लिए डेटाबेस को कॉल करने की कोई आवश्यकता नहीं होगी। लेकिन इस तरह की जानकारी और डेटाबेस में एक ही जाँच नहीं दोहरी जाँच शामिल है?

या,

ऊपर बताई गई जानकारी की तरह JWT का हिस्सा कभी नहीं होना चाहिए, और उपयोगकर्ता की पहुंच भूमिकाओं और अनुमतियों की जांच के लिए केवल डेटाबेस का उपयोग किया जाना चाहिए?

जवाबों:


7

टोकन में दावों को शामिल करने का उद्देश्य यह है कि आपके पास संसाधन और प्रमाणीकरण प्रदाता के बीच का संचार न हो।

संसाधन केवल यह जांच सकता है कि टोकन के पास एक वैध हस्ताक्षर है और सामग्री पर भरोसा है।

निजी कुंजी को निजी सर्वर के लिए निजी मान लें कि आप अच्छे हैं। कुछ प्रदाता जोखिम को कम करने के लिए अपनी कुंजी बदलते हैं।

यदि आप इसके बारे में सोचते हैं, अगर संसाधन ने दावे को प्राप्त करने के लिए किसी अन्य सर्वर पर कॉल किया है। तब यह अनिवार्य रूप से सुनिश्चित कर रहा है कि इसके ट्रस्ट सर्वरों से समान विश्वास विधियों द्वारा बात की जाए।


एक सुंदर जवाब के लिए धन्यवाद, क्या मैं आपके कथन के बारे में अधिक जान सकता हूं "कुछ प्रदाता जोखिम को कम करने के लिए अपनी कुंजी बदल देते हैं।" ?
अंशुल साहनी

1
इसलिए, एक निश्चित हस्ताक्षर करने वाली कुंजी होने के बजाय, सामान्य प्रदाता इसे हर बार बदल देगा और संसाधन सर्वर को इसके आधे हिस्से को डाउनलोड करने के लिए एक समापन बिंदु प्रदान करेगा। संसाधनों को हर बार अक्सर सर्वर पर कॉल करना पड़ता है, लेकिन अनुरोध के अनुसार एक बार नहीं
इवान

तो सभी टोकन अमान्य हैं हर बार कुंजी हस्ताक्षर सेवा द्वारा बदल दिया जाता है
अंशुल साहनी

1
आमतौर पर उनके पास एक से अधिक संभावित कुंजी होगी, ताकि उड़ान में टोकन अभ्यस्त न हों। टोकन में संसाधन बताने के लिए एक 'की आईडी' होगी, जिसका उपयोग करना है
इवान

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

1

मेरे अनुभव से, यदि आपके सभी सिस्टम कुछ केंद्रीय भूमिका और अनुमति डेटाबेस का उपयोग कर रहे हैं, तो आप उस सभी को JWT में जोड़ सकते हैं।

हालाँकि, यह दृष्टिकोण SSO परिदृश्यों में अच्छी तरह से काम नहीं कर सकता है, जब स्वयं को प्राप्त करने वाले लक्ष्य सिस्टम के बारे में कोई भी विचार नहीं है, जो टोकन को प्राप्त करेगा और उस पर भरोसा करेगा।

उपयोगकर्ता की भूमिकाएं और अनुमतियां पूरी तरह से JWT टोकन के रिसीवर पर हैं। यह विशेष रूप से सच है जब आप SSO को JWT के साथ कुछ विरासत प्रणालियों में एकीकृत करते हैं जो पहले से ही उनकी अनुमति सबसिस्टम है और इस प्रकार उन्हें JWT में मौजूद होने के लिए केवल एक दावे की आवश्यकता है - उपयोगकर्ता पहचान का दावा।


मैं इस पर सहमत हूं। उपयोगकर्ता अनुमतियाँ विशेष रूप से SSO में jwt का हिस्सा नहीं होनी चाहिए क्योंकि idp को यह पता नहीं होता है कि यह उपयोगकर्ता jwt किन अन्य सेवाओं के साथ बात करने जा रहा है .. इसके बजाय संसाधन को उपयोगकर्ता के लिए पहचान की पुष्टि होने के बाद प्राधिकरण भाग को लागू करना चाहिए।
मनीष रावत

मैं यह भी मानता हूं कि जेडब्ल्यूटी में अनुमति के दावे एक साधारण अखंड एपीआई से परे एक अच्छा विचार नहीं हैं। मैंने इसके बारे में एक ब्लॉग पोस्ट लिखा: sdoxsee.github.io/blog/2020/01/06/…
sdoxsee
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.