सितंबर 2008
सुविधा के बारे में जानकारी
यह डेवलपर के लिए एक रोमांचक समय है. हम वेब पर अपनाए जाने वाले कई ओपन स्टैंडर्ड को देखना शुरू कर रहे हैं और जैसा कि आप जानते हैं, Google हमेशा से स्टैंडर्ड का बहुत बड़ा प्रशंसक रहा है और ओपन सोर्स समुदाय को बढ़ावा दे रहा है.
हाल ही में, सभी Google डेटा API ने OAuth का इस्तेमाल किया है. ओपन प्रोटोकॉल का मकसद डेस्कटॉप और वेब ऐप्लिकेशन के लिए उपयोगकर्ता के निजी डेटा को ऐक्सेस करने के तरीके को मानक बनाना है. OAuth की मदद से, स्टैंडर्ड और सुरक्षित तरीके से एपीआई की पुष्टि की जा सकती है. प्रोग्रामर के रूप में, हमें जहां भी संभव हो वहां कोड का दोबारा इस्तेमाल करना सिखाया जाता है. OAuth से, डेवलपर को ऐसे कोड की संख्या कम करने में डेवलपर को मदद मिलेगी जो वे लिखेंगे. साथ ही, ऐसे टूल बनाना भी आसान होगा जो कई तरह की कंपनियों के लिए, कई सेवाओं के साथ काम करते हों.
दर्शक
इस लेख में यह माना गया है कि आपको एक या उससे ज़्यादा Google Data API के बारे में जानकारी है, लेकिन ज़रूरी नहीं है कि आप OAuth के कॉन्सेप्ट को भी समझें. अगर आप OAuth शुरू करने जा रहे हैं या यह जानना चाहते हैं, तो इंतज़ार न करें. इस लेख में, कॉन्सेप्ट की बुनियादी जानकारी दी गई है. हम Google से OAuth लागू करने के बारे में भी बात करेंगे.
यह दस्तावेज़ उन डेवलपर के लिए भी है जो AuthSub के उपयोग से परिचित हैं, विशेष रूप से बेहतर सुरक्षा के साथ पंजीकृत मोड में. आगे बढ़ते हुए, हम दोनों प्रोटोकॉल के बीच समानताओं और अंतरों को हाइलाइट करने की कोशिश करेंगे. अगर आपके पास ऐसे ऐप्लिकेशन हैं जो AuthSub का इस्तेमाल करते हैं, तो आप इस जानकारी का इस्तेमाल OAuth पर माइग्रेट करने के लिए कर सकते हैं, जो एक ज़्यादा खुला, आधुनिक प्रोटोकॉल है.
शब्दावली
OAuth को समझना, उसकी शब्दावली को समझना है. OAuth के बारे में जानकारी और Google का वेब ऐप्लिकेशन के लिए OAuth की पुष्टि करना दस्तावेज़ काफ़ी हद तक कुछ परिभाषाओं पर निर्भर करता है. इसलिए, हमें बताएं कि Google की OAuth लागू करने के मामले में हर परिभाषा का क्या मतलब होता है.
- "OAuth डांस"
OAuth की पुष्टि करने/अनुमति देने की पूरी प्रोसेस के बारे में बताने के लिए, यह अनौपचारिक शब्द है.
- (OAuth) अनुरोध के टोकन
एक शुरुआती टोकन, जिससे Google को पता चलता है कि आपका ऐप्लिकेशन, किसी एक Google डेटा एपीआई का ऐक्सेस मांग रहा है. OAuth डांस का दूसरा चरण, उपयोगकर्ता को मैन्युअल तरीके से अपने डेटा का ऐक्सेस देना है. यह चरण पूरा होने पर, अनुरोध टोकन को अनुमति मिल जाती है.
- (OAuth) ऐक्सेस टोकन
डांस का आखिरी चरण, ऐक्सेस टोकन के लिए आधिकारिक अनुरोध टोकन की अदला-बदली करना है. आपके ऐप्लिकेशन में यह टोकन आने के बाद, उपयोगकर्ता को OAuth डांस के बारे में फिर से जानने की ज़रूरत नहीं होगी. यह तब तक शुरू नहीं होगा, जब तक कि टोकन निरस्त न कर दिया जाए.
AuthSub की समानता:
OAuth ऐक्सेस टोकन और सुरक्षित AuthSub सेशन का टोकन एक ही होता है. - (OAuth) एंडपॉइंट
किसी ऐप्लिकेशन की पुष्टि करने और ऐक्सेस टोकन पाने के लिए, ये यूआरआई ज़रूरी होते हैं. कुल तीन चरण हैं - OAuth प्रोसेस के हर चरण के लिए एक. Google के OAuth एंडपॉइंट हैं:
अनुरोध टोकन पाएं: https://www.google.com/accounts/OAuthGetRequestToken
अनुरोध टोकन की पुष्टि करें: https://www.google.com/accounts/OAuthAuthorizeToken
ऐक्सेस टोकन में अपग्रेड करने के लिए: https://www.google.com/accounts/OAuthGetAccessToken
AuthSub की समानता:
ऐक्सेस टोकन के लिए अनुमति पा चुके अनुरोध टोकन की जगह लेने का मतलब,https://www.google.com/accounts/AuthSubRequestToken
औरhttps://www.google.com/accounts/AuthSubSessionToken
पर लंबे समय तक चलने वाले सेशन टोकन के लिए, एक बार इस्तेमाल होने वाले AuthSub टोकन को अपग्रेड करने जैसा है. अंतर सिर्फ़ यह है कि AuthSub में शुरुआती अनुरोध टोकन का सिद्धांत नहीं है. इसके बजाय, उपयोगकर्ताAuthSubRequestToken
की पुष्टि करने वाले पेज से टोकन की प्रोसेस शुरू करता है. - (OAuth) सेवा देने वाली कंपनी
Google Data API के मामले में, यह कंपनी Google है. आम तौर पर, सेवा देने वाली कंपनी का इस्तेमाल उस वेबसाइट या वेब सेवा के बारे में बताने के लिए किया जाता है जो OAuth एंडपॉइंट की सुविधा देती है. OAuth सेवा देने वाले का एक और उदाहरण है: Myspace.
- (OAuth) उपभोक्ता
उपयोगकर्ता के डेटा को ऐक्सेस करने का अनुरोध करने वाला प्रोग्राम (यानी आपका ऐप्लिकेशन). OAuth प्रोटोकॉल का इस्तेमाल आसानी से किया जा सकता है. इससे, अलग-अलग तरह के क्लाइंट (वेब, इंस्टॉल किए गए, डेस्कटॉप, मोबाइल) के लिए, कई तरह के प्रोटोकॉल बनाए जा सकते हैं.
ध्यान दें: OAuth प्रोटोकॉल, डेस्कटॉप/इंस्टॉल किए गए ऐप्लिकेशन के इस्तेमाल के उदाहरण के साथ काम करता है. हालांकि, Google सिर्फ़ वेब ऐप्लिकेशन के लिए, OAuth के साथ काम करता है.
शुरू करें
रजिस्ट्रेशन
Google Data API के साथ OAuth का इस्तेमाल करने से पहले, कुछ सेट अप करना ज़रूरी होता है. सभी OAuth अनुरोधों पर डिजिटल हस्ताक्षर करना ज़रूरी है. इसलिए, आपको सबसे पहले अपना डोमेन रजिस्टर करना होगा और Google पर एक सार्वजनिक सर्टिफ़िकेट अपलोड करना होगा. ऐसा करने के बारे में ज़्यादा जानकारी के लिए, वेब-आधारित ऐप्लिकेशन के लिए रजिस्ट्रेशन और रजिस्टर किए गए मोड में इस्तेमाल करने के लिए कुंजी और सर्टिफ़िकेट जनरेट करना देखें.
हस्ताक्षर के अनुरोध
डोमेन रजिस्टर होने पर, आप साइन इन करने के लिए तैयार हो जाते हैं. OAuth की सबसे मुश्किल कॉन्सेप्ट में, oauth_signature
को सिग्नेचर बेस स्ट्रिंग के तौर पर शामिल करने का तरीका बताया गया है. मूल स्ट्रिंग,
वह डेटा है जिसे आपने RSA_SHA1
का इस्तेमाल करके, अपनी निजी कुंजी से साइन किया है. इस वैल्यू को oauth_signature
के लिए सेट किया जाता है.
अनुरोध का उदाहरण
http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime
पर उपयोगकर्ता के Google Calendar की सूची GET
बेस स्ट्रिंग फ़ॉर्मैट | base_string = http-method&base-http-request-url&normalized-string-of-oauth_parameters |
---|---|
बेस स्ट्रिंग का उदाहरण | GET&http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull&oauth_consumer_key%3Dexample.com%26oauth_nonce%3D4572616e48616d6d%26oauth_signature_method%3DRSA-SHA1%26oauth_timestamp%3D137131200%26oauth_token%3D1%252Fab3cd9j4ks73hf7g%26oauth_version%3D1.0%26orderby%3Dstarttime |
एचटीटीपी अनुरोध का उदाहरण |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: OAuth oauth_token="1%2Fab3cd9j4ks73hf7g", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9AvZbTSMK%2FPY%3D...", oauth_consumer_key="example.com", oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d", oauth_version="1.0" |
ध्यान दें: यह सिर्फ़ प्रतिनिधित्व करने के लिए है. oauth_signature
ज़्यादा लंबा हो जाएगा.
बेस स्ट्रिंग पर नोट:
orderby=starttime
क्वेरी पैरामीटर को लेक्सिकोग्राफ़िक बाइट वैल्यू ऑर्डर में बाकीoauth_*
पैरामीटर के साथ क्रम से लगाया जाता है.- इस स्ट्रिंग में '?' वर्ण भी नहीं है.
base-http-request-url
वाले हिस्से में सिर्फ़ यूआरएल के कोड में शामिल बेस यूआरएलhttp%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull
होता है.oauth_token
, डबल यूआरएल के लिए कोड में बदला गया है.
Authorization
हेडर पर नोट:
Authorization
पैरामीटर मेंoauth_*
पैरामीटर का क्रम मायने नहीं रखता.- हेडर में बेस स्ट्रिंग की तरह
orderby=starttime
शामिल नहीं है. उस क्वेरी पैरामीटर को अनुरोध यूआरएल के हिस्से के रूप में बनाए रखा जाता है.
OAuth का इस्तेमाल करके अनुरोधों पर हस्ताक्षर करने के बारे में ज़्यादा जानकारी के लिए, OAuth अनुरोधों पर हस्ताक्षर करना देखें.
AuthSub से अंतर:
तुलना के लिए, सुरक्षित AuthSub का इस्तेमाल करने वाले उदाहरण यहां दिए गए हैं:
बेस स्ट्रिंग फ़ॉर्मैट | base_string = http-method http-request-URL timestamp nonce |
---|---|
बेस स्ट्रिंग का उदाहरण |
GET http%3A%2F%2Fwww.google.com%2Fcalendar%2Ffeeds%2Fdefault%2Fallcalendars%2Ffull%3Forderby%3Dstarttime 137131200 4572616e48616d6d |
एचटीटीपी अनुरोध का उदाहरण |
GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime HTTP/1.1 Host: http://www.google.com Content-Type: application/atom+xml Authorization: AuthSub token="GD32CMCL25aZ-v____8B" data="GET http://www.google.com/calendar/feeds/default/allcalendars/full?orderby=starttime 137131200 4572616e48616d6d" sig="MCwCFrV93K4agg==..." sigalg="rsa-sha1" |
AuthSub का इस्तेमाल करके अनुरोध करने पर और जानकारी के लिए, AuthSub के अनुरोध पर हस्ताक्षर करना देखें.
OAuth प्लेग्राउंड टूल
मकसद
कुछ उपयोगकर्ताओं ने सुझाव दिया है कि OAuth में बहुत कुछ सीखा जा सकता है. Google के अन्य पुष्टि करने वाले एपीआई की तुलना में मैं सहमत हूं. OAuth का फ़ायदा तब दिखेगा, जब आप ऐप्लिकेशन के दायरे को अन्य (Google से बाहर की) सेवाओं का इस्तेमाल करने के लिए बड़ा करेंगे. पुष्टि करने के लिए, अलग-अलग सेवा देने वालों और उनके एपीआई पर काम करने वाला एक कोड लिखना मेरे लिए काफ़ी फ़ायदेमंद साबित होगा. प्रोटोकॉल सीखने के लिए, आपको बाद में धन्यवाद देना होगा.
OAuth प्लेग्राउंड एक ऐसा टूल है जिसे मैंने OAuth समस्याओं को ठीक करने में डेवलपर की मदद के लिए बनाया है. समस्याओं को डीबग करने के लिए, Playground का इस्तेमाल किया जा सकता है. साथ ही, यह भी देखा जा सकता है कि डेटा डालने का तरीका क्या है या Google Data API का इस्तेमाल कैसे किया जा सकता है.
यह कैसे काम करता है?
- इससे, OAuth के इस्तेमाल की पुष्टि करने वाले फ़्लो के बारे में पता चलता है: इसमें अनुरोध टोकन फ़ेच करना, टोकन की पुष्टि करना, और उसे ऐक्सेस टोकन में अपग्रेड करना शामिल है.
- यह हर अनुरोध के लिए, हस्ताक्षर के लिए सही बेस स्ट्रिंग दिखाता है.
- हर अनुरोध के लिए, सही
Authorization
हेडर दिखाता है. - यह दिखाता है कि पुष्टि किए गए Google डेटा फ़ीड के साथ इंटरैक्ट करने के लिए,
oauth_token
का इस्तेमाल कैसे किया जाता है. आपके पासGET
/POST
/PUT
/DELETE
का डेटा उपलब्ध है. - पुष्टि किए गए फ़ीड को सीधे अपने ब्राउज़र में देखें.
- इससे, आपको
oauth_consumer_key
(रजिस्टर किए गए डोमेन) और निजी कुंजी की जांच करने की सुविधा मिलती है. - जानें कि आपके
oauth_token
में Google डेटा फ़ीड की कौनसी सेवाएं उपलब्ध हैं.
डेमो रन
पहला चरण: अपने दायरे चुननापहले, एक या ज़्यादा दायरे चुनकर तय करें कि आपको कौनसे एपीआई इस्तेमाल करने हैं. इस जानकारी में, मैंने एक टोकन का अनुरोध किया है जो Blogger और Google Contacts के साथ काम करेगा. AuthSub की समानता: |
|
दूसरा चरण: OAuth पैरामीटर और सेटिंग में बदलाव करनाफ़िलहाल, "OAuth पैरामीटर में बदलाव करें" बॉक्स में किसी भी सेटिंग में बदलाव न करें. बाद में, आप ध्यान दें: सिर्फ़
AuthSub से अंतर: |
|
चरण 3-5: ऐक्सेस टोकन पानाOAuth ऐक्सेस टोकन पाने के तीन चरण हैं. सबसे पहले, अनुरोध टोकन पाएं. इससे Google को पता चलता है कि आपका ऐप्लिकेशन OAuth डांस शुरू कर रहा है. पहले, "टोकन पाएं" बॉक्स में "टोकन का अनुरोध करें" बटन पर क्लिक करें. कुछ फ़ील्ड में डेटा दिखेगा.
|
|
इसके बाद, "टोकन पाएं" बॉक्स में "अनुमति दें" बटन पर क्लिक करें. अनुमति देने वाले पेज पर, अनुरोध टोकन को अनुमति देने के लिए "ऐक्सेस दें" बटन पर क्लिक करें और OAuth खेल के मैदान पर रीडायरेक्ट करें. AuthSub की समानता: AuthSub से अंतर: सलाह: अगर आप वेब ऐप्लिकेशन पर कुछ लिख रहे हैं, तो |
|
आखिर में, "टोकन पाएं" बॉक्स में, "ऐक्सेस टोकन" बटन पर क्लिक करें. इस कार्रवाई से, अनुमति वाले अनुरोध का टोकन अपग्रेड हो जाएगा. लाल रंग का "ऐक्सेस टोकन" लेबल होता है. अगर आपको नया टोकन लाना है, तो OAuth डांस को फिर से शुरू करने के लिए, "फिर से शुरू करें" पर क्लिक करें. अब हम कुछ दिलचस्प कर सकते हैं! |
ऐक्सेस टोकन का इस्तेमाल करना
अब आप फ़ीड से क्वेरी करने, डेटा डालने, अपडेट करने या उसे मिटाने के लिए तैयार हैं. अपने वास्तविक डेटा के साथ काम करते समय कृपया इन अंतिम तीन HTTP विधियों को निष्पादित करते समय सावधानी बरतें!
सलाह: अपने ऐक्सेस टोकन के हिसाब से उपलब्ध फ़ीड देखने के लिए, "उपलब्ध फ़ीड" बटन पर क्लिक करें.
यहां उदाहरण के तौर पर एक क्वेरी दी गई है: GET http://www.blogger.com/feeds/1982051675575479214/posts/default?max-results=3
यह उदाहरण किसी ब्लॉग पर तीन से ज़्यादा पोस्ट नहीं दिखाता है. लौटाए गए फ़ीड/एंट्री को सीधे ब्राउज़र में देखने के लिए, सिंटैक्स हाइलाइट किए गए इलाके के नीचे "ब्राउज़र में देखें" लिंक पर क्लिक करें.
उदाहरण: पोस्ट को अपडेट करने का तरीका
- पोस्ट में rel="edit" के साथ
<link>
एलिमेंट को अपडेट करें. यह कुछ ऐसा दिखेगा:<link rel="edit" href="http://www.blogger.com/feeds/1982051675575479214/posts/default/8138973184593279875"/>
"Google डेटा फ़ीड डालें" इनपुट में href यूआरएल चिपकाएं.
- सिंटैक्स के हाइलाइट किए गए पैनल के सबसे ऊपर, "सादा देखें" पर क्लिक करके, मौजूदा एंट्री के एक्सएमएल को कॉपी करें. सिर्फ़ रिस्पॉन्स के मुख्य हिस्से को कॉपी करें, हेडर को नहीं.
- एचटीटीपी मेथड ड्रॉपडाउन को
PUT
में बदलें. - उस ड्रॉपडाउन के नीचे मौजूद "पोस्ट का डेटा डालें" पर क्लिक करें और पॉप-अप में
<entry>
एक्सएमएल चिपकाएं. - "निष्पादित करें" बटन पर क्लिक करें.
सर्वर 200 OK
में जवाब देगा.
सलाह: edit
लिंक को मैन्युअल तरीके से कॉपी करने के बजाय, 'सिंटैक्स हाइलाइट?' चेकबॉक्स से सही का निशान हटाएं. क्वेरी के बाद, आप एक्सएमएल रिस्पॉन्स बॉडी में मौजूद लिंक पर क्लिक कर पाएंगे.
नतीजा
ऐटमपब/ऐटम पब्लिशिंग प्रोटोकॉल (Google डेटा एपीआई में मौजूद प्रोटोकॉल) और OAuth जैसी टेक्नोलॉजी से वेब को आगे बढ़ाने में मदद मिलती है. जैसे-जैसे ज़्यादा से ज़्यादा साइटें इन मानकों को अपनाने लगती हैं, वैसे-वैसे डेवलपर सफल होते हैं. हत्यारा ऐप्लिकेशन बनाना अचानक मुश्किल हो जाता है.
अगर आपके पास OAuth Playground पर कोई सवाल या टिप्पणी है या Google API के साथ OAuth का इस्तेमाल किया जा रहा है, तो कृपया G Suite API और Marketplace API सहायता फ़ोरम में हमसे संपर्क करें.