शपथेद्वारे अधिकृतता म्हणजे काय? OAuth VKontakte: वैयक्तिक फायद्यासाठी वापरा. उदाहरण म्हणून एक साधा अनुप्रयोग वापरून OAuth कसे कार्य करते याचे प्रात्यक्षिक

विंडोजसाठी 20.02.2019
चेरचर

  1. विंडोजसाठी
  2. वापरकर्त्यास अधिकार प्रदान केले आहेत याची पुष्टी करण्यास सांगितले जाते.
  3. वापरकर्त्याने सहमती दर्शविल्यास, ब्राउझरला तुकड्यातील स्टब पृष्ठावर पुनर्निर्देशित केले जाईल (# नंतर) ज्याची URL जोडली आहे प्रवेश टोकन
  4. ऍप्लिकेशन पुनर्निर्देशनात अडथळा आणतो आणि प्राप्त करतो प्रवेश टोकनपृष्ठ पत्त्यावरून
या पर्यायासाठी ऍप्लिकेशनमध्ये ब्राउझर विंडो वाढवणे आवश्यक आहे, परंतु सर्व्हर भाग आणि आवश्यक नाही अतिरिक्त कॉलएक्सचेंजसाठी सर्व्हर-टू-सर्व्हर अधिकृतता कोडवर प्रवेश टोकन.
उदाहरण
लॉगिन पृष्ठासह ब्राउझर उघडा:
> /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 मिळवा > होस्ट: connect.mail.ru

वापरकर्त्याने परवानग्या दिल्यानंतर, मानक स्टब पृष्ठावर पुनर्निर्देशन होते, Mail.Ru साठी हे आहे connect.mail.ru/oauth/success.html:
< HTTP/1.1 302 Found < Location: http://connect.mail.ru/oauth/success.html#access_token=FJQbwq9&token_type=bearer& expires_in=86400&refresh_token=yaeFa0gu

ऍप्लिकेशनने शेवटचे पुनर्निर्देशन रोखले पाहिजे आणि पत्त्यावरून प्राप्त केले पाहिजे प्रवेश_टोकनआणि संरक्षित संसाधनांमध्ये प्रवेश करण्यासाठी त्याचा वापर करा.

लॉगिन आणि पासवर्डद्वारे अधिकृतता

लॉगिन आणि पासवर्डद्वारे अधिकृतता ही एक साधी POST विनंती आहे, परिणामी ती परत येते प्रवेश टोकन. ही योजना काही नवीन नाही, परंतु सामान्यतेच्या मानकांमध्ये समाविष्ट केली आहे आणि इतर अधिकृत पर्याय उपलब्ध नसतानाच वापरण्यासाठी शिफारस केली जाते.
उदाहरण
> पोस्ट /oauth/token HTTP/1.1 > होस्ट: connect.mail.ru > सामग्री-प्रकार: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& password= क्वार्टी< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
तपशीलात वर्णन

मागील अधिकृतता पुनर्संचयित करत आहे

सहसा, प्रवेश टोकनमर्यादित शेल्फ लाइफ आहे. हे उपयुक्त ठरू शकते, उदाहरणार्थ, जर ते प्रसारित केले गेले तर चॅनेल उघडा. वापरकर्त्याला कालबाह्य झाल्यानंतर लॉग इन करण्यास भाग पाडणे टाळण्यासाठी प्रवेश टोकन"आणि, वरील सर्व पर्यायांमध्ये, व्यतिरिक्त प्रवेश टोकन"कदाचित पुन्हा परत या टोकन रिफ्रेश करा. आपण ते मिळविण्यासाठी वापरू शकता प्रवेश टोकन HTTP विनंती वापरून, लॉगिन आणि पासवर्ड वापरून अधिकृततेप्रमाणेच.
उदाहरण
> पोस्ट /oauth/token HTTP/1.1 > होस्ट: connect.mail.ru > सामग्री-प्रकार: application/x-www-form-urlencoded > > grant_type=refresh_token&client_id=31337&client_secret=deadbeef&refresh_token=8xLOxBtZp8< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"Uu8oor1i", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"ohWo1ohr", < }

VKontakte वर दुर्भावनापूर्ण स्पॅम वितरित करण्याचे बरेच मार्ग आहेत. पण कीटक झोपत नाहीत, अधिकाधिक त्यांच्या डोक्यात येतात मनोरंजक कल्पना. आणि ते खूप उपयुक्त ठरले. फसवणूक करणाऱ्यांनी दुर्भावनायुक्त साइट्सबद्दल चेतावणी पृष्ठ बायपास करण्यासाठी ते वापरणे शिकले आहे.

आणि हे सर्व सुरू झाले जेव्हा एके दिवशी खालील संदेश माझ्या भिंतीवर दिसला:


उत्सुकतेपोटी, मी दुव्याचे अनुसरण केले आणि दुसऱ्या फिशिंग साइटवर पोहोचलो. पण दुवा स्वतःच मला विचित्र वाटला, तो असा दिसत होता (ASCII मधील अर्धे वर्ण):
vkontakte.ru/away.php ? करण्यासाठी=http%3A%2F%2FApi.vKontakte.Ru%2F%2Fo%2561u%2574%…

इथून मजा सुरू होते...
भागांमध्ये दुसरी लिंक पाहू:

प्रत्येक पॅरामीटरचा अर्थ काय आहे:

  • client_id - अर्जाचा आयडी ज्यासाठी अधिकृतता आवश्यक आहे;
  • redirect_uri - पत्ता ज्यावर ऍक्सेस_टोकन पाठवले जाईल (रीडायरेक्टद्वारे);
  • डिस्प्ले - ऑथोरायझेशन विंडोचा प्रकार (पेज, पॉपअप, टच आणि वॅप).
वास्तविक, redirect_uri मध्ये फिशिंग साइटचा पत्ता आहे. डिस्प्ले पॅरामीटरमध्ये त्रुटी असल्याने (त्यात "?390852" कचरा आहे), अधिकृतता विंडो प्रदर्शित झाली नाही, परंतु खालील पॅरामीटर्ससह फिशिंग साइटवर त्वरित पुनर्निर्देशित केली गेली: error=invalid_request&error_description=Invalid+display+passed

दुर्भावनापूर्ण व्हीकॉन्टाक्टे साइट्सच्या ब्लॅकलिस्टला बायपास करण्याचा हा संपूर्ण मुद्दा आहे. api.vk.com वरील संक्रमणाबद्दल फक्त एक सूचना दिसते. आणि संक्रमणाचा परिणाम म्हणून, आम्ही थेट काळ्या यादीत असलेल्या फिशिंग साइटवर जातो. तुम्ही vkontakte.ru/away.php?to=vgostivk.dyndns** या दुव्याचे अनुसरण करता तेव्हा:

असे झाले की, अधिकृतता आवश्यक असलेला अनुप्रयोग हॅक केलेल्या वापरकर्त्यावर लटकत होता:

आणि फिशिंग साइट स्वतःच मनोरंजकपणे डिझाइन केली गेली होती. डिझाइन, नेहमीप्रमाणे, संपर्क-शैलीचे होते आणि लॉग इन करण्यास सांगितले. मी यादृच्छिक ईमेल आणि पासवर्ड वापरून लॉग इन केले आणि मी बनावट गिळले. पुढे काय झाले ते मुख्य पृष्ठावर "पाव्हेल डुरोव" कडून आलेली बातमी अधिक मनोरंजक होती:

"वैयक्तिक काउंटर तयार करा" बटणावर क्लिक केल्यानंतर, एक अद्भुत प्रगती बार आला. मग तुम्हाला तुमचा नंबर सूचित करण्यास आणि एसएमएस पाठवण्यास सांगितले गेले:

सिद्धांततः, यशस्वी "सक्रियकरण" नंतर ते activ.php पृष्ठावर पुनर्निर्देशित केले पाहिजे, परंतु मी तेथे पोहोचू शकलो नाही. फिशिंग साइटच्या JS स्क्रिप्टचे उतारे:

