2009-02-13 16 views
16

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

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

इस तरह Basecamp काम जैसी साइटें हैं, लेकिन यह अभी भी मेरे लिए घबराहट लगती है।

उत्तर

16

जो समस्या आप देख रहे हैं वह OpenID के लिए अद्वितीय नहीं है। किसी भी पासवर्ड-कम प्रमाणीकरण योजना में यह समस्या हो सकती है। OAuth (http://oauth.net/) एक ऐसा समाधान है जो एक खुला मानक है जो बहुत सी वेबसाइटों पर त्वरित रूप से कर्षण प्राप्त कर रहा है। उपयोगकर्ता पूरी तरह से स्वतंत्र है कि उपयोगकर्ता कैसे प्रमाणीकृत करता है, इसलिए उनके ओपनआईडी प्रदाता को समर्थन करने या यहां तक ​​कि यह भी पता होना चाहिए कि आपकी साइट (OAuth शर्तों में "सेवा प्रदाता" OAuth का उपयोग कर रही है। आपका एपीआई क्लाइंट वेब आधारित या यहां तक ​​कि एक स्थानीय एप्लिकेशन भी हो सकता है!

भूमिका::

प्रक्रिया कुछ इस तरह होगा

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

प्रवाह:

  1. उपयोगकर्ता उपभोक्ता पर है। वह इंगित करता है कि वह सेवा प्रदाता पर डेटा तक पहुंचना चाहता है।
  2. उपयोगकर्ता को या तो रीडायरेक्ट किया जाता है (यदि उपभोक्ता एक वेबसाइट है) या ब्राउज़र पॉप अप हो गया है (यदि उपभोक्ता एक स्थानीय ऐप है) और उपयोगकर्ता सेवा प्रदाता वेबसाइट देखता है।
  3. उपयोगकर्ता पहले से ही एक लगातार कुकी के माध्यम से सेवा प्रदाता में लॉग इन है, या उपयोगकर्ता को पहले सेवा प्रदाता में लॉग इन करना होगा हालांकि यह किया जाता है (आपके मामले में ओपनआईडी)।
  4. सेवा प्रदाता तो उपयोगकर्ता ने उससे पूछा "उपभोक्ता (कुछ उपभोक्ता) आपके डेटा (या हमारे एपीआई, या जो कुछ भी) के लिए उपयोग करना चाहता है तो आप इस (हां/नहीं)
  5. उपयोगकर्ता की पुष्टि करता अधिकृत करने के लिए करना चाहते हैं, और।? ब्राउजर विंडो बंद हो जाती है या उपभोक्ता साइट पर रीडायरेक्ट की जाती है।
  6. कुछ ओएथ प्रोटोकॉल जादू के माध्यम से, उपभोक्ता के पास अब एक गुप्त प्रमाण पत्र है जिसका उपयोग यह आपके एपीआई तक पहुंचने और आपके द्वारा अधिकृत उपयोगकर्ता-निजी जानकारी तक पहुंचने के लिए कर सकता है।

स्पष्ट रूप से मैं यहां पूरे ओथ स्पैम को शामिल नहीं कर सकता, लेकिन आप ऊपर से उम्मीद कर सकते हैं कि इससे आपकी समस्या हल होनी चाहिए। OAuth पुस्तकालय exis इसके लिए समर्थन जोड़ने के लिए टी आसान है।

यदि आप एएसपी.NET का उपयोग करते हैं, तो मैं हाल ही में http://dotnetopenid.googlecode.com/ का सुझाव देता हूं क्योंकि हाल ही में ओएथ समर्थन (v3.0 बीटा 1) जोड़ा गया है।

+0

इस शानदार स्पष्टीकरण के लिए धन्यवाद। –

+0

मैं उसी तरह के स्पष्टीकरण की तलाश में हूं और आपके उत्तर में बहुत सुधार हुआ है, लेकिन जहां मुझे सबसे अधिक जानकारी की कमी है, 5 और 6 के बीच है। आपका "ओथ प्रोटोकॉल ** जादू **" मेरी मदद नहीं करता है बहुत कुछ: पी क्या यह संभव होगा कि आप मुझे (हमें?) इस बारे में अधिक जानकारी दें कि जादूगर कैसे होता है इस बारे में अधिक जानकारी है कि कैसे एक अविश्वसनीय उपभोक्ता उपयोगकर्ता में आधिकारिक रूप से लॉग इन है? आपका बहुत बहुत धन्यवाद! –

+0

कि "ओथ जादू" की देखभाल अच्छी ओथ लाइब्रेरी द्वारा की जाती है या इसे पढ़ने और इसे स्वयं लागू करने के लिए किया जाता है, लेकिन संक्षेप में, उपभोक्ता सेवा प्रदाता को "सत्यापनकर्ता कोड" के साथ अंतिम अनुरोध भेजता है, जिसके बदले में सेवा प्रदाता उपभोक्ता को "एक्सेस टोकन" भेजता है जिसका उपयोग बाद में अधिकृत अनुरोधों पर हस्ताक्षर करने के लिए किया जा सकता है। –

1

देखें: इस related question

समस्या openid कल्पना प्रदाता के साथ प्रमाणीकरण के लिए कोई मानक प्रावधान नहीं है कि है, इसलिए प्रदाता चुनाव कर सकते हैं, जिसके लिए प्रमाणीकरण एक फोन कॉल या जो कुछ भी द्वारा होती है।

उम्मीद है कि अधिक प्रदाता embrace OAuth। वैकल्पिक रूप से आप कुछ बड़ी साइटों के लिए प्रमाणीकरण कोड संभाल सकते हैं।

+0

क्या मैं ओएथआईडी उपभोक्ता के रूप में ओएथ का उपयोग कर सकता हूं मानते हैं कि उन्होंने हमारे साथ पहले से ही एक खाता स्थापित किया है? या प्रदाता को इसका समर्थन करना है? –

+0

ओपनआईडी में दो भूमिकाएं हैं: "ओपनआईडी प्रदाता" और "रिलीइंग पार्टी"। ओएथ में दो भूमिकाएं हैं: "सेवा प्रदाता" और "उपभोक्ता"। यह भ्रमित है क्योंकि ओपनआईडी 1.1 में, रिलीइंग पार्टी को उपभोक्ता कहा जाता था। वैसे भी, ओपी प्रदाता को OAuth का समर्थन करने की आवश्यकता नहीं है। मेरा अपना जवाब देखें। –

2

ओपनआईडी के साथ आप क्या चाहते हैं संभव नहीं है। ओपनआईडी इस आधार पर आधारित है कि आप (आईफोन ऐप) केवल अपने उपयोगकर्ताओं के बारे में जानना चाहते हैं कि उनके ओपनआईडी-प्रदाता उन्हें भरोसा करते हैं। वे आपको खुद को प्रमाणित नहीं करते हैं। वास्तव में

अच्छा OpenID-प्रदाताओं भी prevent आप प्रमाणीकरण प्रक्रिया मध्यस्थता कि (के रूप में इस संभावित हमले करने के लिए उपयोगकर्ताओं को बेनकाब होगा - आप से!): वे मांग है कि उपयोगकर्ताओं को सीधे उनके साथ प्रवेश और मना के लिए लॉग इन-दर-रेफरल।

+0

यह गलत है। ओपनआईडी उपयोगकर्ताओं के प्रमाणीकरण के बारे में है - यह एपीआई एक्सेस के लिए अन्य प्रमाणीकरण/प्रमाणीकरण साधनों को रोकता नहीं है। ओएथ सब कुछ है। –

+1

मैं सिर्फ इस सवाल का जवाब दे रहा हूं: "यदि मैं ओपनआईडी उपयोगकर्ता को वैकल्पिक क्लाइंट में उपयोग के लिए एपीआई के खिलाफ प्रमाणित करने की अनुमति देना चाहता हूं ..." - यह आप नियंत्रित नहीं कर सकते: प्रदाता बातचीत के तरीके को नियंत्रित करता है, न कि उपभोक्ता। आप कहते हैं कि अपने समाधान में भी ... – yungchin

4

न तो ओपनआईडी और न ही ओथ परिभाषित करता है कि उपयोगकर्ता कैसे प्रमाणीकृत करता है। वे परिभाषित करते हैं कि उपभोक्ता उपयोगकर्ता एजेंट को प्रमाणीकरण प्रदाता को कैसे निर्देशित करता है, उपयोगकर्ता एजेंट को कैसे निर्देशित किया जाता है, और उपभोक्ता किस पहचान के रूप में प्रमाणीकृत पहचान को सत्यापित कर सकता है।

प्रमाणीकरण के लिए उपयोग की जाने वाली वास्तविक विधि दोनों योजनाओं के लिए बैंड से बाहर है।

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

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