2012-10-30 10 views
17

मैं आरईएसटी एपीआई के लिए बिल्कुल नया हूं, और मुझे एहसास है कि पहले से ही बहुत से प्रश्न पोस्ट किए गए हैं। हालांकि, इन्हें समझने से वास्तव में मुझे इसे संभालने के तरीके पर और अधिक भ्रमित कर दिया गया है।एक आरईएसटी एपीआई और स्लिम फ्रेमवर्क को सुरक्षित करना

मैंने Slim Framework का उपयोग कर एक आरईएसटी एपीआई बनाया है जिसे मैं बस डेटा स्थानांतरित करने के लिए उपयोग कर रहा हूं। मैं उपयोगकर्ता लॉग इन या प्रमाणीकरण का उपयोग नहीं करूँगा, इसलिए मुझे यह सुरक्षित करने का विश्वास है कि मुझे बस एक ऐसी प्रणाली की आवश्यकता है जो सार्वजनिक कुंजी और एक निजी कुंजी का उपयोग कर रहा हो, लेकिन मुझे यकीन नहीं है।

अगर किसी को ऐसा करने के लिए सही/सबसे सुरक्षित तरीका पर अंतर्दृष्टि है, या कोई ट्यूटोरियल/संसाधन जो बहुत अच्छा होगा। किसी भी मदद की सराहना की है।

+0

सबसे सुरक्षित तरीके से अंतर्दृष्टि ... करने के लिए * क्या *? आप क्या खत्म करने की कोशिश कर रहे हैं? आप चाहते हैं कि "इसे सुरक्षित करें।" इसका क्या मतलब है? लक्ष्य क्या है? क्या आप केवल विश्वसनीय उपयोगकर्ताओं तक पहुंच की अनुमति देना चाहते हैं? क्या आप पारगमन में डेटा एन्क्रिप्ट करना चाहते हैं? क्या आप प्रति ग्राहक केवल एक ही उपयोग की अनुमति देना चाहते हैं? आदि...आपने कहा था कि आप "इसे सुरक्षित करना" चाहते हैं लेकिन आप प्रमाणीकरण का उपयोग नहीं करना चाहते हैं। इसके बाद आपको "अधिक सुरक्षित" करने के लिए इसका क्या अर्थ है, इसके लिए आपको और अधिक विशिष्ट होने की आवश्यकता होगी। – Cheeso

+1

एपीआई को विभिन्न साइटों से बुलाया जाएगा, लेकिन उपयोगकर्ता को यह नहीं पता होगा कि यह वहां है, क्योंकि इसका उपयोग बैकएंड पर डेटा पुनर्प्राप्त करने के लिए किया जा रहा है। मेरा लक्ष्य कोड से इस एपीआई को सुरक्षित रूप से कॉल करना और साथ ही डेटा एन्क्रिप्ट करना है। उत्कृष्ट प्रतिक्रिया के लिए – Drew

उत्तर

15

आप ट्रांज़िट में डेटा एन्क्रिप्ट करने के लिए एसएसएल का उपयोग कर सकते हैं।

लेकिन एसएसएल सिर्फ एन्क्रिप्शन है; सर्वर-साइड एसएसएल क्लाइंट के प्रमाणीकरण नहीं करता है, न ही प्राधिकरण। पर सवाल उठाने के लिए आप प्रमाणीकरण के बारे में सोच सकते हैं क्या कॉलर को वह करने की अनुमति है जो वह पूछ रहा है?प्रमाणीकरण कॉलर या प्रमाणीकरण की पहचान स्थापित करना आमतौर पर प्राधिकरण करने के लिए एक आवश्यक पहला कदम है। कभी-कभी आपको "पूरी पहचान" की आवश्यकता नहीं होती है - आपको बस एक विशेष पहलू का पता लगाने की आवश्यकता होती है। उदाहरण के लिए, एक स्वचालित वाशरूम गेट को जानने की आवश्यकता नहीं होगी, जो थे, लेकिन केवल अगर आप पहचान सुनिश्चित करने के लिए नर या मादा थे। इसी तरह, कुछ सेवाएं इस परवाह नहीं करती कि आप कौन हैं; यदि आप किसी विशेष नेटवर्क (आईपी श्वेतसूची) से कॉल कर रहे हैं या यदि आप एक विशेष टोकन लेते हैं तो वे एक्सेस की अनुमति देंगे।

सर्वर अधिकृत और अनाधिकृत कॉल के बीच भेद करने के लिए अनुमति देने के लिए आप कुछ विकल्प हैं:

  • IP श्वेतसूची। यदि आप ऐप या एजेंट का आईपी पता जानते हैं जो आपकी सेवा को कॉल करेगा, तो आप अपने सेवा कार्यान्वयन में निर्दिष्ट कर सकते हैं। सेवा आने वाले अनुरोधों के आईपी की जांच कर सकती है और उन लोगों को अस्वीकार कर सकती है जो श्वेतसूची पर नहीं हैं। यह कॉलर के पते के आधार पर "निहित" प्राधिकरण की तरह है।

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

  • टोकन + कुंजी जोड़ी। यह उपयोगकर्ता नाम/पासवर्ड की तरह है, लेकिन इसका उपयोग ऐप को प्रमाणीकृत करने के लिए किया जा सकता है। ऐप की पहचान प्रदान करने के लिए इसका इस्तेमाल करें। उपरोक्त के रूप में सेवा पक्ष पर जांचें।

  • उपयोगकर्ता नाम/पासवर्ड। ऐप के उपयोगकर्ता को प्रमाणीकृत करने के लिए।

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

+0

धन्यवाद चीसो। इन सभी को लागू करने में मेरे लिए कुछ समय लगेगा लेकिन यह निश्चित रूप से मुझे पथ नीचे भेज दिया। – Drew

+0

@Cheeso, अच्छा सारांश। क्या आपके पास कोई कार्यान्वयन उदाहरण है, अपने स्वयं के कार्यान्वयन के साथ शुरू करने के विचार, यह देखते हुए कि एक मूल REST API ऊपर है और चल रहा है ... –

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