OAuth कनेक्ट क्या है और इसका उपयोग कैसे करें
वेब के चारों ओर ब्राउज़ करते समय हम में से कई OAuth के संपर्क में आते हैं, और हम में से अधिकांश इसके अस्तित्व के बारे में भी नहीं जानते हैं। OAuth (ओपन ऑथेंटिकेशन) एक ऐसी प्रणाली है जो तृतीय-पक्ष वेबसाइटों को आपके ट्विटर या फेसबुक खातों के लिए उपयोगकर्ता खातों में सीमित पहुंच प्रदान करती है। यह नए खाते के पंजीकरण की आवश्यकता के बिना या तीसरे पक्ष को अपना उपयोगकर्ता नाम और पासवर्ड जारी किए बिना आगंतुकों को साइट के भीतर बातचीत करने देता है.
इस गाइड में मैं OAuth की अवधारणा को पेश करना चाहता हूं और यह डेवलपर्स के लिए कैसे लागू हो सकता है। आपके अपने OAuth आवेदन के कार्यान्वयन में बहुत सारे तकनीकी विवरण शामिल हैं। मेरा उदाहरण PHP में एक ट्विटर लाइब्रेरी रैपर का उपयोग करके लिखा जाएगा, लेकिन आप पाइथन से लेकर रूबी या ऑब्जेक्टिव-सी तक लगभग किसी भी लोकप्रिय प्रोग्रामिंग एपीआई का उपयोग कर सकते हैं.
भले ही अवधारणा गूढ़ हो, लेकिन जितना हो सके उतना पचाने का प्रयास करें। यह अभी भी एक बहुत ही रहस्यमय तकनीक है, जिसे अभी 2007 में वापस ड्राफ्ट किया गया है। मैं निश्चित रूप से यह नहीं समझ पाया कि मेरे पहले कुछ ट्यूटोरियल्स के बाद भी पूर्ण OAuth कनेक्शंस को कैसे विकसित किया जाए, लेकिन यदि आप इसके साथ चिपके रहते हैं, तो आप तेजी से पकड़ लेंगे। अब पहले चीजों को किक करने के लिए, एक छोटा सा परिचय!
हम क्या समस्याएँ हल कर सकते हैं?
यदि आप समझते हैं कि इंटरनेट कितना अधिक कनेक्ट हो गया है, तो यह केवल यह समझ में आता है कि उपयोगकर्ता फेसबुक से ट्विटर, टम्बलर, फोरस्क्वेयर और अब और भी मोबाइल ऐप जैसे पथ या इंस्टाग्राम में जानकारी साझा करना चाहेंगे। अब हम जिस समस्या का सामना कर रहे हैं, वह यह है कि इसे सबसे सुरक्षित और सरल तरीके से कैसे पूरा किया जाए। OAuth 1.0 पुराने OpenID मानकों की तुलना में इसे और कई अन्य समस्याओं को हल करने का एक प्रयास है। उपयोगकर्ता अभी भी अपने उपयोगकर्ता नाम / पासवर्ड को अन्य थर्ड पार्टी वेबसाइट्स में डाल रहे हैं, बस ओपनआईडी से जुड़ने के लिए। यह इसे उपयोगकर्ता के लिए कोई सुरक्षित नहीं बनाता है। OAuth चश्मा के तहत, उपयोगकर्ता को किसी भी व्यक्तिगत खाता डेटा को तीसरे पक्ष के डेटाबेस में संग्रहीत करने की आवश्यकता नहीं है.
(छवि स्रोत: मार्टिन हासमैन)
OAuth के साथ, मुख्य खाता प्रदाता (उदाहरण के लिए ट्विटर, फेसबुक) एक प्राधिकरण पृष्ठ पर आपको (उपयोगकर्ता) पहले रीडायरेक्ट करेगा। उपयोगकर्ता तब मुख्य नेटवर्क में प्रवेश करता है, और फिर तीसरे पक्ष की वेबसाइट में एक नया कनेक्शन स्वीकार या अस्वीकार करता है। तकनीक दर्द रहित आसान है और आप किसी भी बिंदु पर अपने खाते की सेटिंग से कनेक्शन को अनधिकृत कर सकते हैं। ध्यान दें कि आपका पासवर्ड कभी भी 3rd पार्टी को नहीं दिया जाता है जो इस प्रोटोकॉल को उसके समकक्ष से कहीं अधिक सुरक्षित बनाता है.
प्रक्रिया कैसे काम करती है
मानक OAuth कॉल पर विचार करने के लिए 3 पक्ष हैं:
- सेवा प्रदाता - मुख्य नेटवर्क जिसे आप डेटा से खींचने का प्रयास कर रहे हैं। वे आपके उपयोगकर्ता नाम, प्रोफ़ाइल चित्र, वेबसाइट URL और अन्य सामान जैसे API प्रतिक्रिया प्रदान करते हैं.
- उपभोक्ता - डेटा प्राप्त करने की तलाश में 3 पार्टी ऐप। यह वेबसाइट या मोबाइल ऐप होगा जो प्रारंभिक कनेक्शन अनुरोध करता है, फिर प्राधिकरण के बाद रिटर्न डेटा भी संभालता है.
- उपयोगकर्ता - कंप्यूटर के पीछे बैठा व्यक्ति उन वेबसाइटों के साथ बातचीत करता है जो आप होंगे!
OAuth का उद्देश्य वेबसाइटों के उपयोग के लिए एक विशिष्ट पुस्तकालय प्रदान करना नहीं है। यह वास्तव में सेट अप करता है “नियम” एक ओपन प्रोटोकॉल एपीआई के निर्माण के लिए। इसलिए जब हम इस तकनीक से लाभ उठा सकते हैं तो यह वास्तव में डेवलपर्स हैं जो वास्तव में इस क्षेत्र में रुचि पाएंगे। यदि आपको अधिक जानकारी की आवश्यकता है तो अप्रैल 2010 में जारी संशोधित v1.0 संस्करण देखें.
सुरक्षा का सामना
संपूर्ण प्रक्रिया को अंततः एक्सेस टोकन के साथ 2 अलग-अलग कुंजी की आवश्यकता होती है। जब आप कोई एप्लिकेशन पंजीकृत करते हैं, तो कुंजी को रूट सेवा द्वारा प्रदान किया जाता है - ये आपके रूप में जाने जाते हैं ग्राहक तथा गुप्त आईडी. क्लाइंट आईडी को आमतौर पर ऑथेंटिकेशन URL में पास किया जाता है ताकि सर्वर आपके ऐप को पहचान सके.
गुप्त आईडी आपके कोड में होती है इसलिए सर्वर आपके ऐप की पहचान को सत्यापित कर सकता है। इसी तरह रिमोट सर्वर आपकी गुप्त आईडी से मेल खाएगा ताकि आप गलती से फेसबुक के एपीआई, या इसके विपरीत एक ट्विटर अनुरोध न भेजें। यदि उपयोगकर्ता कनेक्शन को अधिकृत करता है और सभी चाबियाँ मेल खाती हैं, तो उन्हें आपकी वेबसाइट पर यादृच्छिक संख्याओं और अक्षरों के लंबे कोड के साथ वापस कर दिया जाता है.
इस कोड का उपयोग नया बनाने के लिए किया जाता है एक्सेस टोकन. ये एक सत्र चर के समान व्यवहार करते हैं जिसे आप कुकी में स्टोर कर सकते हैं ताकि उपयोगकर्ता आपकी वेबसाइट पर लॉग इन रहे। अंतर केवल इतना है कि कई सेवाएं एक एक्सेस टोकन और सीक्रेट एक्सेस टोकन को वापस भेज देंगी। आपको सर्वर से किसी भी डेटा को खींचने के लिए इन दोनों की आवश्यकता है। एक उदाहरण अपनी वेबसाइट पर एक कॉपी को बचाने के लिए उपयोगकर्ता की प्रोफ़ाइल फ़ोटो का अनुरोध कर सकता है.
ट्विटर OAuth के लिए उदाहरण लाइब्रेरी
डेवलपर्स को अक्सर खरोंच से शुरू होने की संभावना नहीं होती है, इसलिए पहले से निर्मित पुस्तकालय में क्यों नहीं देखा जाता है? PHP के साथ काम करने पर यह हमारा समय और सिरदर्द से बचाएगा। आइए, ट्विटर एपीआई के शीर्ष पर एक बहुत ही सरल उदाहरण का निर्माण करें.
मैं GitHub पर Jaisen Mathai द्वारा ट्विटर Async की अत्यधिक अनुशंसा करता हूं। यह पूरी तरह से काम करता है और यहां तक कि वास्तव में कुछ सरल उदाहरण कोड प्रदान करता है जिन्हें हम देख सकते हैं। आप अभी के लिए .zip डाउनलोड कर सकते हैं, लेकिन इससे पहले कि हम कोड देखें, हमें ट्विटर से अपना ऐप आईडी प्राप्त करना होगा.
एक नया अनुप्रयोग पंजीकृत करना
ट्विटर देव केंद्र उन लोगों के लिए एक महान संसाधन है जो सिर्फ एपीआई पर शुरू हो रहे हैं। यह कुछ वर्षों के दौरान कई बार लिखा और फिर से लिखा गया है। जो पेज हम चाहते हैं, वह https://dev.twitter.com/apps/new है। यह आपको पहली बार में लॉग इन करने के लिए कहेगा, फिर आपको एक नए आवेदन के लिए कुछ क्रेडेंशियल्स दर्ज करना होगा.
ऐप का नाम और विवरण तब प्रदर्शित किया जाता है जब उपयोगकर्ता ट्विटर के साथ अधिकृत करता है। आपका वेब URL तीसरे पक्ष के पते को अलग करने के लिए भी महत्वपूर्ण है। लाइव डोमेन के साथ काम करना आसान होगा, हालांकि आप परीक्षण के लिए लोकलहोस्ट का उपयोग कर सकते हैं, लेकिन मैं इस पद्धति को प्रोत्साहित नहीं करता हूं। मुफ्त वेब होस्ट के लिए साइन अप करना और अपनी स्क्रिप्ट को वहां से चलाना उतना ही आसान है.
कॉलबैक URL को आपके आगंतुकों द्वारा प्राधिकरण को स्वीकार या अस्वीकार करने के बाद अंतिम गंतव्य के रूप में कहा जाता है। यह प्रोग्रामर के रूप में आपका काम है कि ट्विटर से प्रतिक्रिया पढ़ें और उसी के अनुसार एक संदेश आउटपुट करें। Async लाइब्रेरी में हमें पहले ही कुछ क्रेडेंशियल्स मिल गए हैं, लेकिन कॉलबैक URL बाहरी ब्लॉग पर निर्दिष्ट किए जाने के बाद से वे काम नहीं करेंगे। यदि आप पूरी तरह से जुड़े OAuth वेब ऐप के निर्माण में रुचि रखते हैं तो मैंने नीचे कुछ विस्तृत ट्यूटोरियल शामिल किए हैं.
कोड देखें
यदि आप एक दूरस्थ वेब होस्ट का उपयोग कर रहे हैं, तो आप Async लाइब्रेरीज़ को अनज़िप करना चाहते हैं और उन्हें एक नई निर्देशिका में अपलोड कर सकते हैं। अन्यथा आप केवल स्रोत कोड देख सकते हैं। यह संभावना है कि हम नए कनेक्शन को वैसे भी खींचने में सक्षम नहीं होंगे। लेकिन स्रोत कोड अपलोड करने और संपादन के साथ हाथों का अनुभव हमेशा सीखने की प्रक्रिया है.
रूट डायरेक्टरी में आपको नाम की स्क्रिप्ट मिलेगी simpleTest.php. अंदर OAuth पुस्तकालयों से संबंधित PHP कोड की एक पूरी बहुत कुछ है। मैं आपके लिए यह सब एक साथ नहीं रख पाऊंगा, लेकिन हमें उल्लेखनीय विवरणों को इंगित करने के लिए एक महत्वपूर्ण कोड ब्लॉक देखना चाहिए.
टोकन और गुप्त टोकन आईडी के साथ उपभोक्ता कुंजी और गुप्त आईडी के लिए 4 बहुत महत्वपूर्ण चर हैं। सभी एपीआई सेवाओं को 4 के इस सेट की आवश्यकता नहीं होगी, लेकिन यह उचित OAuth प्रोटोकॉल है। EpiTwitter वर्ग को सभी 4 मानों को पैरामीटर की आवश्यकता होती है और कनेक्शन URL को ट्विटर में उत्पन्न करता है.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
इस नए गतिशील URL से आप अपने उपयोगकर्ताओं के लिए एक लॉगिन बटन बना सकते हैं। यह उन्हें पहले एक सुरक्षित ट्विटर एपीआई पेज पर ले जाएगा जहां उपयोगकर्ता आपके कनेक्शन को स्वीकार या अस्वीकार करता है। उनकी पसंद के बावजूद उपयोगकर्ता तब आपके ऐप कॉलबैक URL पर फिर से निर्देशित हो जाता है। पूरे खुले प्रोटोकॉल में एक बहुत ही साफ दृष्टिकोण है जो तेजी से विकास के लिए अनुमति देता है, विशेष रूप से व्यावहारिक रूप से हर भाषा में उपलब्ध पुस्तकालयों के साथ.
सम्बंधित लिंक्स
- hueniverse oauth 1.0 गाइड
- कोमल OAuth का परिचय
- OAuth FAQ
- फेसबुक ऑथेंटिकेशन देव गाइड
- सरल ट्विटर OAuth साइनिन
- कोको ऑब्जेक्टिव-सी में ट्विटर के साथ OAuth का उपयोग करना
- OAuth इंटेलिजेंटली रेल में उपभोग करना
निष्कर्ष
उम्मीद है कि OAuth में यह परिचय आपको प्रोटोकॉल पर ऐप्स बनाने में रुचि रखता है। कई डेवलपर्स सिर्फ इस तरह के समाधान के लिए प्रयास कर रहे हैं, और OAuth 2.0 परस्पर सामाजिक नेटवर्क का भविष्य हो सकता है। मैं पहले से ही अपने ट्विटर खाते में दो दर्जन से अधिक कनेक्शनों का उपयोग करता हूं और वास्तव में डेवलपर के प्रलेखन से प्रभावित हूं!
स्पष्ट रूप से इस विषय पर बहुत कुछ कहा जा सकता है। यह ऐसा कुछ नहीं है जिसे आप एक बैठक में पूरी तरह से संसाधित करने में सक्षम हो सकते हैं। अधिक OAuth समाधान के लिए नेट के आसपास ब्राउज़ करें और नीचे चर्चा क्षेत्र में अपने विचारों को बताएं.