9

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

वर्तमान में मेरे पास एक विकसित django साइट है, वेब क्लाइंट संभवतः लगभग 9 5% एक django-piston json REST api के माध्यम से संचार कर रहा है। अन्य 5% कुछ पुनर्निर्मित लॉगिन कार्यक्षमता है जो अभी भी सीएसआरएफ सुरक्षा के साथ पोस्ट फॉर्म के माध्यम से जाती है। आदर्श रूप में मैं शेष को भी आरईएसटी एपीआई में ले जाना चाहता हूं।

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

सारांश:

  1. API सर्वर अनुप्रयोग के लिए एक पूरी तरह से निजी इंटरफेस है
  2. यह आदर्श हो सकता है अगर एपीआई व्यापक रूप से 3 पार्टी वेब द्वारा पुन: उपयोग नहीं किया जा सकता है क्लाइंट मैशप
  3. डेटा एनसीसी संवेदनशील नहीं है। इसका बस सबसे व्यक्तिगत जानकारी ईमेल, पते की तरह बुनियादी उपयोगकर्ता प्रोफ़ाइल सामान होने के साथ एक सामाजिक-प्रकार साइट, आदि

मेरे सवालों का सारांश:

  1. OAuth2 सबसे अच्छा सिफारिश की दृष्टिकोण है मोबाइल ऐप्स को सुरक्षित करने के लिए? क्या वेब क्लाइंट पहलू के साथ इसका कोई संबंध नहीं है? और यदि OAuth2 की अनुशंसा की जाती है, तो क्या यह एक एप्लिकेशन-व्यापी कुंजी होनी चाहिए जिसे ऐप रिलीज़ के साथ संस्करणित किया गया हो?
  2. क्या वेब क्लाइंट AJAX पर पारित सीएसआरएफ का उपयोग करना चाहिए, और बस हमेशा एक ही उत्पत्ति सुनिश्चित करने के लिए jsonp अक्षम करें? असल में, क्या मैं वेब क्लाइंट सुरक्षा को अलग से इलाज कर रहा हूं?
  3. मैं वेब बनाम मोबाइल सुरक्षा को बनाए रखने के लिए यूआरएल/ऐप उदाहरण/सबडोमेन या जो कुछ भी अनुशंसा की जाती है उसे व्यवस्थित करने के बारे में कैसे जाना चाहिए? क्या मुझे बस अलग यूआरएल उपसर्ग की आवश्यकता है, एक मोबाइल के लिए जो विभिन्न नियमों का उपयोग करता है?

मैं इन समस्याओं को हल करने के लिए django-piston विशिष्ट अनुशंसाओं की तलाश में हूं। मैंने पहले ही अपनी परियोजना को ब्रांच किया है और पिस्टन के इस फोर्क संस्करण के साथ खेलना शुरू कर दिया है: https://bitbucket.org/jespern/django-piston-oauth2

एक विचार मुझे एक पिस्टन संसाधन बनाने के लिए था जो पहले इसकी जांच करता है या फिर केवल django auth को लागू करता है, अन्यथा यह oauth2 लागू करता है, लेकिन मुझे यकीन नहीं है कि यह भी उचित है या नहीं।

अद्यतन 1/1/2012

जानकारी कील कि प्रदान की जाती से, मैं पिस्टन-OAuth2 के साथ काम शुरू कर दिया।मैं nonrel Django (MongoDB) के लिए कुछ सुधारों को जोड़ने के लिए इस बात का एक कांटा बना दी और मैं किसी के उदाहरण काँटेदार भी OAuth2 और पिस्टन उपयोग करने के लिए:

https://bitbucket.org/justinfx/django-piston-oauth2-nonrel-example

अब अपने बस की मुझे वास्तव में इस hooking के एक मामले अपनी परियोजना के लिए और काम कर रहा है। लेकिन ये परीक्षण सभी महान काम करते हैं।

+0

अब _this_ एक अच्छी तरह से लिखा सवाल यह है: यह अच्छी तरह से आप के लिए काम नहीं करता है, वहाँ एक उत्कृष्ट Django OAuth2 स्टैंडअलोन सर्वर है कि मैं का उपयोग किया है है! कुछ लोगों को देखने के लिए अच्छा लगा। – Polynomial

+0

धन्यवाद! मैं वास्तव में एसओ पर एक प्रश्न पूछने की कोशिश नहीं करता अगर मुझे पता है कि यह अच्छी तरह से विस्तृत नहीं है और पहले से ही पूछा गया था। मैं यहां पर बहुत से लोगों को देख रहा हूं कि केवल 2 वाक्यों को छोड़कर और हर किसी को समस्याएं हल करने के लिए कहें :-) – jdi

उत्तर

4

मैं सभी OAuth2 के लिए हूं, इसलिए मैं उस समाधान के आधार पर उत्तर दूंगा।

क्या मोबाइल ऐप्स पहुंच सुरक्षित करने के लिए OAuth2 सबसे अच्छा अनुशंसित दृष्टिकोण है? क्या वेब क्लाइंट पहलू के साथ इसका कोई संबंध नहीं है? और यदि OAuth2 की अनुशंसा की जाती है, तो क्या यह एक अनुप्रयोग-व्यापी कुंजी होनी चाहिए जो ऐप रिलीज़ के साथ संस्करणित हो?

