11

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

मैं यह दूसरा सर्वर सुरक्षित करना चाहता हूं। मैं केवल फ्रंटेंड एप्लिकेशन बैकएंड सर्वर को कॉल करने में सक्षम होना चाहता हूं।

इस समय कोई भी डेटा से पूछताछ करने के लिए ब्राउज़र से बाकी एपीआई को कॉल कर सकता है।

आपकी मदद के लिए धन्यवाद।

+0

उन्हें 2 अलग-अलग सर्वरों पर क्यों होना चाहिए? क्या आप अलग-अलग भाषाओं का उपयोग कर रहे हैं? – mpm

+0

नहीं, दोनों सर्वर पर एक ही भाषा का उपयोग किया जाता है। मैंने स्केलेबिलिटी कारणों और चिंताओं के अलगाव के लिए बाकी सर्वर को एक सर्वर और फ्रंटेंड को दूसरे सर्वर पर रखा है। – Michael

उत्तर

11

ब्राउजर क्लाइंट में जावास्क्रिप्ट ऐप कुछ भी कर सकता है जो आपके ऐप के बाहर आपके बैक-एंड आरईएसटी एपीआई सर्वर तक पहुंचने के लिए किसी और द्वारा देखा और किया जा सकता है।

वास्तव में, यह तथ्य कि जावास्क्रिप्ट में क्लाइंट ऐप लागू किया गया है, यह महत्वपूर्ण नहीं है - आपके नियंत्रण के बाहर मशीन पर निष्पादित कोई भी एप्लिकेशन पूरी तरह भरोसा नहीं किया जा सकता है। यह जावास्क्रिप्ट ऐप पर व्यूसोर्स की तुलना में अभियंता देशी कोड को हटाने योग्य थोड़ा मुश्किल है, लेकिन असंभव नहीं है। अस्पष्टता से सुरक्षा पर भरोसा न करें।

आपका सबसे अच्छा विकल्प यह है कि ब्राउजर ऐप को अंतिम उपयोगकर्ता को लॉग इन करने और विश्वसनीय पहचान प्रदाता से ऑथ टोकन प्राप्त करने की आवश्यकता होती है, और यह बताता है कि ब्राउजर ऐप आरईएसटी एपीआई के हर अनुरोध में ऑथ टोकन पेश करता है। आरईएसटी एपीआई तब यह देखने के लिए ऑथ टोकन को मान्य कर सकता है कि यह विश्वसनीय प्रदाता से आया है और क्या टोकन के अंदर नामित उपयोगकर्ता आरईएसटी एपीआई का उपयोग करने के लिए अधिकृत है।

यह ऐप के बजाय उपयोगकर्ता को आरईएसटी एपीआई कॉल का प्रमाणीकरण करने का संबंध रखता है, और रहस्यों (उपयोगकर्ता प्रमाण-पत्र) का उपयोग करता है जो पूरी दुनिया के लिए ब्राउज़र ऐप में नहीं रहते हैं।

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

एक और विकल्प हो सकता है कि आपका वेब सर्वर आपकी आरईएसटी एपीआई सेवा के लिए प्रॉक्सी के रूप में कार्य करे, ताकि ब्राउजर ऐप को आरईएसटी एपीआई से डेटा प्राप्त करने के लिए वेब सर्वर से गुज़रना पड़े। यह व्यवहार्य हो सकता है यदि ब्राउज़र ऐप सत्र स्थिति बनाए रखता है कि वेब सर्वर यह निर्धारित करने के लिए सत्यापित कर सकता है कि अनुरोध बोना-फेड ऐप से है और किसी और से नहीं। हालांकि यह आपको सार्वजनिक नेटवर्क से अपना आरईएसटी एपीआई रखने की अनुमति दे सकता है, यह वास्तव में आपकी प्राधिकरण समस्या को नहीं बदलता है - आपने इसे वेब सर्वर पर ले जाया है जहां से आपके इन-एप अनुरोध को अलग करने के लिए अधिक सत्र संदर्भ हो सकता है एक इंटरलपर अनुरोध। सर्वोत्तम रूप से कमजोर, जब तक कि आप अपने ऐप सत्र स्थिति में वास्तव में विश्वास नहीं करते हैं, तब तक अनुशंसित नहीं किया जाता है।

चाहे आप कौन सा समाधान चुनते हैं, तथ्य यह है कि यदि आपका आरईएसटी एपीआई क्लाइंट-साइड एप्लिकेशन (ब्राउज़र या अन्यथा) से सुलभ है, तो यह एक सार्वजनिक आरईएसटी एपीआई है और इसका इलाज (और मजबूत) होना चाहिए। एक निजी वेब एपीआई जैसी कोई चीज नहीं है जिसे क्लाइंट मशीन से एक्सेस किया जा सकता है।

+0

आपके उत्तर के लिए धन्यवाद। मुझे एक विश्वसनीय प्रदाता से प्राप्त एक विश्वसनीय ऑथ टोकन होने का आपका विचार पसंद है। जो आप समझा रहे हैं वह मूल रूप से ओथ तंत्र है? आइए कल्पना करें कि कोई उपयोगकर्ता Google या किसी अन्य विश्वसनीय प्रदाता के साथ मेरे ऐप को प्रमाणित कर रहा है।क्या वे बदले में एक टोकन प्राप्त करते हैं और क्या मैं अपने किसी भी एपीआई कॉल पर हस्ताक्षर करने के लिए इस टोकन का उपयोग कर सकता हूं। – Michael

+0

हां, ओथ इस तरह की टोकन प्रणाली है। तो एसएएमएल है। हां, आप अपने एपीआई के कॉलर को प्रमाणीकृत करने के लिए Google और अन्य द्वारा जारी टोकन का उपयोग कर सकते हैं। आपके एपीआई को टोकन को सत्यापित करने की आवश्यकता होगी (ज्ञात प्रमाणपत्रों के खिलाफ हस्ताक्षर जांचें, या कॉल प्रदाता)। Google एपीआई को अपने सिस्टम के साथ ऐसा करने के लिए प्रदान करता है ताकि आपको वायर प्रोटोकॉल और पैकेट प्रारूपों के गंदे विवरण प्राप्त न करें। – dthorpe

+1

ध्यान दें कि Google और अन्य पहचान प्रदाता केवल उपयोगकर्ता के प्रमाणीकरण प्रदान करते हैं। आपका एपीआई भरोसा कर सकता है कि कॉलर पहचान प्रामाणिक है, लेकिन आपको अभी भी प्राधिकरण को स्वयं तय करना है। पूर्ण फीचर्ड सुरक्षित टोकन सर्वर (एसटीएस) सिस्टम हैं जो पहचान और भूमिका/एंटाइटेलमेंट/अनुमति जानकारी प्रदान करते हैं। Google, एफबी, आदि केवल पहचान प्रदान करते हैं। – dthorpe

संबंधित मुद्दे