...
जर (req.status == 200) (
// स्थिती 200 असल्यास (ओके) - वापरकर्त्यास प्रतिसाद द्या
जर (req.responseText == "ठीक आहे" ) (
//statusElem.innerHTML = "सर्व काही गुंजत आहे!";
get_activation();
}
जर (req.responseText == "नाही" ) (statusElem.innerHTML = "अवैध सक्रियकरण कोड";}
//statusElem.innerHTML = "सर्व्हर प्रतिसाद: "+req.responseText;
...
कार्य get_activation() (
दस्तऐवज .location="activ.php" ;
}

* हा सोर्स कोड सोर्स कोड हायलाइटरने हायलाइट केला होता.


तळ ओळ: फसवणूक करणारे OAuth 2.0 चेतावणी बायपास करण्यासाठी, पासवर्ड मिळवण्यासाठी आणि वापरतात वापरकर्ता ईमेल, आणि ते फसवण्याचा देखील प्रयत्न करत आहेत एसएमएस पाठवत आहे(बहुधा सदस्यता प्रणाली वापरून).

याचा परिणाम म्हणून क्लायंट अर्ज AdWords API वापरून पत्त्याशिवाय तुमच्या AdWords खात्यात प्रवेश करू शकतो ईमेलआणि वापरकर्ता पासवर्ड.

OAuth2 क्रेडेन्शियल तयार करत आहे

OAuth2 क्रेडेंशियल तयार करण्यासाठी, खालील पायऱ्या फॉलो करा.

अर्जाचा प्रकार परिभाषित करणे

प्रथम, आपण निश्चित करणे आवश्यक आहे अर्ज प्रकार, जे तुम्हाला तयार करायचे आहे. AdWords API मध्ये दोन प्रकारचे अनुप्रयोग आहेत:

  • स्थापित करण्यायोग्य अनुप्रयोग(शिफारस केलेले);
  • वेब अनुप्रयोग.

खालील तक्त्याचा वापर करून, निश्चित करा इच्छित प्रकारअनुप्रयोग

काय निवडायचे परिस्थिती
स्थापित करण्यायोग्य अनुप्रयोग(शिफारस केलेले)
  • तुम्ही सर्व AdWords खाती एका व्यवस्थापक खात्याने व्यवस्थापित करता शीर्ष स्तर.
  • तुम्ही नुकतीच सुरुवात करत आहात की पटकन सुरुवात करू इच्छिता?
  • तुमचा अर्ज अनेक वापरकर्त्यांसह AdWords खात्यांच्या एका संचासह कार्य करेल.
वेब अनुप्रयोग
  • आपण प्रदान करण्यासाठी प्रमाणीकृत करू इच्छिता भिन्न वापरकर्ते AdWords खात्याच्या डेटाचे वेगवेगळे प्रवेश अधिकार.
  • तुम्हाला क्रेडेन्शियलचे एकाधिक संच तयार करावे लागतील, उदाहरणार्थ तृतीय-पक्ष खाती व्यवस्थापित करण्यासाठी.
  • तुमच्या ॲप्लिकेशनला कॉलबॅक URL आवश्यक आहेत जे इंस्टॉल केलेल्या ऍप्लिकेशन्समध्ये समर्थित नाहीत.
लक्ष द्या!तुम्ही वेब ॲप्लिकेशन विकसित करत असलात तरीही, तुम्ही कोणता ॲप्लिकेशन इन्स्टॉल करायचा ते निवडू शकता. टोकन जारी केल्यानंतर कॉलबॅक करणे आवश्यक आहे की नाही हा मुख्य फरक आहे. उदाहरणार्थ, तुमची सर्व AdWords खाती व्यवस्थापित करण्यासाठी तुम्ही एक उच्च-स्तरीय व्यवस्थापक खाते वापरत असल्यास, क्लायंट अनुप्रयोग इंटरनेटवर प्रवेश करण्यायोग्य असला तरीही, तुम्ही स्थापित केलेला अनुप्रयोग नोंदणीकृत असणे आवश्यक आहे. नोंद.खाली चर्चा केली आहे. आपल्याला वैशिष्ट्यांची आवश्यकता नसल्यास सेवा खाते, आम्ही स्थापित किंवा वेब अनुप्रयोगासाठी अधिकृतता प्रक्रिया वापरण्याची जोरदार शिफारस करतो.

क्लायंट आयडी आणि गुप्त कोड तयार करणे

एकदा तुम्ही तुमचा अर्ज प्रकार निश्चित केल्यानंतर, खालील योग्य टॅबवर क्लिक करा आणि आयडी तयार करण्यासाठी सूचनांचे अनुसरण करा आणि गुप्त कोडग्राहक

स्थापित करण्यायोग्य अनुप्रयोग

  1. उघडा
  2. एक प्रकल्प तयार करा तयार करा.
  3. क्रेडेन्शियल्स तयार करा, आणि मग - OAuth क्लायंट आयडी.
  4. जतन करा
  5. विभागात अर्जाचा प्रकारनिवडा इतर प्रकारआणि आवश्यक माहिती प्रदान करा.
  6. क्लिक करा तयार करा.
  7. ओळखकर्ताआणि गुप्त की
वेब अनुप्रयोग
  1. उघडा
  2. प्रोजेक्ट्स ड्रॉप-डाउन मेनूमधून, निवडा एक प्रकल्प तयार करा, नंतर प्रकल्पाचे नाव निर्दिष्ट करा आणि आवश्यक असल्यास त्याचा आयडी बदला, नंतर बटणावर क्लिक करा तयार करा.
  3. क्रेडेन्शियल पृष्ठावर, निवडा क्रेडेन्शियल्स तयार करा, आणि मग - OAuth क्लायंट आयडी.
  4. तुम्हाला उत्पादनाचे नाव देण्यास सांगितले जाऊ शकते. या प्रकरणात, क्लिक करा प्रवेश विनंती विंडो सानुकूलित करा, विनंती केलेली माहिती प्रविष्ट करा आणि क्लिक करा जतन कराक्रेडेन्शियल्स स्क्रीनवर परत जाण्यासाठी.
  5. विभागात अर्जाचा प्रकारनिवडा वेब अनुप्रयोग. JavaScript स्रोत निर्दिष्ट करण्यासाठी आणि/किंवा URIs पुनर्निर्देशित करण्यासाठी सूचनांचे अनुसरण करा.
  6. क्लिक करा तयार करा.
  7. दिसत असलेल्या पृष्ठावर, कॉपी करा ओळखकर्ताआणि गुप्त कीक्लायंट - क्लायंट लायब्ररी सेट करताना तुम्हाला त्यांची आवश्यकता असेल.

तुमच्या भाषेच्या क्लायंट लायब्ररीसह OAuth2 क्रेडेन्शियल्सचा वापर कॉन्फिगर करण्यासाठी खालील सूचनांचे अनुसरण करा.

नोंद.तुम्ही आमच्या क्लायंट लायब्ररींपैकी एक न वापरण्याचे निवडल्यास, तुम्हाला स्वतःसाठी किंवा स्वतःसाठी प्रक्रिया लागू करणे आवश्यक आहे.

OAuth2 खेळाचे मैदान

OAuth2 क्रेडेन्शियल तयार करण्यासाठी पर्यायी पर्याय वापरणे आहे OAuth2 खेळाचे मैदान. Google API कन्सोलसह एकत्रित, ही प्रणाली तुम्हाला OAuth2 टोकन स्वतः तयार करण्याची परवानगी देते.

OAuth2 प्लेग्राउंड सिस्टम अशा वापरकर्त्यांसाठी डिझाइन केले आहे ज्यांना फक्त खात्यांमध्ये प्रवेश आवश्यक आहे एकव्यवस्थापक खाते किंवा AdWords वापरकर्ता. तुम्हाला एकाधिक वापरकर्त्यांसाठी क्रेडेन्शियल्ससाठी सूचित करण्याची आवश्यकता असल्यास, वर वर्णन केल्याप्रमाणे क्लायंट लायब्ररी वापरणे चांगले आहे.

सेटिंग्ज

चेतावणी.वापरण्यासाठी OAuth2 खेळाचे मैदान, आपण तयार करणे आवश्यक आहे क्लायंट आयडीसाठी . या एकमेवएक प्रकारचा अनुप्रयोग जो OAuth2 प्लेग्राउंडसह कार्य करतो. वरील विभागात अधिक वाचा.

क्लायंट आयडी आणि गुप्त की कशी मिळवायची

  1. उघडा
  2. ड्रॉप-डाउन मेनूमधून, निवडा विद्यमान प्रकल्पकिंवा नवीन तयार करा.
  3. क्रेडेन्शियल पृष्ठावर, निवडा क्रेडेन्शियल्स तयार करा, आणि मग - OAuth क्लायंट आयडी.
  4. विभागात अर्जाचा प्रकारनिवडा वेब अनुप्रयोग.
  5. विभागात ॲड पुढील ओळ: https://site/oauthplayground
  6. क्लिक करा तयार करा.
  7. ते लिहून ठेवा ओळखकर्ताआणि गुप्त कीदिसणाऱ्या पृष्ठावर सूचित केलेले ग्राहक.

पुढील चरणात तुम्हाला त्यांची आवश्यकता असेल.

चेतावणी.टोकन कसे तयार करावे कशावरून Google खाते

तुम्ही तुमच्या ब्राउझरमध्ये साइन इन केले आहे, तुम्ही तयार केलेल्या OAuth2 क्रेडेंशियलचा वापर करून तुम्ही कोणत्या AdWords खात्यांमध्ये प्रवेश करू शकता यावर ते अवलंबून आहे. गुप्त मोडमध्ये किंवा तुमच्या Google खात्यामध्ये साइन इन न करता या पायऱ्या पूर्ण करणे अधिक चांगले असू शकते. तुम्हाला क्लायंट आयडी आणि सिक्रेट की मिळाल्यावर तुम्ही ज्या खात्यात होता त्यापेक्षा वेगळी क्रेडेन्शियल्स वापरावी लागण्याची शक्यता आहे.

क्लायंट आयडी वरून OAuth2 प्लेग्राउंड कसे काढायचे आपल्याकडे आधीपासूनच असल्यानेटोकन रिफ्रेश करा

  1. , तुम्हाला यापुढे तुमच्या निराकरण केलेले पुनर्निर्देशन URI म्हणून OAuth2 प्लेग्राउंड वापरण्याची आवश्यकता नाही. ही प्रणाली सूचीमधून काढून टाकण्यासाठी, या चरणांचे अनुसरण करा:
  2. वर जा.
  3. ड्रॉप-डाउन मेनूमधून तुमचा प्रकल्प निवडा.
  4. फील्डमधून https://site/oauthplayground काढा अनुमत पुनर्निर्देशित URI. कृपया लक्षात ठेवा की आपण किमान सोडले पाहिजे एक URI पुनर्निर्देशित करा.
  5. क्लिक करा जतन करा.

त्यामुळे तुमच्याकडे तुमची OAuth क्रेडेन्शियल आहेत. तुम्ही आता AdWords API साठी क्वेरी करू शकता आणि आवश्यक क्लायंट लायब्ररीसाठी वापरू शकता.

OAuth2 सेवा खाती

हा विभाग सेवा खाती वापरून AdWords API मध्ये प्रवेश कसा करायचा याचे वर्णन करतो.

सेवा खाते हे एक खाते आहे जे अनुप्रयोगाशी संबंधित आहे, वेगळे नाही. अंतिम वापरकर्ता. सेवा खाती वेब अनुप्रयोग आणि Google सेवा यांच्यातील परस्परसंवाद प्रदान करतात. तुमचा ॲप्लिकेशन सेवा खात्याच्या वतीने API ला वापरकर्त्यांना थेट सहभागी न करता कॉल करतो.

AdWords API संपूर्ण G Suite डोमेनवर सेवा खाते प्रवेशास अनुमती देते.

सेवा खाते OAuth2 प्रक्रिया लागू करते, जी वापरकर्त्याला अधिकृत करण्याऐवजी फक्त तुमच्या अनुप्रयोगासाठी प्रवेशयोग्य असलेली की फाइल वापरते.

सेवा खाती वापरल्याने दोन महत्त्वपूर्ण फायदे मिळतात:

  • वर ऍप्लिकेशन ऍक्सेस अधिकृत करत आहे Google APIसेटअप टप्प्यावर चालते. हे इतर OAuth2 प्रवाहांमध्ये वापरकर्त्याच्या हस्तक्षेपाची किंवा कॅशिंग टोकन्सची आवश्यकता टाळते.
  • अनुप्रयोगातील इतर वापरकर्त्यांची तोतयागिरी, आवश्यक असल्यास, OAuth2 मंजुरी प्रक्रियेचा भाग म्हणून केली जाते.
नोंद. आपण वापरत नसल्यास विशेष कार्येडोमेन, जसे की तोतयागिरी, सेवा खात्यांऐवजी, साठी प्रक्रिया वापरण्याची अत्यंत शिफारस केली जाते. OAuth2 इंस्टॉल आणि वेब ऍप्लिकेशन प्रक्रियेचा भाग म्हणून, वापरकर्त्याचा सहभाग फक्त एकदाच आवश्यक आहे - खात्यात प्रवेश मंजूर करताना.

सेवा खात्यांसाठी पर्यायी

सेवा खाती प्रदान करण्यासाठी मोठ्या प्रमाणावर वापरली जातात सॉफ्टवेअर प्रवेशवापरकर्त्याच्या हस्तक्षेपाशिवाय OAuth2 प्रोटोकॉलद्वारे API वर.

तथापि, AdWords API सह कार्य करण्यासाठी अशी खाती सेट करणे सोपे नाही. एक सोपा पर्यायकायम रिफ्रेश टोकनसह आहे. हा दृष्टिकोन अनुप्रयोगास कधीही नवीन प्रवेश टोकन्सची विनंती करण्यास अनुमती देतो.

या प्रक्रियेचा एक भाग म्हणून, तुम्हाला वर वर्णन केल्याप्रमाणे क्लायंट लायब्ररीद्वारे अर्ज अधिकृतता कॉन्फिगर करणे आवश्यक आहे. टोकन कालबाह्य झाल्यामुळे हे फक्त एकदाच करणे आवश्यक आहे Google अद्यतने OAuth2 अमर्यादित आहे.

आवश्यकता

  • तुमच्या मालकीचे G Suite डोमेन, जसे की mydomain.com किंवा mybusiness.com.
  • AdWords API विकसक टोकन आणि प्राधान्याने चाचणी खाते.
  • वापरल्या जाणाऱ्या भाषेसाठी.

क्लायंट खात्यासाठी प्रवेश सेट करत आहे

प्रथम, तुम्हाला Google API कन्सोलमध्ये सेवा खाते की तयार करण्याची आवश्यकता आहे.

  1. तुमच्या G Suite खात्यात साइन इन करा, उघडा.
  2. प्रोजेक्ट्स ड्रॉप-डाउन मेनूमधून, निवडा एक प्रकल्प तयार करा, नंतर आवश्यक माहिती प्रदान करा आणि बटणावर क्लिक करा तयार करा. नवीन प्रकल्पसक्रिय सूचीमध्ये दिसून येईल.
  3. डावीकडील मेनूमध्ये वरचा कोपरानिवडा IAM आणि प्रशासन, आणि मग - सेवा खातीडावीकडील मेनूमध्ये.
  4. क्लिक करा सेवा खाते तयार करापृष्ठाच्या शीर्षस्थानी.
  5. सेवा खात्याचे नाव प्रविष्ट करा.
  6. बॉक्स चेक करा नवीन खाजगी की तयार कराआणि JSON की प्रकार निवडा.
  7. बॉक्स चेक करा तुमच्या G Suite डोमेनमध्ये डेटा ॲक्सेस डेलिगेशन सुरू कराआणि प्रवेश विनंती विंडोसाठी उत्पादनाचे नाव प्रदान करा.
  8. क्लिक करा तयार करा. JSON की फाइल डाउनलोड करणे सुरू होईल. फाइल सुरक्षित ठिकाणी सेव्ह करा जिथे फक्त तुम्हाला प्रवेश आहे.
  9. पानावर सेवा खातीएक नवीन सेवा खाते दिसेल.
नोंद. कारण वापरकर्ता तोतयागिरी नियंत्रित केली जाऊ शकते फक्तडोमेन स्तरावर, सेवा खाती वापरण्यासाठी आणि सोबत मंजूरी प्रक्रिया Google सेवा OAuth2 तुम्हाला आवश्यक असेल स्वतःचे डोमेन, G Suite सह नोंदणीकृत. योग्य परवानग्यांसह सेवा खाते वापरणारे सर्व डोमेन वापरकर्ते कोणत्याही डोमेन वापरकर्त्याची तोतयागिरी करू शकतात.

सुरक्षा समस्या

G Suite डोमेन स्तरावर व्यवस्थापित केल्यामुळे, तुम्ही अधिकृत खात्यांना प्रवेश करण्याची अनुमती देणारी मुख्य फाइल सुरक्षितपणे संरक्षित केली पाहिजे Google सेवा. आम्ही कोणत्याही डोमेन वापरकर्त्याची तोतयागिरी करण्याच्या क्षमतेसह सेवा खाते प्रदान करतो या वस्तुस्थितीमुळे हे विशेषतः महत्वाचे आहे.

याव्यतिरिक्त, प्रत्येक सेवा खात्यात फक्त एका Google API मध्ये प्रवेश असावा अशी शिफारस केली जाते. त्यासाठी शेताचा वापर केला जातो व्याप्ती, ज्याचे वर्णन पुढील भागात केले आहे. अशा प्रतिबंधात्मक उपायकी फाइलशी तडजोड झाल्यास तुम्हाला अनधिकृत प्रवेशासाठी उघडलेल्या डेटाचे प्रमाण मर्यादित करण्याची अनुमती देते.

तोतयागिरी क्षमता कशी प्रदान करावी

सेवा खात्याला तोतयागिरी क्षमता प्रदान करण्यासाठी, या चरणांचे अनुसरण करा:

तुम्ही आता OAuth2 मंजुरी प्रक्रियेचा भाग म्हणून तुमचे सेवा खाते वापरून तुमच्या AdWords खात्यात प्रवेश करू शकता.

क्लायंट लायब्ररी सेट करत आहे

क्लायंट लायब्ररी सेट करण्यासाठी सूचना पाहण्यासाठी भाषा निवडा.

नोंद.तुम्ही आमच्या क्लायंट लायब्ररीपैकी एक न वापरण्याचे निवडल्यास, तुम्हाला स्वतः प्रक्रिया राबवावी लागेल.

OAuth2 विनंत्या ऑप्टिमाइझ करत आहे

तुमचे ॲप क्रेडेंशियल शेअरिंग वापरत नसल्यास, ते Google ला पाठवलेल्या विनंत्यांची संख्या लक्षणीयरीत्या वाढवू शकते. परिणामी, आमचे सर्व्हर अशा अनुप्रयोगावर निर्बंध लादू शकतात, ज्यामुळे त्याच्या ऑपरेशनची गती कमी होईल.

हा विभाग OAuth2 क्रेडेंशियल व्यवस्थापन कसे ऑप्टिमाइझ करायचे याचे वर्णन करतो जेणेकरून तुमचा अनुप्रयोग AdWords API सह अधिक प्रभावीपणे संवाद साधेल.

लक्ष द्या!टर्म अंतर्गत क्रेडेन्शियल्सहे OAuth2 क्रेडेन्शियल विशेषतांच्या संपूर्ण संचाचा संदर्भ देते, ज्यामध्ये प्रवेश टोकन आणि त्याची कालबाह्यता तारीख समाविष्ट आहे.

क्रेडेन्शियल वितरण धोरणे

एपीआय विनंत्यांमध्ये क्रेडेन्शियल वितरित केल्याने कार्यप्रदर्शन सुधारते आणि मर्यादा उल्लंघनामुळे ओव्हरहेड आणि त्रुटी देखील टाळतात.

क्रेडेन्शियल वितरण धोरण अनुप्रयोग डिझाइनवर अवलंबून असते.

IN बहु-थ्रेडेड अनुप्रयोगतुम्ही प्रत्येक थ्रेडच्या सत्रासाठी समान क्रेडेन्शियल्स वापरणे आवश्यक आहे.

बहु-प्रक्रिया आणि वितरित अनुप्रयोगांमध्ये, प्रक्रियेदरम्यान क्रेडेन्शियल्स पास करण्यासाठी काही पायाभूत सुविधा लागू करणे आवश्यक आहे. याव्यतिरिक्त, थ्रेड्स अवरोधित करण्यापासून प्रतिबंधित करणे आवश्यक आहे आणि शर्यतीची परिस्थिती उद्भवणे आवश्यक आहे.

बहु-प्रक्रिया/वितरित आणि बहु-थ्रेडेड अशा अनुप्रयोगामध्ये, प्रत्येक प्रक्रियेसाठी दोन्ही धोरणे एकत्र करणे आवश्यक आहे.

एका AdWords खात्याचे प्रमाणीकरण करण्यासाठी खालील धोरणे आहेत, जसे की पदानुक्रमातील उच्च-स्तरीय व्यवस्थापक खाते.

हे नंतर या धोरणांना कसे अनुकूल करायचे याचे वर्णन करते.

मल्टीथ्रेडेड ऍप्लिकेशन्स

मल्टी-थ्रेडेड ऍप्लिकेशन्समध्ये, वेगवेगळ्या थ्रेड्ससाठी क्रेडेन्शियल्स उपलब्ध असणे आवश्यक आहे. शर्यतीची परिस्थिती टाळण्यासाठी क्रेडेन्शियल अद्यतने समकालिकपणे करणे आवश्यक आहे.

हे आकृती थ्रेड दर्शवते जे रनटाइमच्या वेळी AdWords API ला विनंत्या पास करतात. सत्रांचा एक सामायिक पूल (वापरकर्ते) वापरला जातो. लक्षात ठेवा की प्रत्येक सत्राने समान क्रेडेंशियल ऑब्जेक्ट वापरणे आवश्यक आहे. प्रत्येक API विनंतीला प्रतिसाद म्हणून, थ्रेडला संबंधित सत्र (वापरकर्ता) प्राप्त होतो. प्रवेश टोकन रिफ्रेश करणे आवश्यक असल्यास, शर्यतीची स्थिती टाळण्यासाठी ते समकालिकपणे केले पाहिजे. दुसऱ्या शब्दांत, क्रेडेन्शियल ऑब्जेक्ट थ्रेड सुरक्षित असणे आवश्यक आहे.

क्लायंट लायब्ररी थ्रेड्स दरम्यान क्रेडेन्शियल्स पास करणे सोपे करतात. प्रत्येक क्लायंट लायब्ररीमध्ये क्रेडेन्शियल्ससह एक सत्र (किंवा वापरकर्ता) ऑब्जेक्ट असतो जो तो संपूर्णपणे पुन्हा वापरतो जीवन चक्र. सत्रांमध्ये क्रेडेन्शियल वापरण्यासाठी, तुम्ही प्रत्येक सत्र तयार करताना ते लागू करणे आवश्यक आहे. सर्व क्लायंट लायब्ररीमध्ये, क्रेडेन्शियल एक थ्रेड-सेफ ऑब्जेक्ट आहे जो ऍक्सेस टोकन कालबाह्य झाल्यावर सिंक्रोनसपणे अपडेट केला जातो.

उदाहरणार्थ, जावा क्लायंट लायब्ररीमध्ये तुम्ही सिंगलटन क्रेडेंशियल क्लास तयार कराल आणि ते सर्व सत्रांसाठी वापराल.

मल्टीप्रोसेस आणि वितरित अनुप्रयोग

बहु-प्रक्रिया आणि वितरित अनुप्रयोगांमध्ये, क्रेडेन्शियल वितरण चालू असणे आवश्यक आहे. एकापेक्षा जास्त सर्व्हर एकाच वेळी क्रेडेन्शियल्स अपडेट करण्याचा प्रयत्न करतात अशा शर्यतीची परिस्थिती टाळण्यासाठी (परिणामी अत्याधिक अपडेट विनंत्या), अपडेट सक्तीने करण्याची आणि सर्व प्रक्रिया आणि सर्व्हरना अद्यतनित क्रेडेन्शियल प्रदान करण्याची शिफारस केली जाते.

उदाहरणार्थ, एकच कार्य किंवा सेवा वेळोवेळी क्रेडेंशियल्स अपडेट करू शकते आणि त्यांना डेटा स्टोअरमध्ये ढकलू शकते जिथे ते भिन्न सर्व्हरद्वारे वापरले जातील.

रेखाचित्र क्रेडेन्शियल्सचे नियतकालिक अद्यतनित करणे आणि डेटा स्टोअरमध्ये त्यांचे गुणधर्म रेकॉर्ड करणे दर्शविते. सर्व सर्व्हर नंतर API ला विनंती करण्यापूर्वी क्रेडेन्शियल्स प्राप्त करतात.

कार्य अद्यतनित करा

अद्यतन कार्य वेळोवेळी क्रेडेन्शियल्स अद्यतनित करते आणि डेटा स्टोअरमध्ये पाठवते. या कार्याने वर्तमान क्रेडेन्शियल कालबाह्य होण्याची प्रतीक्षा करू नये, कारण यामुळे वैध क्रेडेन्शियल्सच्या कमतरतेमुळे अर्ज काही काळ ठप्प होईल.

सर्वोत्तम पर्याय नियतकालिक आहे सक्तीचे अद्यतन, ज्यामध्ये डेटा स्टोअरमधील क्रेडेन्शियल्स प्रत्येक वेळी नवीन बदलले जातात. वर्तमान क्रेडेन्शियल कालबाह्य होण्यापूर्वी अद्यतन कार्य चांगले केले पाहिजे जेणेकरून तात्पुरती त्रुटी उद्भवल्यास पुरेसा वेळ असेल. तुम्ही दर 15 मिनिटांनी अपडेट करून सुरुवात करू शकता.

नोंद.क्रेडेंशियल ऍक्सेस टोकन प्रक्रियेदरम्यान कालबाह्य झाल्यास API विनंती, ही विनंती अद्याप कार्यान्वित केली जाईल. उदाहरणार्थ, तुम्ही दीर्घकाळ चालणारी क्वेरी तयार केल्यास आणि प्रवेशासाठी एक मिनिटापेक्षा कमी वेळ शिल्लक असल्यास, परिणाम अद्याप परत केले जातील.

डेटा स्टोरेज

डेटा स्टोरेजचा वापर वेगवेगळ्या प्रक्रिया आणि सर्व्हरला क्रेडेन्शियल प्रदान करण्यासाठी केला जातो.

हे करण्यासाठी, आपण विद्यमान डेटा वेअरहाऊस वापरू शकता किंवा एक विशेष तयार करू शकता ज्याद्वारे सर्व्हर क्रेडेन्शियल प्राप्त करतील. म्हणून संभाव्य उपायतुम्ही कॅशिंग सर्व्हर (उदाहरणार्थ, Memcached किंवा Infinispan) आणि NoSQL डेटा स्टोअर (उदाहरणार्थ, MongoDB) वापरू शकता.

डेटा वेअरहाऊसचा मुख्य उद्देश API मध्ये प्रवेश करणाऱ्या सर्व सर्व्हरना एक विश्वासार्ह इंटरफेस प्रदान करणे आहे. त्याच्या ऑपरेशनसाठी ऑप्टिमाइझ करणे आवश्यक आहे द्रुत वाचनडेटा: सर्व्हर आणि प्रक्रिया क्रेडेन्शियल्स अपडेट केल्यापेक्षा जास्त वेळा वाचतील.

तुमची ओळखपत्रे सुरक्षित ठेवण्याचे लक्षात ठेवा.

क्रेडेन्शियल्स सेव्ह करताना, तुम्ही expiry_time प्रॉपर्टी जतन केली पाहिजे ( वर्तमान वेळ+ expires_in) आणि refresh_token सोबत access_token गुणधर्म. expiry_time गुणधर्म (टोकन कालबाह्यता तारीख) खालील सूत्र वापरून गणना केली जाते: access_token अद्यतन विनंती वेळ + expires_in वेळ (टोकन समाप्ती तारीख).

सर्व्हर पूल

विनंती पाठवण्यापूर्वी पूलमधील प्रत्येक सर्व्हर डेटा स्टोअरमधून नवीनतम क्रेडेन्शियल्स प्राप्त करतो. जोपर्यंत अपडेट कार्य यशस्वीरित्या चालते तोपर्यंत, क्रेडेन्शियल्स वैध असतील. तथापि, अपडेट कार्य किंवा डेटा स्टोअर अयशस्वी झाल्यास, फॉलबॅक यंत्रणा असणे आवश्यक आहे.

सर्व्हर किंवा प्रक्रिया डेटा स्टोअरमधून क्रेडेन्शियल्स मिळविण्यात अक्षम असल्यास, किंवा क्रेडेन्शियल कालबाह्य झाले असल्यास, समस्येचे निराकरण होईपर्यंत अनुप्रयोगास API सह कार्य करणे सुरू ठेवण्यासाठी सर्व्हरने त्याचे क्रेडेन्शियल्स अद्यतनित केले पाहिजेत.

मल्टीथ्रेडेड प्रक्रियांमध्ये, तुम्ही थ्रेड्समध्ये क्रेडेन्शियल वितरित करण्यासाठी समान धोरण वापरणे आवश्यक आहे.

एकाधिक खाते प्रमाणीकरण

AdWords व्यवस्थापक खात्यासाठी तयार केलेली क्रेडेन्शियल्स सर्व मुलांच्या खात्यांमध्ये प्रवेश करण्यासाठी वापरली जाऊ शकतात. एक व्यवस्थापक खाते असलेल्या वापरकर्त्यांना सामान्यत: सर्व अधीनस्थ AdWords खात्यांसाठी अर्ज अधिकृत करण्यासाठी उच्च-स्तरीय व्यवस्थापक खात्यासाठी क्रेडेंशियल्स तयार करणे आवश्यक आहे.

इतर प्रकरणांमध्ये, ॲप्लिकेशनला व्यवस्थापक खाते पदानुक्रमात एकमेकांशी संबंधित नसलेल्या AdWords खात्यांमध्ये प्रवेश आवश्यक आहे. या स्थितीत, तुम्हाला अनेक क्रेडेन्शियल्स तयार करणे आणि त्यांची देखभाल करणे आवश्यक आहे भिन्न खाती, उदाहरणार्थ, तुम्हाला प्रवेश असलेल्या प्रत्येक AdWords क्लायंट खात्यासाठी किंवा स्वतंत्र पदानुक्रमातील प्रत्येक उच्च-स्तरीय व्यवस्थापक खात्यासाठी.

तुम्ही या दोन्ही ऍप्लिकेशन्ससाठी किमान बदलांसह या धोरणांचे अनुसरण करू शकता. वापरताना शेअर केलेले स्टोरेजक्रेडेन्शियल आवश्यक खात्याशी संबंधित असल्याची खात्री करण्यासाठी खाते आयडी customerId द्वारे क्रेडेन्शियल अनुक्रमित केले जाणे आवश्यक आहे. याव्यतिरिक्त, अद्यतन कार्य त्यांना वेळेवर अद्यतनित करणे आवश्यक आहे. नवीन खाते कनेक्ट केल्यानंतर, तुम्हाला ते लॉन्च करावे लागेल.

शेवटी, मल्टी-थ्रेडेड ऍप्लिकेशन्समध्ये, तुम्हाला क्रेडेंशियल्स ऑब्जेक्ट फक्त संबंधित असलेल्या खात्यामध्ये चालणाऱ्या थ्रेडमध्ये वितरित करणे आवश्यक आहे.

OAuth2 कसे कार्य करते

नोंद. AdWords API डेटा ऍक्सेस विनंती (हायब्रिड डिझाइन) किंवा डोमेन-लेव्हल डेलिगेशन ऑफ अथॉरिटी (2LO) द्वारे समवर्ती साइन-इनला अद्याप समर्थन देत नाही.

व्याप्ती

प्रवेश टोकन प्रदान करू शकते भिन्न अंशडेटामध्ये प्रवेश. बदलण्यायोग्य पॅरामीटरस्कोप संसाधने आणि ऑपरेशन्सचा संच परिभाषित करतो ज्यात टोकन प्रवेश प्रदान करते. प्रवेश टोकनची विनंती करताना, तुमचा अनुप्रयोग स्कोप पॅरामीटरला एक किंवा अधिक मूल्ये पाठवतो.

खाली AdWords API साठी वर्तमान आणि लेगसी स्कोप आहेत.

ऑफलाइन प्रवेश

AdWords API वापरणारा क्लायंट अनुप्रयोग सामान्यत: ऑफलाइन प्रवेशाची विनंती करतो. वापरकर्ता इंटरनेट कनेक्शनशिवाय तुमची साइट ब्राउझ करत असताना तुमच्या ॲप्लिकेशनला बॅच जॉब चालवण्याची आवश्यकता असल्यास असे होऊ शकते.

स्थापित केलेले ॲप्स डीफॉल्टनुसार ऑफलाइन प्रवेश वापरतात.

HTTP विनंती शीर्षलेख

AdWords API सर्व्हरच्या प्रत्येक विनंतीमध्ये HTTP शीर्षलेख खालील फॉर्म समाविष्ट करणे आवश्यक आहे:

अधिकृतता: वाहक THE_ACCESS_TOKEN

पोस्ट ... HTTP/1.1 होस्ट: ... अधिकृतता: वाहक 1/fFAGRNJru1FTz70BzhT3Zg सामग्री-प्रकार: text/xml;charset=UTF-8 सामग्री-लांबी: ...

प्रवेश करा आणि टोकन रिफ्रेश करा

बऱ्याच प्रकरणांमध्ये, रीफ्रेश टोकन सुरक्षित ठिकाणी संग्रहित करणे आवश्यक आहे कारण ते नंतर आवश्यक असू शकते. प्रवेशाची विनंती आणि टोकन रिफ्रेश करण्याबद्दल अधिक माहितीसाठी, खालील मार्गदर्शक पहा:

जेव्हा प्रवेश टोकन कालबाह्य होते

प्रवेश टोकनची कालबाह्यता तारीख असते जी expires_in च्या मूल्यावर अवलंबून असते. कालबाह्य झालेले प्रवेश टोकन रिफ्रेश टोकन वापरून रीफ्रेश केले जाऊ शकते, परंतु आमच्या क्लायंट लायब्ररी हे स्वयंचलितपणे करतात.

अन्यथा नमूद केल्याशिवाय, सामग्रीया पृष्ठाचा क्रिएटिव्ह कॉमन्स विशेषता 3.0 परवाना अंतर्गत परवानाकृत आहे, आणि कोड नमुने Apache 2.0 परवान्या अंतर्गत परवानाकृत आहेत. तपशीलांसाठी, आमचे पहा. Java हा Oracle आणि/किंवा त्याच्या संलग्न कंपन्यांचा नोंदणीकृत ट्रेडमार्क आहे.

24 सप्टेंबर 2018 रोजी अपडेट केले

एक लोकप्रिय प्रोटोकॉल जो परवानगी देतो सामाजिकसेवा एकमेकांशी समाकलित होतात आणि परवानगी देतात सुरक्षित मार्गदेवाणघेवाण वैयक्तिक माहिती. OAuth 2 सेवा कनेक्ट करू शकते, ज्यापैकी प्रत्येकाचा स्वतःचा वापरकर्ता आधार आहे - मी तेच शोधत आहे या प्रकरणातमी त्याला "सामाजिक" म्हणतो. जेव्हा तुम्ही OAuth सह कार्य करण्यास प्रारंभ करता, तेव्हा प्रथम भावना अशी होते की प्रोटोकॉल अतिशय जटिल आणि अनावश्यक आहे. या लेखात, मी मानवी भाषेत OAuth च्या मूलभूत गोष्टी स्पष्ट करण्याचा प्रयत्न करेन.

क्रॉस-ऑथोरायझेशन उदाहरण

चला 2005 मध्ये परत जाऊ आणि कल्पना करूया की आपण सोशल नेटवर्क लिहित आहोत. त्यात GMail ॲड्रेस बुकमधून संपर्क आयात करण्यासाठी एक फॉर्म आहे. प्रवेश करण्यासाठी काय आवश्यक आहे जीमेल संपर्क? अर्थात, मेलबॉक्ससाठी लॉगिन आणि पासवर्ड. परंतु आम्ही तुम्हाला आमच्या साइटवर ते प्रविष्ट करण्यास सांगितल्यास, वापरकर्त्याला काहीतरी चुकीचे असल्याची शंका येईल. आम्ही एंटर केलेले पासवर्ड सर्व्हरवर सेव्ह करणार नाही याची हमी कोठे आहे? त्यामुळे आम्हाला पासवर्ड टाकायचा आहे फक्त GMail वेबसाइटवर, आणि त्यानंतर GMail API द्वारे संपर्कांमध्ये प्रवेश आमच्याद्वारे प्रदान केला गेला सामाजिक नेटवर्क(कदाचित थोडा वेळ). चला अटींवर सहमत होऊया.
  • ग्राहक: ग्राहक; सोशल नेटवर्कवर संपर्क आयात करण्यासाठी फॉर्मवर प्रक्रिया करण्यासाठी स्क्रिप्ट.
  • सेवा प्रदाता: डेटा प्रदाता; GMail, ज्यामध्ये ग्राहकांच्या आवडीचा पत्ता पुस्तिका डेटा आहे.
  • वापरकर्ता: एक वापरकर्ता ज्याचे ग्राहक आणि सेवा प्रदाता या दोघांमध्ये खाते आहे.
  • संरक्षित संसाधन: वैयक्तिक डेटा; GMail वरील ॲड्रेस बुकमधील संपर्क (म्हणजे सेवा प्रदाता संसाधने).
  • प्रदाता API: जीमेल एपीआय जी कोणत्याही स्क्रिप्टला जीमेल ॲड्रेस बुकमधून संपर्क पुनर्प्राप्त करण्यास अनुमती देते.
OAuth कार्य- वापरकर्त्याला सेवा प्रदात्याच्या (GMail) संरक्षित डेटासह ग्राहक सेवेवर (सोशल नेटवर्कवर) काम करण्याची संधी आहे याची खात्री करा, या डेटासाठी पासवर्ड केवळ सेवा प्रदात्यावर प्रविष्ट करा आणि ग्राहकावर राहून वेबसाइट. इतके कठीण नाही, बरोबर?

OAuth OpenID पेक्षा वेगळे कसे आहे?

OAuth ला "रोबोट प्रोटोकॉल" म्हणून ओळखले जाते, जे OpenID ला "वापरकर्ता प्रोटोकॉल" म्हणून विरोध करते. त्यांना गोंधळात टाकू नका!
  1. OpenID हा प्रवेगक नोंदणीसाठी एक प्रोटोकॉल आहे. OpenID वापरकर्त्याने इंटरनेटवर आधीपासून कुठेतरी नोंदणीकृत असल्यास पासवर्ड न टाकता कोणत्याही सेवेवर खाते मिळवू देते. (आणि नंतर तुम्ही पासवर्ड न टाकता सेवेमध्ये लॉग इन करू शकता, "कुठेतरी" अधिकृत होऊन.) उदाहरणार्थ, तुमचे Yandex वर खाते असल्यास, तुम्ही OpenID अधिकृततेला सपोर्ट करणाऱ्या कोणत्याही सेवेमध्ये "लॉग इन" करण्यासाठी ते वापरू शकता.
  2. OAuth हा तृतीय-पक्ष API च्या अधिकृत प्रवेशासाठी प्रोटोकॉल आहे.वापरकर्त्याने पुढे जाण्याची परवानगी दिल्यास OAuth ग्राहक स्क्रिप्टला तृतीय-पक्ष सेवा प्रदात्याच्या डेटावर मर्यादित API प्रवेश मिळविण्याची अनुमती देते. त्या. ते API मध्ये प्रवेश करण्याचे साधन आहे.

पोलिसांचे साधर्म्य

कल्पना करा की तुम्ही गुन्हे अन्वेषण विभागाचे कर्मचारी आहात, या प्रकरणाचा शेवट शोधत आहात वेबमनी चोरी 1973 साठी. चला अटींवर सहमत होऊया:
  • OAuth ग्राहक: गुन्हेगारी तपास.
  • वापरकर्ता: गुन्हे अन्वेषण अधिकारी.
  • सेवा प्रदाता: गुन्ह्याच्या संग्रहाची कार्ड फाइल.
  1. ओपनआयडी: गुन्हे अन्वेषण विभागाचा कर्मचारी (वापरकर्ता) कार्ड इंडेक्स (सेवा पुरवठादार) वर येतो, प्रवेशद्वारावर अधिकृतता सादर करतो आणि माहितीच्या शोधात जागीच कार्ड्सद्वारे क्रमवारी लावतो.
  2. OAuth: गुन्हे अन्वेषण विभागाचा कर्मचारी (वापरकर्ता) थेट कामावरून (ग्राहक) कार्ड इंडेक्स (सेवा प्रदाता) ला कॉल करतो. तो त्याच्या नावाची तक्रार करतो; जर तो ओळखला गेला असेल (अधिकृतता), तो 1973 (API कॉल) साठी सर्व गुन्ह्यांची यादी प्रदान करण्यास सांगतो.
जसे आपण पाहू शकता, OpenID आणि OAuth भिन्न गोष्टी आहेत. ओपनआयडी तुम्हाला ठराविक स्त्रोतांमध्ये थेट प्रवेश करण्याची परवानगी देतो. OAuth हे सुनिश्चित करते की काही माहिती API द्वारे रिमोट सेवेमधून पुनर्प्राप्त केली जाते.

या लेखाची रूपरेषा

मुख्य भागाकडे जाण्यापूर्वी, आपण पुढे कसे जायचे ते पाहू.
  1. क्रॉस-ऑथॉरायझेशन “मॅन्युअली” लागू करताना उद्भवणाऱ्या समस्यांचा विचार करूया.
  2. चला "अनुप्रयोग" म्हणजे काय आणि ग्राहक कोण आहे याबद्दल बोलूया.
  3. चला क्रिप्टोग्राफीच्या मूलभूत गोष्टींना स्पर्श करूया.
  4. चला डेमो ऍप्लिकेशन दर्शवू जे आपण या लेखात लिहू.
  5. चला OAuth सर्व्हरच्या चाचणीचा निर्णय घेऊ ज्यावर आपण प्रयोग करू.
  6. चला OAuth प्रोटोकॉलच्या सर्व पायऱ्या पाहू आणि स्क्रिप्ट स्रोत देऊ.

सायकलच्या शोधाबद्दल डॉ

एखादी गोष्ट समजून घेण्याचा एक चांगला मार्ग म्हणजे ते स्वतः करणे, वाटेत असलेल्या सर्व रेकवर पाऊल टाकणे. आता आम्ही चाक पुन्हा शोधू: कोणत्याही प्रमाणित प्रोटोकॉलशिवाय ग्राहक आणि सेवा प्रदाता यांच्यातील परस्परसंवादाची समस्या कशी सोडवायची याची कल्पना करण्याचा प्रयत्न करूया.

प्रथम, GMail वरून संपर्क आयात करण्यासाठी फॉर्म स्वतः लिहू: पुढे, आम्ही GMail विकासकांना हे सुनिश्चित करण्यास सांगू की जेव्हा वापरकर्ता URI /auth.php वर नेव्हिगेट करतो तेव्हा त्याला अधिकृतता फॉर्म दिला जातो (आमच्या veloworld, GMail मध्ये PHP मध्ये लिहिलेले आहे). पासवर्ड यशस्वीरित्या एंटर केल्यानंतर, वापरकर्त्यास साइटवर पुनर्निर्देशित केले जावे जिची URL retpath पॅरामीटरमध्ये निर्दिष्ट केली आहे. तसेच, याव्यतिरिक्त, URL मध्ये एक विशिष्ट गुप्त की प्रसारित करणे आवश्यक आहे, जी GMail API मध्ये प्रवेश करण्यासाठी आधीपासूनच वापरली जाऊ शकते.

तर, पासवर्ड एंटर केल्यानंतर, वापरकर्ता आमच्या साइटवर खालील पत्त्यावर परत येईल: आणि स्क्रिप्ट /import.php वरून आम्ही GMail API कडे वळू, त्यात Y49xdN0Zo2B5v0RR की पास करू आणि संपर्क लोड करू: बरं, चला आता दंताळे मोजा (कारण अडथळे मोजण्यास उशीर होईल).

पहिला रेक: retpath रिटर्न पत्ता बदलणे

बरं, नक्कीच, आपण अंदाज लावला आहे की आक्रमणकर्ता प्रथम त्याच्या वेबसाइटवर एक दुवा ठेवेल आणि आपल्याला त्यावर क्लिक करण्यास भाग पाडेल. परिणामी, त्याला जीमेलने परत केलेली गुप्त की प्राप्त होईल आणि म्हणून तुमचे संपर्क:

दुसरा दंताळे: गुप्त की वर "इव्हस्ड्रापिंग".

समजा आम्ही कसा तरी रीपाथ संरक्षित केला आहे, आणि तो आता फक्त आमच्या साइटकडे निर्देशित करू शकतो. परंतु गुप्त पॅरामीटरची समस्या राहते. किंवा एखाद्या दिवशी तुमच्या साइटवर XSS भेद्यता असेल जी तुम्हाला गुप्त की "चोरी" करण्यास अनुमती देते. व्हॅल्यू सिक्रेटसह, आक्रमणकर्ता तुमचे वाचण्यास सक्षम असेल पत्ता पुस्तिका. याचा अर्थ असा की गुप्ततेला व्यत्यय येण्यापासून संरक्षित करणे आवश्यक आहे (आदर्शपणे, ते URL द्वारे अजिबात प्रसारित केले जाऊ नये).

रेक क्रमांक तीन: बरेच पुनर्निर्देशन

प्रत्येक API कॉलसाठी वेगळ्या गुपिताची आवश्यकता असल्यास, आम्हाला सेवा प्रदाता साइटवर जितके कॉल आहेत तितके पुनर्निर्देशन आयोजित करावे लागतील. तीव्रतेने API वापरूनहे खूप हळू चालते आणि खूप गैरसोयीचे आहे...

रेक क्रमांक चार: खराब ग्राहक ओळख

जीमेलला अर्थातच त्याचे API कोण वापरत आहे हे जाणून घ्यायचे आहे. काही साइटवर प्रवेश करण्याची परवानगी द्या आणि इतरांना प्रवेश नाकारा... याचा अर्थ असा की संपर्क आयात फॉर्ममध्ये विनंती तयार करताना, ग्राहक (साइट) सेवा प्रदात्याकडे (GMail) "प्रस्तुत" करणे आवश्यक आहे. आमच्या बाबतीत, हे कार्य अंशतः retpath (त्यातील साइटचे नाव) द्वारे केले जाते, परंतु ही पद्धतसार्वत्रिक नाही, कारण API पद्धतींना कॉल करताना "प्रेझेंटेशन" यंत्रणा देखील सक्रिय करणे आवश्यक आहे.

OAuth फाउंडेशन

हे लक्षात घेण्यासारखे आहे की अजूनही बरेच "पाण्याखालील रेक" बाकी आहेत. मी येथे त्यांचे वर्णन करणार नाही, कारण हे रेक मारियाना ट्रेंच (खोल, 10920 मीटर) मध्ये आहेत. असुरक्षिततेचे वर्णन करण्यासाठी डझनभर पाने लागतील. म्हणून मी थेट OAuth वर्णनात जाईन, जिथे सर्व समस्या आधीच सोडवल्या गेल्या आहेत.

अनुप्रयोग = ग्राहक + API प्रवेश

OAuth सह काम करताना, ग्राहक हा शब्द "साइट" च्या अर्थापुरता मर्यादित नाही हे महत्त्वाचे आहे. ग्राहक काहीतरी आहे अर्ज, आणि ते कोठे स्थित आहे हे इतके महत्वाचे नाही. पासून ग्राहकांची उदाहरणे वास्तविक जीवन: परंतु तुम्ही केवळ OAuth मधून गोंधळ घालू शकत नाही. खरोखर, सर्व OAuth प्रदान करते लॉग इन करण्याची क्षमता दूरस्थ सेवा(सेवा प्रदाता) आणि API ला अधिकृत विनंत्या करा. हे API कसे संरचित आहे हे महत्त्वाचे नाही: ते शुद्ध SOAP, एक REST दृष्टिकोन इत्यादी असू शकते. मुख्य गोष्ट अशी आहे की प्रत्येक API पद्धत इनपुट म्हणून स्वीकारते विशेष पॅरामीटर्स, OAuth प्रोटोकॉलनुसार प्रसारित केले.

टोकन = की + गुप्त

OAuth च्या तत्त्वांपैकी एक सांगते की कोणत्याही खाजगी की सार्वजनिक विनंत्यांमध्ये पास केल्या जाऊ नयेत (आम्ही वरील उदाहरणात का ते पाहिले). म्हणून, प्रोटोकॉल टोकन संकल्पनेसह कार्य करते. टोकन हे लॉगिन + पासवर्ड जोडी सारखे आहे: लॉगिन - माहिती उघडा, आणि पासवर्ड फक्त पाठवणाऱ्या आणि प्राप्त करणाऱ्या पक्षांनाच माहीत असतो. OAuth शब्दात, लॉगिनच्या ॲनालॉगला की म्हणतात आणि पासवर्डच्या ॲनालॉगला सीक्रेट म्हणतात. जेव्हा रहस्य फक्त प्रेषक आणि प्राप्तकर्त्याला माहित असते, परंतु इतर कोणालाही नाही, तेव्हा सामायिक रहस्य म्हणतात.

त्यामुळे, जर ग्राहक आणि पुरवठादार एखाद्या सामायिक गुपितावर सहमत असतील, तर त्या कळा रोखल्या जाण्याच्या भीतीशिवाय ते URL मधील संबंधित की उघडपणे देवाणघेवाण करू शकतात. पण खोटेपणापासून की सह URL चे संरक्षण कसे करावे?

संदेश = दस्तऐवज + डिजिटल स्वाक्षरी

"डिजिटल स्वाक्षरी" धडकी भरवणारा वाटतो, पण खरं तर ती अगदी स्पष्ट गोष्ट आहे. जेव्हा तुम्ही कागदपत्रावर पेनने स्वाक्षरी करता, तेव्हा तुम्ही प्रमाणित करता की कागदपत्र तुमच्याद्वारे लिहिलेले आहे आणि कोणीतरी लिहिलेले नाही. तुमची स्वाक्षरी दस्तऐवजात "जोडलेली" आहे आणि ती "एका सेट" मध्ये जाते.

त्याचप्रमाणे, डेटाच्या ब्लॉकमध्ये डिजिटल स्वाक्षरी जोडली जाते हे सुनिश्चित करण्यासाठी की ज्याने डेटा व्युत्पन्न केला आहे तो इतर कोणाची तोतयागिरी करत नाही. डिजिटल स्वाक्षरी दस्तऐवज कूटबद्ध करत नाही, ते केवळ त्याच्या सत्यतेची हमी देते!समान सामायिक रहस्य, जे प्राप्तकर्ता आणि प्रेषक यांना माहित आहे, परंतु इतर कोणालाही नाही, तुम्हाला स्वाक्षरी करण्याची परवानगी देते.

हे कसे कार्य करते? आमचे $sharedSecret = 529AeGWg, आणि आम्ही ते स्वीकारणाऱ्या पक्षाच्या कानात कुजबुजले. आम्हाला "माझा फोन 1234567" हा संदेश हल्लेखोराकडून छेडछाड करण्यापासून संरक्षण हमीसह पाठवायचा आहे.

  1. मेसेजमध्ये ग्राहक डिजिटल स्वाक्षरी जोडतो सामान्य दृश्य- $transfer = $message . "-" md5($message. $sharedSecret); // $transfer = "माझा फोन 1234567 आहे" . "-" md5("माझा फोन 1234567 आहे" . "529AeGWg")
  2. सेवा प्रदाता डेटा घेतो, तो परत 2 भागांमध्ये विभाजित करतो - $message आणि $signature - आणि अगदी तेच ऑपरेशन करतो: $signatureToMatch = md5($message. $sharedSecret); // $signatureToMatch = md5("माझा फोन 1234567 आहे" . "529AeGWg");

त्यानंतर प्राप्त $signature डेटामधील परिणामी $signatureToMatch मूल्याची तुलना करणे आणि मूल्ये जुळत नसल्यास बनावटीची तक्रार करणे हे बाकी आहे.

उदाहरण म्हणून एक साधा अनुप्रयोग वापरून OAuth कसे कार्य करते याचे प्रात्यक्षिक
  1. OAuth चा अनुभव घेण्यासाठी आम्हाला दोन गोष्टींची आवश्यकता आहे: स्क्रिप्ट जी लागू करतेप्रोटोकॉल मी फक्त एक लहान PHP स्क्रिप्ट (झिप आर्काइव्हची लिंक) लिहिली आहे. हे एक विजेट आहे जे PHP साइट्समध्ये समाविष्ट केले जाऊ शकते.
  2. चाचणी OAuth सर्व्हर ज्यावर आम्ही प्रयोग करू शकतो. या उद्देशासाठी, RuTvit वापरणे सोयीचे आहे: एक पृष्ठ आहे http://rutvit.ru/apps/new, जे आपल्याला 30 सेकंदात चाचणी अनुप्रयोग जोडण्याची परवानगी देते. (तसे, तुम्हाला रिटर्न URL फॉर्ममध्ये नमूद करण्याची गरज नाही - आम्ही अजूनही चाचणी स्क्रिप्टमधून पास करत आहोत.)
डेमो स्क्रिप्ट कोड पाहून आणि लेखातील खाली दिलेले स्पष्टीकरण वाचून, आपण प्रोटोकॉलचे तपशील समजू शकता.

तुम्ही हे विजेट कोणत्याही PHP वेबसाइटमध्ये फक्त त्याचा कोड कॉपी करून आणि लेआउट समायोजित करून समाविष्ट करू शकता. निर्दिष्ट हॅश टॅगसह टॅग केलेल्या RuTvit सेवेतील सर्व ट्विट्स प्रदर्शित केले जातात आणि नवीन ट्विट जोडणे देखील शक्य आहे (येथे OAuth कार्यात येते). विजेट RuTvit चे API आणि OAuth अधिकृतता वापरते, जे, तसे, Twitter API मानकाशी जुळते. तुम्ही ही स्क्रिप्ट तुमच्या चाचणी सर्व्हरवर चालवू शकता. हे करण्यासाठी, आपल्याला तीन चरणे करणे आवश्यक आहे:

  1. स्क्रिप्ट कोड डाउनलोड करा आणि तो तुमच्या वेब सर्व्हरवरील कोणत्याही सोयीस्कर निर्देशिकेत उपयोजित करा.
  2. तुमचा नवीन चाचणी अर्ज OAuth सर्व्हरवर नोंदवा.
  3. अर्जाची नोंदणी केल्यानंतर, स्क्रिप्टमधील OA_CONSUMER_KEY आणि OA_CONSUMER_SECRET पॅरामीटर्स सर्व्हरकडून प्राप्त झालेल्या मूल्यांसह पुनर्स्थित करा.

अर्ज नोंदणी आणि सेटिंग्ज

अनुप्रयोग कुठून येतात आणि सेवा प्रदाता त्यांच्याबद्दल कसे शिकतात याबद्दल बोलूया. हे अगदी सोपे आहे: सेवा प्रदात्याकडे आहे विशेष फॉर्मअर्ज नोंदणी, जी कोणीही वापरू शकते. येथे अशा स्वरूपाचे एक उदाहरण आहे:


तुमचा अर्ज नोंदणी केल्यानंतर, तुम्हाला 5 पॅरामीटर्स दिले जातात जे OAuth सह कार्य करण्यासाठी आवश्यक आहेत. ते कसे दिसू शकतात ते येथे आहे:


येथे, कंझ्युमर की आणि कंझ्युमर सीक्रेट हे तुमच्या ॲप्लिकेशनचे एक प्रकारचे “लॉगिन + पासवर्ड” आहेत (टोकन्सबद्दल वरील संभाषण लक्षात ठेवा? हे त्यापैकी फक्त एक आहे). मी तुम्हाला आठवण करून देतो की ग्राहक गुपित हे एक सामायिक रहस्य आहे, जे फक्त प्रेषक आणि प्राप्तकर्त्यालाच माहीत असते, परंतु इतर कोणालाही नाही. उर्वरित 3 मूल्ये सेवा URL निर्दिष्ट करतात, ज्याचा अर्थ आम्ही आता विचारात घेणार आहोत.

OAuth = फेच रिक्वेस्ट टोकन + ऑथोरायझेशनवर पुनर्निर्देशित + फेच ऍक्सेस टोकन + कॉल API

GMail सह उदाहरणामध्ये, आम्ही 2 प्रकार वापरले दूरस्थ कॉल: a) ब्राउझरद्वारे पुनर्निर्देशित; b) स्क्रिप्टमधून API मध्ये प्रवेश करणे.

