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