2012-02-20 13 views
14

क्या ओएथ उपयोग करने के लिए समझदार है जब उपयोगकर्ता खाता जानकारी (उपयोगकर्ता आईडी, पासवर्ड, भूमिकाएं इत्यादि) को अपने स्वयं के बैक-एंड में बनाए रखा जा रहा है और जब अन्य साइटों के साथ संसाधनों का कोई साझाकरण नहीं होगा? या OAuth का उपयोग करने के पूरे बिंदु को साझा कर रहा है?क्या इस सास परिदृश्य में रीस्टफुल एपीआई के लिए ओएथ अच्छा विकल्प है?

पृष्ठभूमि:

मैं एक उद्यम सास उत्पाद विकसित करने पर काम कर रहा हूँ और हम एक RESTful API पैदा कर रहे हमारे सामने के अंत अनुप्रयोगों के द्वारा प्रयोग की जाने वाली। एपीआई के उपभोक्ता ब्राउज़र और मूल स्मार्टफोन (आईओएस & एंड्रॉइड) एप्लीकेशन होंगे जो हम विकसित करते हैं। चूंकि हम कई क्लाइंट प्रकारों का समर्थन करेंगे, इसलिए एक विश्वसनीय API बनाने का अर्थ है कि हमारे सभी ग्राहक ऐप्स उपभोग कर सकते हैं।

स्वाभाविक रूप से हमें इस रीस्टफुल एपीआई को सुरक्षित करने की आवश्यकता है। हम HTTPS/Basic Auth का उपयोग करके प्रमाणीकरण पर विचार कर रहे हैं, लेकिन हम इस दृष्टिकोण के कुछ प्रसिद्ध दोषों से अवगत हैं।

कुछ त्वरित शोध से पता चलता है कि ओएथ की अत्यधिक अनुशंसा की जाती है। लेकिन ओएथ के साथ जो कुछ भी मुझे मिलता है, वह उपयोगकर्ता की ओर से जानकारी साझा करने के लिए वेब साइटों को अधिकृत करने के संदर्भ में है।

यदि कोई स्वागत है तो कोई जानकारी।

+1

ले लो पैर की ओर ओथ। दो पैर वाली ओथ भी है, जो आपको चाहिए। – aitchnyu

उत्तर

6

अच्छा सवाल है, और हम एपीआई क्राफ्ट में इस पर पर एक अच्छी चर्चा हो रही हो:

मुझे लगता है कि यह एक अच्छा प्रयोग है:

https://groups.google.com/group/api-craft/browse_thread/thread/b87fd667cccb9c00

यहाँ जवाब है कि मैं वहां तैनात है वास्तव में ओएथ के मामले में।

सबसे पहले, ओएथ के साथ आपका मोबाइल ऐप उपयोगकर्ता के "असली" पासवर्ड की बजाय क्लाइंट पर ओएथ टोकन स्टोर कर सकता है।इसलिए, डिवाइस पर वास्तविक पासवर्ड स्टोर किए बिना ओएथ टोकन प्राप्त करके आप ऐप को स्वचालित रूप से "उपयोगकर्ता लॉग इन" कर सकते हैं। यदि उपयोगकर्ता डिवाइस खो देता है या यदि किसी भी तरह से समझौता किया गया है तो वे (या आप) ओथ टोकन को मिटा सकते हैं, बिना उपयोगकर्ता को पासवर्ड बदलना और अन्य चीजों को दूर करना जो वे आपके एपीआई के साथ कर सकते हैं। अजाक्स-स्टाइल वेब ऐप के लिए समान उदाहरण हैं लेकिन यह क्लाइंट बनाने के विशिष्ट तरीके पर निर्भर करता है।

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

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

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

पांचवां, आप कैसे जानते हैं कि आपका एपीआई कभी भी आपके ऐप्स द्वारा उपयोग किया जाएगा? यदि आप अब OAuth का उपयोग करते हैं तो आपके पास बाद में संक्रमण को आसान बनाने में एक आसान समय होगा।

0

ओएथ केवल एक टोकन है और अनुरोध करने वाला ऐप एक जारी करेगा। आप pingidentity.com में और अधिक पढ़ सकते हैं जहां इस विषय पर कई वेबिनार हैं (क्लाउड पहचान और उपयोगकर्ता प्रावधान)।

+0

बहुत अनुपयोगी। इस ** प्रश्न के अनुरूप संसाधन और जानकारी का एक लिंक प्रदान करें। – aitchnyu

1

मैंने उपभोक्ता को अपने एपीआई का पर्दाफाश करने के लिए पिस्टन के साथ डीजेगो नॉनरल के लिए ओएथ लागू किया। OAuth (2-पैर 3legs) में कई प्रकार के हैं।

आम तौर पर, ओएथ का समर्थन करना काफी चुनौतीपूर्ण है। आपको अनुरोध टोकन प्राप्त करना है, इसे अधिकृत करना है, प्रत्येक अनुरोध पर हस्ताक्षर करने के लिए एक्सेस टोकन स्टोर करना है जिसे आप प्रमाणीकृत करना चाहते हैं।

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

मुझे पूरा यकीन है कि आपको कई लाइब्रेरी मिल सकती हैं जो आपको:
- अपने एपी का पर्दाफाश करें और OAuth का समर्थन करें। E.g Django पिस्टन।
- हेडर जोड़ने के द्वारा अपने अनुरोधों पर हस्ताक्षर करें। उदा। ओथ-साइनपोस्ट।

3

हां, यह ओथ के लिए बहुत अच्छा फिट है। प्रमाणीकरण के लिए हैंडशेक के दौरान आप अभी भी एसएसएल पर HTTP बेसिक का उपयोग कर सकते हैं। ओथ हैंडशेक का आउटपुट एक टोकन होगा जिसका उपयोग एपीआई उपभोग करने के लिए किया जा सकता है। इस तरह, एप्लिकेशन को क्रेडेंशियल स्टोर करने की आवश्यकता नहीं होती है और टोकन आसानी से कम से कम उपयोगकर्ता प्रभाव के साथ रद्द कर सकते हैं।

ओएथ 2.0 विभिन्न स्थितियों को समायोजित करने के लिए कई अलग-अलग अनुदान प्रकारों को परिभाषित करता है। यह मुझे लगता है कि 'निहित' या 'संसाधन मालिक पासवर्ड प्रमाण-पत्र' सबसे उपयुक्त हैं लेकिन आप प्रत्येक सावधानी से विचार करना चाहेंगे।

आपको इसे सीधे अपने एपीआई में लागू नहीं करना चाहिए बल्कि इसके साएएस एपीआई की ओर से ओथ समर्थन और टोकन प्रबंधन को प्रतिनिधि करने के लिए आधारभूत संरचना का उपयोग करना चाहिए।

http://www.layer7tech.com/blogs/index.php/oauth-token-management-2/

और

http://www.layer7tech.com/products/oauth-toolkit

आशा इस मदद पर एक नज़र, तीन Thats "को अधिकृत करने के संदर्भ .."

-fl

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