आणि आम्ही अनेक सुरक्षा समस्या उघड केल्या, ज्या सूचित करतात की आणखी आव्हाने असावीत. OAuth मध्ये असेच घडते: अतिरिक्त मध्यवर्ती विनंत्या ग्राहक स्क्रिप्टमधून प्रदात्यावर जोडल्या जातात, टोकनसह कार्यरत असतात. त्यांच्याकडे पाहू.

  1. प्रक्रिया फॉर्म सबमिशन.हा OAuth चा भाग नाही तर आमच्या अर्जाचा भाग आहे. API प्रदात्यामध्ये प्रवेश करण्यापूर्वी, आम्हाला या क्रियेसाठी वापरकर्त्याकडून वर्क ऑर्डर प्राप्त करणे आवश्यक आहे. अशा "ऑर्डर" चे उदाहरण येथे आहे:
  2. विनंती टोकन आणा (अंतर्गत विनंती).
    • ग्राहक स्क्रिप्ट प्रवेश करते टोकन URL ची विनंती कराप्रदाता: उदाहरणार्थ, api.rutvit.ru/oauth/request_token. विनंतीमध्ये ग्राहक की आहे - "अनुप्रयोग लॉगिन", आणि विनंती स्वतःच ग्राहक गुप्त - "अनुप्रयोग संकेतशब्द" वापरून स्वाक्षरी केली जाते, जी त्यास खोटेपणापासून संरक्षित करते.
    • प्रतिसादात, प्रदाता विनंती टोकन नावाचे "कचरा-भरलेले" टोकन व्युत्पन्न करतो आणि परत करतो. आम्हाला त्याची नंतर गरज भासेल, म्हणून आम्ही ते कुठेतरी साठवले पाहिजे - उदाहरणार्थ, $S_REQUEST_TOK सत्र व्हेरिएबलमध्ये.
  3. अधिकृततेकडे पुनर्निर्देशित करा (ब्राउझरमधील पुनर्निर्देशनाद्वारे).आता आमच्या ऍप्लिकेशनमध्ये एक अद्वितीय विनंती टोकन आहे. हे टोकन वापरण्यासाठी वापरकर्त्याकडून परवानगी घेणे आवश्यक आहे, उदा. त्याला विचारा विनंती टोकन अधिकृत करा.
    • ग्राहक ब्राउझरला एका विशेषकडे पुनर्निर्देशित करतो URL अधिकृत कराप्रदाता: उदाहरणार्थ, api.rutvit.ru/oauth/authorize. विनंती टोकन की पॅरामीटर्समध्ये पास केली जाते.
    • प्रदाता त्याच्या वापरकर्त्यासाठी अधिकृतता फॉर्म प्रदर्शित करतो आणि, तो अधिकृत असल्यास, ब्राउझरला परत पुनर्निर्देशित करतो. नक्की कुठे? आणि आम्ही हे oauth_callback पॅरामीटरमध्ये सूचित करतो.
  4. प्रवेश टोकन मिळवा (अंतर्गत विनंती).तर, ब्राउझर पुनर्निर्देशनाच्या मालिकेनंतर आमच्या अनुप्रयोगावर परत आला. याचा अर्थ प्रदात्यावरील अधिकृतता यशस्वी झाली आणि विनंती टोकनला कार्य करण्याची परवानगी आहे. तथापि, सुरक्षिततेसाठी OAuth मध्ये, प्रत्येक टोकनचा स्वतःचा, काटेकोरपणे मर्यादित उद्देश असतो. उदाहरणार्थ, विनंती टोकन फक्त वापरकर्त्याकडून पुष्टीकरण प्राप्त करण्यासाठी वापरले जाते, आणि दुसरे काहीही नाही. संसाधनांमध्ये प्रवेश करण्यासाठी, आम्हाला नवीन टोकन - ऍक्सेस टोकन - किंवा जसे ते म्हणतात, "एक्स्चेंज टोकन फॉर ऍक्सेस टोकन" प्राप्त करणे आवश्यक आहे.
    • ग्राहक संदर्भित टोकन URL मध्ये प्रवेश करा- उदाहरणार्थ, api.rutvit.ru/oauth/access_token - आणि त्याच्याकडे असलेल्या विनंती टोकनऐवजी त्याला ऍक्सेस टोकन देण्यास सांगते. विनंतीवर स्वाक्षरी आहे डिजिटल स्वाक्षरीविनंती टोकन गुप्त वर आधारित.
    • प्रदाता कचऱ्याने भरलेले प्रवेश टोकन तयार करतो आणि परत करतो. या ऍक्सेस टोकनला API मध्ये प्रवेश करण्याची अनुमती आहे हे देखील ते त्याच्या सारण्यांमध्ये नोंदवते. आमचा अनुप्रयोग भविष्यात API वापरत असल्यास प्रवेश टोकन राखून ठेवला पाहिजे.
  5. कॉल API (अंतर्गत विनंती).बरं, आता आमच्याकडे ऍक्सेस टोकन आहे, आणि आम्ही API पद्धतींना कॉल करताना त्याची की पास करू शकतो.
    • ग्राहक प्रदात्याच्या API ला विनंती तयार करतो (उदाहरणार्थ, REST विचारसरणीनुसार POST विनंती वापरणे). विनंतीमध्ये ॲक्सेस टोकन की असते आणि या टोकनच्या शेअर्ड सिक्रेटचा वापर करून त्यावर स्वाक्षरी केली जाते.
    • प्रदाता API कॉलवर प्रक्रिया करतो आणि अनुप्रयोगास डेटा परत करतो.

स्क्रिप्टचा शेवट: विजेट आउटपुट

स्क्रिप्टचा शेवट तपशीलवार स्पष्टीकरणाशिवाय स्पष्ट असावा.
सूची 14: स्क्रिप्टचा शेवट: विजेट आउटपुट
// एंड केस ) ) // सर्व उपलब्ध ट्विट मिळवा. $text = file_get_contents("http://api.rutvit.ru/search.xml?rpp=5&q=" . urlencode("#" . TAG)); $TWEETS = नवीन SimpleXMLElement($text); // रीकोडिंग आणि कोटिंगसह संदेश प्रदर्शित करण्यासाठी शॉर्टकट. फंक्शन e($text, $quote = 1) ( $text = iconv("utf-8", एन्कोडिंग, $text); echo $quote? htmlspecialchars($text) : $text; ) ?>
$ट्वीट) (?>) म्हणून स्थिती
user->screen_name)?>: text_formatted, 0)?>
?action=form_is_sent" style="margin: 1em 0 0 0">

OAuth वर उपयुक्त लिंक्स

  • rutvit
टॅग जोडा

आम्ही वाचण्याची शिफारस करतो

वर