मैं अभी भी REST एपीआई की सुरक्षा के लिए सबसे अच्छा सुरक्षा समाधान खोजने की कोशिश कर रहा हूं, क्योंकि हर दिन मोबाइल एप्लिकेशन और एपीआई की मात्रा बढ़ रही है।
मैंने प्रमाणीकरण के विभिन्न तरीकों की कोशिश की है, लेकिन अभी भी कुछ गलतफहमियां हैं, इसलिए मुझे किसी और अनुभवी की सलाह की आवश्यकता है।
मुझे बताइए, मैं यह सब कैसे समझता हूं। अगर मैं कुछ गलत समझ रहा हूं, तो कृपया मुझे बताएं।
जहाँ तक REST API स्टेटलेस होने के साथ-साथ सामान्य रूप से WEB है, हमें प्रत्येक अनुरोध (कुकीज़, टोकन ....) में कुछ डेटा को भेजने की आवश्यकता है। मैं उपयोगकर्ता को प्रमाणित करने के लिए तीन व्यापक रूप से प्रयुक्त तंत्र जानता हूं
HTTPS के साथ लिया गया। मैंने इस दृष्टिकोण का बहुत बार उपयोग किया है यह HTTPS के साथ काफी अच्छा है। यदि उपयोगकर्ता सही पासवर्ड और लॉगिन प्रदान करता है, तो वह प्रतिक्रिया में टोकन प्राप्त करेगा, और आगे के अनुरोधों के लिए इसका उपयोग करेगा। टोकन सर्वर द्वारा जनरेट किया जाता है और संग्रहीत किया जाता है, उदाहरण के लिए तालिका में अलग या उसी में जहां उपयोगकर्ता जानकारी संग्रहीत है। इसलिए प्रत्येक अनुरोध सर्वर के लिए जांचता है कि क्या उपयोगकर्ता के पास टोकन है और यह डेटाबेस में जैसा है वैसा ही है। सब कुछ बहुत सीधा है।
JWT टोकन। यह टोकन स्व-वर्णनात्मक है, इसमें स्वयं टोकन के बारे में सभी आवश्यक जानकारी शामिल है, उपयोगकर्ता उदाहरण समाप्ति तिथि या किसी अन्य दावे के लिए नहीं बदल सकता है, क्योंकि यह टोकन गुप्त कीवर्ड वाले सर्वर द्वारा उत्पन्न (हस्ताक्षरित) है। यह भी स्पष्ट है। लेकिन एक बड़ी समस्या, मेरे लिए व्यक्तिगत रूप से, टोकन को अमान्य कैसे करें।
OAuth 2. मुझे समझ में नहीं आता है कि जब सर्वर और क्लाइंट के बीच सीधे संपर्क स्थापित होता है तो इस दृष्टिकोण का उपयोग क्यों किया जाना चाहिए। जहां तक मैं समझता हूं, OAuth सर्वर का उपयोग प्रतिबंधित स्कोप के साथ टोकन जारी करने के लिए किया जाता है ताकि अन्य एप्लिकेशन को उपयोगकर्ता की जानकारी को पासवर्ड और लॉगिन के बिना एक्सेस करने की अनुमति मिल सके। यह सामाजिक नेटवर्क के लिए बहुत अच्छा समाधान है, जब उपयोगकर्ता किसी पृष्ठ पर साइन अप करना चाहता है, तो सर्वर उपयोगकर्ता की जानकारी प्राप्त करने के लिए ट्विटर या फेसबुक से उदाहरण के लिए अनुमतियों का अनुरोध कर सकता है, और उपयोगकर्ता डेटा और इसी तरह पंजीकरण फ़ील्ड भर सकता है।
ऑनलाइन स्टोर के लिए मोबाइल क्लाइंट पर विचार करें।
पहला प्रश्न क्या मुझे पहले प्रकार के टोकन पर JWT पसंद करना चाहिए? जहां तक मुझे मोबाइल क्लाइंट पर लॉगिन / लॉगआउट उपयोगकर्ता की आवश्यकता है, मुझे कहीं टोकन या JWT के मामले में स्टोर करने की आवश्यकता है, टोकन लॉगआउट पर अमान्य होना चाहिए। अमान्य टोकन सूची (काली सूची) बनाने के लिए टोकन को अमान्य करने के लिए विभिन्न तरीकों का उपयोग किया जाता है। हम्म। यदि तालिका में टोकन संग्रहीत किया गया था और उपयोगकर्ता के साथ जुड़ा हुआ था, तो टेबल / फ़ाइल का आकार बहुत बड़ा होगा।
तो JWT टोकन के क्या लाभ हैं?
OAuth के बारे में दूसरा प्रश्न, क्या मुझे अपने सर्वर के साथ सीधे संचार के मामले में इसका उपयोग करना चाहिए? केवल क्लाइंट और सर्वर के बीच टोकन जारी करने के लिए एक और परत का उद्देश्य क्या है, लेकिन संचार oauth सर्वर के साथ नहीं बल्कि मुख्य सर्वर के साथ होगा। जैसा कि मैं समझता हूं कि उपयोगकर्ता निजी जानकारी तक पहुंचने के लिए OAuth सर्वर केवल तृतीय-पक्ष एप्लिकेशन अनुमतियाँ (टोकन) देने के लिए जिम्मेदार है। लेकिन मेरा मोबाइल क्लाइंट एप्लिकेशन तृतीय-पक्ष नहीं है।