spring - क्या यह डाटाबेस में जेडब्ल्यूटी को स्टोर करने का अर्थ है?




rest security (2)

मैंने स्प्रिंग बूट, स्प्रिंग सिक्योरिटी, ओएयूथ 2 और जेडब्ल्यूटी के साथ मूल प्रमाणन प्रणाली को प्रमाणिकता टोकन के रूप में लागू किया है। यह ठीक काम करता है, लेकिन मैं सोच रहा था कि क्या यह एक डाटाबेस में जेडब्ल्यूटी को स्टोर करने के लिए समझ में आता है और जांचता है कि क्या हर बार किसी ने इसका उपयोग करने के लिए प्रमाणीकृत अनुरोध किया है? मैं विशेष रूप से निम्न परिदृश्य के बारे में सोच रहा था: उपयोगकर्ता को मोबाइल डिवाइस में प्रमाणीकृत किया जाता है और वे इसे खो देते हैं, इसलिए वे उस डिवाइस को अनधिकृत करना चाहते हैं। तब वे एक ऐसे ऑपरेशन जारी कर पाएंगे जो कि उनके उपयोगकर्ता आईडी को जारी किए गए टोकन को साफ़ कर देता है और उसे सौंपे गए सभी टोकनों को अनधिकृत करता है। कोई अन्य तरीका? क्या मैं यह गलत या अधिक कठिन बातें सोच रहा हूं?

यह एक आरईएसटी एपीआई हासिल करने के लिए है जो मोबाइल एपी से फोन किया जा रहा है।


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

यदि आप चाहते हैं तो आप अभी भी डीडब्लू में टोकन संग्रहित किए बिना OAuth2 के साथ JWT का उपयोग कर सकते हैं। जेडब्ल्यूटी के पास एक कॉन्फ़िगर करने योग्य समाप्ति समय है जिसे आप सेट कर सकते हैं - उसके बाद वे अमान्य हैं एक्सेस टोकन (चाहे जेडब्ल्यूटी या नहीं) आमतौर पर सुरक्षा के लिए कम-से-कम रहना चाहिए अगर चिंता का फोन चोरी हो रहा है और टोकन का उपयोग किया जा रहा है, तो मुझे लगता है कि समाधान उन टोकनों को शीघ्रता से समाप्त हो जाना चाहिए (30 मिनट?)। यदि आप oauth2 का उपयोग कर रहे हैं, तो ऐप का उपयोग करने के लिए किसी को रोकने का मतलब असली मालिक के लिए प्राधिकरण सर्वर पर मोबाइल ऐप क्लाइंट को अप्रमाणित करने के लिए है, ताकि अब अधिक पहुंच वाले टोकन को नहीं दिया जाएगा।


आप समाप्ति की तारीख निर्धारित कर सकते हैं (मोबाइल के लिए 1 सप्ताह)। उपयोगकर्ता के लिए कुछ कस्टम फ़ील्ड refreshId जोड़ें (आप refreshId लिए refreshId उपयोग कर सकते हैं) दावे पैरामीटर पर जारी अगला सेट ("आईट") स्टोर refreshId डीबी में refreshId और इसे दावे पैरामीटर के रूप में सेट करें फिर हर बार जब आप टोकन को मान्य करते हैं तो आपको टोकन की "आयु" देखना चाहिए यदि यह एक घंटे से अधिक पुराना हो तो आपको डीबी से डेटा लोड करना चाहिए और refreshId चेक करना चाहिए और मौजूदा "आईएटी" मान से नया टोकन बनाना होगा और उसे मोबाइल डिवाइस पर भेजना होगा। जब आपको टोकन को निष्क्रिय करने की आवश्यकता refreshId है तो डीबी में refreshId लिए नया मान तैयार refreshId है। एक घंटे के बाद सभी टोकन गलत होंगे, इसलिए उपयोगकर्ता को हर डिवाइस पर दोबारा प्रवेश करना होगा। यदि आप की आवश्यकता है तो आप अधिक कस्टम समाधान कर सकते हैं







jwt