2011-05-13 23 views
30

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

सबसे पहले मुझे एक सुरक्षित पृष्ठ प्रदान करने की आवश्यकता होगी जिसे उपभोक्ता को रीडायरेक्ट करने की आवश्यकता होगी। उदाहरण के लिए https://api.mydomain.com/oauth/authorize?client_id=CONSUMER_KEY&redirect_url=CALLBACK_URL। उपयोगकर्ता एप्लिकेशन को सत्यापित करेगा, फिर मैं क्वेरी स्ट्रिंग में oauth_token के साथ कॉलबैक यूआरएल में प्रदान किए गए यूआरएल पर रीडायरेक्ट कर दूंगा। मुझे लगता है कि मैं oauth_token के लिए यहां एक यादृच्छिक अनूठी स्ट्रिंग उत्पन्न कर सकता हूं और इसे इस विशेष उपभोक्ता के लिए उपयोगकर्ता के खिलाफ स्टोर कर सकता हूं (संपादित करें: कृपया नीचे दिए गए उत्तर को देखें, यह प्रत्येक उपभोक्ता अनुप्रयोग के लिए अद्वितीय होना चाहिए, न कि उपयोगकर्ता)।

यह चरण 1 से बाहर है। अब मुझे एक दूसरा सुरक्षित पृष्ठ प्रदान करने की आवश्यकता है जिसे उपभोक्ता वेब अनुरोध को ट्रिगर करेगा। उदाहरण के लिए https://api.mydomain.com/oauth/access_token?client_id=CONSUMER_KEY&client_secret=CONSUMER_SECRET&oauth_token=OAUTH_TOKEN_RETURNED_ABOVE। यह उपभोक्ता को एक्सेस टोकन के लिए ऊपर लौटाए गए oauth_token का आदान-प्रदान करने की अनुमति देगा। मैं फिर से एक यादृच्छिक अद्वितीय स्ट्रिंग उत्पन्न करता हूं और इसे इस विशेष उपभोक्ता के लिए उपयोगकर्ता के खिलाफ स्टोर करता हूं।

अब मेरा एपीआई उन तरीकों के लिए access_token स्वीकार करेगा जो इसका उपयोग करने वाले उपयोगकर्ता को विशिष्ट जानकारी प्राप्त करने का प्रयास करेंगे।

मैं जानना चाहता हूं कि क्या मैंने चीजों को सही ढंग से समझा है। यदि मामला है तो OAuth 2.0 spec बहुत छोटा लगता है। इसके अलावा हमें oauth_token को access_token के साथ क्यों बदलना है? मेरे पास मेरा अपना विचार है लेकिन अगर कोई इसे स्पष्ट करने में मदद कर सकता है तो मैं इसकी सराहना करता हूं।

मैं वास्तव में आपकी प्रतिक्रिया की सराहना करता हूं क्योंकि मैं आगे बढ़ना नहीं चाहता हूं और यह पूरी तरह गलत होने पर इसे प्रभावित करने के घंटों को बर्बाद कर सकता हूं।

धन्यवाद

उत्तर

48

असल प्रोटोकॉल प्रवाह आरेख OAuth 2 की तरह चश्मा दृश्यमान करने के लिए अत्यंत उपयोगी होगा, लेकिन वहाँ केवल कुछ आंशिक वहाँ बाहर काम करता है कर रहे हैं। जैसा कि मैंने केवल क्लाइंट-साइड को केवल ओएथ 2 लाइब्रेरी लागू किया है, मैं सत्यापित कर सकता हूं कि आप सही रास्ते पर हैं। लेकिन यहां एक पकड़ है:

oauth_token आपके क्लाइंट एप्लिकेशन (यानी एक डेस्कटॉप फेसबुक रीडर) से संबंधित है जो आपके एप्लिकेशन को प्रमाणित करता है (बस एक आईडी की तरह)। आप इसे access_token वापस पाने के लिए सबमिट करते हैं, जो आपके एप्लिकेशन के लिए विशिष्ट है और उपयोगकर्ता में लॉग इन है, जो आपको उपयोगकर्ता से संबंधित प्रतिबंधित संसाधनों तक पहुंचने की अनुमति देता है।

यहाँ एक बुनियादी डेस्कटॉप एप्लिकेशन को प्रमाणीकरण प्रक्रिया (से लिया: http://developers.gigya.com/020_Developer_Guide/85_REST/OAuth2) है

REST OAuth 2.0

वास्तव में समय के साथ एक प्रवाह digram (ऊपर से नीचे तक, से लिया: http://www.ibm.com/developerworks/web/library/wa-oauthsupport/?ca=drs-)

Protocol flow

और अंततः पूर्ण प्रक्रिया है: (http://h2anetwork.org/ProjectDocs/DPI/DPI_Framework.html से लिया गया)

OAuth protocol flow

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