हां, ओएथ 2 इस समय अनुशंसित दृष्टिकोण के रूप में व्यापक रूप से माना जाता है। यह OAuth1 से कहीं अधिक आसान है। मैं वास्तव में spec के बारे में ब्लॉग पोस्ट के बजाय the spec पढ़ने की अनुशंसा करता हूं क्योंकि कल्पना स्वयं ही स्पष्ट रूप से लिखी जाती है। Spec से परे, Facebook's और Foursquare's जैसे स्थापित कार्यान्वयन को देखने के लिए उपयोगी है क्योंकि वे हर तरह से spec का पालन नहीं करते हैं, लेकिन कुछ संशोधनों को अधिक व्यावहारिक और उपयोग करने में आसान बनाते हैं।

रिलीज के संस्करण के रूप में, एक dogmatic REST परिप्रेक्ष्य से यह frowned upon है। हालांकि, एक और व्यावहारिक परिप्रेक्ष्य से, यह बेहद आम प्रथा है और एपीआई डेवलपर्स और ग्राहकों दोनों के लिए जीवन को अधिक सरल बनाता है। मैं एपीजी ब्लॉग पढ़ने की सिफारिश करता हूं, क्योंकि उनके पास versioning जैसे विषयों के बारे में बहुत सी पोस्ट हैं।

क्या वेब क्लाइंट AJAX पर पारित सीएसआरएफ का उपयोग करना चाहिए, और केवल यह हमेशा एक ही उत्पत्ति सुनिश्चित करने के लिए jsonp अक्षम करें? असल में, क्या मैं वेब क्लाइंट सुरक्षा का अलग से इलाज कर रहा हूं?

यदि आप एक पूर्ण oauth2 समाधान के साथ जाते हैं, तो आप क्रॉस-साइट एपीआई अनुरोध सक्षम करना चाहेंगे। । क्षुधा से इनकार करने के लिए आप, पता नहीं तुम सिर्फ जब आप access_tokens में पारित किया जा रहा पर देखने के लिए जाँच करता है जोड़ सकते हैं यहाँ कुछ विभिन्न विकल्पों के बारे में पढ़ रहा है तुम हो:

http://blog.apigee.com/detail/crossing_the_streams_handling_cross-site_api_requests/

मैं कैसे करना चाहिए वेब बनाम मोबाइल सुरक्षा को बनाए रखने के लिए यूआरएल/ऐप इंस्टेंस/सबडोमेन या को व्यवस्थित करने के बारे में क्या जाना है? क्या मैं को केवल अलग यूआरएल उपसर्ग की आवश्यकता है, मोबाइल के लिए एक जो नियमों का उपयोग करता है?

बस तय करें कि आपके लिए क्या काम करता है। इन दिनों बहुत से लोगों को "m.mysite.com" या "mobile.mysite.com" पर उनकी मोबाइल साइट है। यदि आप पूर्ण OAuth2 कार्यान्वयन के साथ जाते हैं तो यह निर्णय पूरी प्रमाणीकरण चर्चा से संबंधित नहीं है।

मैं को हल करने के लिए django-piston विशिष्ट अनुशंसाओं की तलाश में हूं।मैं पहले से ही अपने प्रोजेक्ट शाखाओं और पिस्टन के इस काँटेदार संस्करण के साथ खेलने के लिए शुरू कर दिया है: https://bitbucket.org/jespern/django-piston-oauth2

मैं के रूप में मैं tastypie का उपयोग इस से परिचित नहीं हूँ,।

https://github.com/hiidef/oauth2app

+0

ठीक है, इसलिए मैं सब कुछ के लिए ओथ 2 काम करने की दिशा में काम करूंगा। यदि ऐसा है, तो मोबाइल और वेब के लिए अलग यूआरएल एंडपॉइंट्स के बारे में मेरा प्रश्न आवश्यक नहीं होगा क्योंकि उनके लेख बिल्कुल समान हैं। मुझे लगता है कि मेरे शेष बाधा को django/पिस्टन के लिए काम कर रहे oauth2 का उचित समाधान मिल रहा है। Oauth2app का आपका लिंक एक ओथ ऐप प्रतीत होता है और एक स्टैंडअलोन सर्वर नहीं है। तो यह django-pistin-oauth2 कांटा का उपयोग कर कुछ भी करने की जगह ले जाएगा। मुझे यह देखना होगा कि पिस्टन के साथ इसे कैसे एकीकृत किया जाए, क्योंकि वर्तमान में मुझे पिस्टन-ओथ 2 काम नहीं मिल रहा है। मेरी इच्छा है कि एक विशिष्ट टट था। – jdi

+0

कूल। क्षमा करें, मैं oauth2app के बारे में स्पष्ट नहीं था। आप सही हैं कि यह एक स्टैंडअलोन सर्वर नहीं है। यह एक django ऐप है जो आपकी साइट के लिए oauth2 सर्वर दृश्य लागू करता है, और यह किसी अन्य तृतीय पक्ष django ऐप्स से बंधे नहीं है। – Spike

+0

मैं इसे स्वीकार करने से पहले थोड़ा इंतजार करना चाहता था, क्योंकि मैं कुछ और पिस्टन विशिष्ट जानकारी की तलाश में था, लेकिन तब से मैंने पिस्टन-ओथ 2 के साथ गड़बड़ कर ली है। जानकारी के लिए मेरे अपडेट देखें! – jdi