मेरे पास यह वेब एप्लिकेशन है जो सभी क्लाइंट-साइड टेक्नोलॉजी (HTML, CSS, JavaScript / AngularJS, आदि ...) के लिए जा रहा है। यह वेब एप्लिकेशन डेटा तक पहुंचने और संशोधित करने के लिए REST API के साथ सहभागिता करने जा रहा है। अभी यह अनिर्धारित है कि REST API किस प्रकार की प्रमाणीकरण प्रणाली का उपयोग करने वाली है।
मेरी समझ से, किसी भी प्रकार के एपीआई प्रमाणीकरण प्रणाली (एपीआई कुंजी, OAuth 1/2, आदि ...) में कुछ डेटा होने चाहिए जो गुप्त रखने की आवश्यकता है अन्यथा पहुंच से समझौता किया जा सकता है। API कुंजियों के लिए, उन्हें कुंजी स्वयं गुप्त रखने की आवश्यकता है, OAuth 2 के लिए ग्राहक गुप्त / एक्सेस टोकन / ताज़ा टोकन को गुप्त रखने की आवश्यकता है, मुझे यकीन है कि OAuth 1 में शामिल 4 कुंजी में से कुछ को गुप्त रखने की आवश्यकता है (नहीं OAuth 1 के साथ बहुत अधिक अनुभव)। मैं यह सोचने की कोशिश कर रहा हूं कि क्या इस गुप्त सामान को सर्वर साइड पर एक मध्यम परत के बिना शुद्ध क्लाइंट-साइड वेब एप्लिकेशन में संग्रहीत करने का कोई तरीका है।
मैं इस बारे में सोचने की कोशिश कर रहा हूं और मैं ऐसा करने के लिए किसी जगह के बारे में नहीं सोच सकता। मेरा मतलब है कि मैं इसे जावास्क्रिप्ट में संग्रहीत नहीं कर सकता क्योंकि कोई भी स्रोत को देख सकता है या कंसोल को खोल सकता है और डेटा प्राप्त कर सकता है। मैं 100% सुनिश्चित नहीं हूं कि लोकलस्टोरेज कितना सुरक्षित है और अगर उपयोगकर्ता उस डेटा को एक्सेस / संशोधित कर सकते हैं। यहां तक कि अगर स्थानीय भंडारण सुरक्षित था, तो मैं जिन दो तरीकों से डेटा प्राप्त करने के बारे में सोच सकता हूं, वे नहीं हैं। एक तरीका सिर्फ डेटा को जावास्क्रिप्ट सोर्स कोड में स्टोर करना है जो सबसे असुरक्षित चीज है जिसके बारे में मैं सोच सकता हूं। अब अगर मैं OAuth 2 जैसी किसी चीज़ का उपयोग कर रहा था, जिसमें बाकी आपी खुद मुझे टोकन देंगे, तब भी यह सुरक्षित नहीं होगा (पहले विकल्प से बेहतर) क्योंकि उन टोकन को सादे पाठ के रूप में लौटाया जाएगा जो कोई भी देख सकता है कंप्यूटर जो अनुरोध कर रहा है वह देख सकता है।
क्या कोई ऐसा तरीका है जिससे एप्लिकेशन पूरी तरह से क्लाइंट साइड पर चल रहा हो, सर्वर साइड पर किसी प्रकार की मध्य परत के बिना सुरक्षित रूप से डेटा के गुप्त टुकड़ों को स्टोर करने में सक्षम हो?