OAuth: isang paglalarawan ng protocol sa simple at naiintindihan na wika. Isang alternatibo sa mga account ng serbisyo. I-access at i-refresh ang mga token

Mayroong maraming mga paraan upang ipamahagi ang malisyosong spam sa VKontakte. Ngunit ang mga peste ay hindi natutulog, parami nang parami ang pumapasok sa kanilang mga ulo mga kawili-wiling ideya. At ito ay naging lubhang kapaki-pakinabang. Natutunan ng mga manloloko na gamitin ito upang i-bypass ang pahina ng babala tungkol sa mga nakakahamak na site.

At nagsimula ang lahat nang isang araw ay lumitaw ang sumusunod na mensahe sa aking dingding:


Dahil sa curiosity, sinunod ko ang link at napunta ako sa isa pang phishing site. Ngunit ang link mismo ay tila kakaiba sa akin, ito ay parang (kalahati ng mga character sa ASCII):
vkontakte.ru/away.php ? sa=http%3A%2F%2FApi.vKontakte.Ru%2F%2Fo%2561u%2574%…

Dito na magsisimula ang saya...
Tingnan natin ang pangalawang link sa mga bahagi:

Ano ang ibig sabihin ng bawat parameter:

  • client_id - ID ng application na nangangailangan ng pahintulot;
  • redirect_uri - ang address kung saan ipapadala ang access_token (sa pamamagitan ng redirect);
  • display - uri ng window ng pahintulot (pahina, popup, touch at wap).
Sa totoo lang, ang redirect_uri ay naglalaman ng address ng phishing site. Dahil nagkaroon ng error sa display parameter (naglalaman ito ng basura "?390852"), hindi ipinakita ang window ng pahintulot, ngunit agad na na-redirect sa isang phishing site na may mga sumusunod na parameter: error=invalid_request&error_description=Invalid+display+passed

Ito ang buong punto ng pag-bypass sa blacklist ng mga nakakahamak na site ng VKontakte. Isang alerto lamang tungkol sa paglipat sa api.vk.com ang lalabas. At bilang resulta ng paglipat, dumiretso kami sa isang phishing site na nasa black list. Kapag sinundan mo ang link na vkontakte.ru/away.php?to=vgostivk.dyndns**:

Tulad ng nangyari, ang application na diumano'y nangangailangan ng pahintulot ay nakabitin sa na-hack na user:

At ang mismong phishing site ay idinisenyo nang kawili-wili. Ang disenyo, gaya ng dati, ay istilo ng pakikipag-ugnayan at hiniling na mag-log in. Nag-log in ako gamit ang isang random na email at password, at nilunok ko ang pekeng mabuti. Ang susunod na nangyari ay mas kawili-wili; ang balita mula sa "Pavel Durov" ay lumitaw sa pangunahing pahina:

Pagkatapos mag-click sa button na "Gumawa ng personal na counter", isang magandang progress bar ang sumunod. Pagkatapos ay hiniling sa iyong isaad ang iyong numero at magpadala ng SMS:

Sa teorya, pagkatapos ng matagumpay na "pag-activate" dapat itong na-redirect sa pahina ng activ.php, ngunit hindi ako nakarating doon. Mga sipi mula sa mga JS script ng isang phishing site:

...
kung (req.status == 200) (
// kung ang status ay 200 (OK) - magbigay ng tugon sa user
kung (req.responseText == "ok" ) (
//statusElem.innerHTML = "Lahat ay umuugong!";
get_activation();
}
kung (req.responseText == "hindi") (statusElem.innerHTML = "Di-wastong activation code";}
//statusElem.innerHTML = "Tugon ng server: "+req.responseText;
...
function get_activation() (
dokumento .location="activ.php" ;
}

* Ang source code na ito ay na-highlight gamit ang Source Code Highlighter.


Bottom line: Ginagamit ng mga manloloko ang OAuth 2.0 para i-bypass ang mga babala, kunin ang password at email ng user, at subukang manlinlang. pagpapadala ng sms(malamang na gumagamit ng isang sistema ng subscription).
  1. Pagbubukas ng built-in na browser gamit ang login page
  2. Hinihiling sa user na kumpirmahin na ang mga karapatan ay ipinagkaloob.
  3. Kung sumang-ayon ang user, ire-redirect ang browser sa isang stub page sa fragment (pagkatapos ng #) ang URL kung saan idinagdag access token
  4. Ang application ay humarang sa pag-redirect at natatanggap access token mula sa address ng pahina
Ang pagpipiliang ito ay nangangailangan ng pagtaas ng browser window sa application, ngunit hindi nangangailangan ng bahagi ng server at karagdagang tawag server-to-server para sa palitan code ng pahintulot sa access token.
Halimbawa
Buksan ang browser gamit ang login page:
> GET /oauth/authorize?response_type=token&client_id=464119 HTTP/1.1 > Host: connect.mail.ru

Pagkatapos magbigay ng pahintulot ang user, magkakaroon ng redirect sa isang karaniwang stub page, para sa Mail.Ru ito ay 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

Dapat hadlangan ng application ang huling pag-redirect at makuha mula sa address access_token at gamitin ito upang ma-access ang mga protektadong mapagkukunan.

Awtorisasyon sa pamamagitan ng pag-login at password

Ang pahintulot sa pamamagitan ng pag-login at password ay isang simpleng kahilingan sa POST, bilang resulta kung saan ito nagbabalik access token. Ang scheme na ito ay hindi bago, ngunit kasama sa pamantayan para sa pangkalahatan at inirerekumenda para sa paggamit lamang kapag ang iba pang mga pagpipilian sa pahintulot ay hindi magagamit.
Halimbawa
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: application/x-www-form-urlencoded > > grant_type=password&client_id=31337&client_secret=deadbeef&username=api@corp.mail.ru& password= qwerty< HTTP/1.1 200 OK < Content-Type: application/json < < { < "access_token":"SlAV32hkKG", < "token_type":"bearer", < "expires_in":86400, < "refresh_token":"8xLOxBtZp8", < }
Paglalarawan sa detalye

Pagpapanumbalik ng nakaraang awtorisasyon

Karaniwan, access token ay may limitadong buhay ng istante. Ito ay maaaring maging kapaki-pakinabang, halimbawa, kung ito ay ipinadala bukas na mga channel. Upang maiwasang pilitin ang user na mag-login pagkatapos mag-expire access token"at, sa lahat ng mga opsyon sa itaas, bilang karagdagan sa access token"Baka bumalik ka ulit refresh token. Magagamit mo ito para makakuha access token gamit ang isang kahilingan sa HTTP, katulad ng awtorisasyon gamit ang isang login at password.
Halimbawa
> POST /oauth/token HTTP/1.1 > Host: connect.mail.ru > Content-Type: 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", < }

Bilang resulta nito aplikasyon ng kliyente ang paggamit ng AdWords API ay maaaring ma-access ang iyong AdWords account nang walang address email at password ng gumagamit.

Paggawa ng OAuth2 Credentials

Upang gumawa ng mga kredensyal ng OAuth2, sundin ang mga hakbang sa ibaba.

Pagtukoy sa Uri ng Application

Una, kailangan mong matukoy uri ng aplikasyon, na gusto mong likhain. Mayroong dalawang uri ng mga application sa AdWords API:

  • mai-install na application(inirerekomenda);
  • web application.

Gamit ang talahanayan sa ibaba, tukuyin gustong uri mga aplikasyon.

Ano ang pipiliin Sitwasyon
Nai-install na application(inirerekomenda)
  • Pinamamahalaan mo ang lahat ng AdWords account gamit ang isang manager account pinakamataas na antas.
  • Nagsisimula ka pa lang ba o gusto mong makapagsimula nang mabilis?
  • Gagana ang iyong application sa isang hanay ng mga AdWords account na may maraming user.
Web application
  • Gusto mo bang i-authenticate para magbigay iba't ibang mga gumagamit iba't ibang mga karapatan sa pag-access sa data ng AdWords account.
  • Kailangan mong lumikha ng maraming hanay ng mga kredensyal, halimbawa upang pamahalaan ang mga third-party na account.
  • Ang iyong application ay nangangailangan ng mga callback URL na hindi suportado sa mga naka-install na application.
Pansin!Kahit na gumagawa ka ng isang web application, maaari mo pa ring piliin kung aling application ang i-install. Ang pangunahing pagkakaiba ay kung kailangang isagawa ang isang callback pagkatapos maibigay ang token. Halimbawa, kung gumagamit ka ng isang top-level na manager account upang pamahalaan ang lahat ng iyong AdWords account, ang application na iyong ini-install ay dapat na nakarehistro, kahit na ang client application ay naa-access sa Internet. Tandaan.ay tinatalakay sa ibaba. Kung hindi mo kailangan ang functionality ng account ng serbisyo, lubos naming inirerekomenda ang paggamit ng proseso ng pahintulot para sa mai-install o web application.

Paggawa ng client ID at sikretong code

Kapag natukoy mo na ang uri ng iyong aplikasyon, mag-click sa naaangkop na tab sa ibaba at sundin ang mga tagubilin para gumawa ng ID at lihim na code kliyente.

Nai-install na application

  1. Bukas
  2. Gumawa ng proyekto Lumikha.
  3. Gumawa ng Mga Kredensyal, at pagkatapos - OAuth Client ID.
  4. I-save
  5. Sa seksyon Uri ng aplikasyon pumili Iba pang mga uri at ibigay ang kinakailangang impormasyon.
  6. I-click Lumikha.
  7. identifier At lihim na susi
Web application
  1. Bukas
  2. Mula sa drop-down na menu ng mga proyekto, piliin Gumawa ng proyekto, pagkatapos ay tukuyin ang pangalan ng proyekto at baguhin ang ID nito kung kinakailangan, pagkatapos ay i-click ang pindutan Lumikha.
  3. Sa pahina ng Mga Kredensyal, piliin Gumawa ng Mga Kredensyal, at pagkatapos - OAuth Client ID.
  4. Maaaring hilingin sa iyo na ibigay ang pangalan ng produkto. Sa kasong ito, i-click I-customize ang window ng kahilingan sa pag-access, ipasok ang hiniling na impormasyon at i-click I-save upang bumalik sa screen ng Mga Kredensyal.
  5. Sa seksyon Uri ng aplikasyon pumili Web application. Sundin ang mga tagubilin para tukuyin ang mga source ng JavaScript at/o mga URI sa pag-redirect.
  6. I-click Lumikha.
  7. Sa lalabas na pahina, kopyahin identifier At lihim na susi client - kakailanganin mo ang mga ito kapag nagse-set up ng client library.

Sundin ang mga tagubilin sa ibaba upang i-configure ang paggamit ng mga kredensyal ng OAuth2 sa client library ng iyong wika.

Tandaan.Kung pipiliin mong hindi gamitin ang isa sa aming mga library ng kliyente, kakailanganin mong ipatupad ang mga proseso para sa o sa iyong sarili.

OAuth2 Playground

Ang isang alternatibong opsyon para sa paggawa ng mga kredensyal ng OAuth2 ay ang paggamit OAuth2 Playground. Kasama ng Google API Console, pinapayagan ka ng system na ito na gumawa ng mga token ng OAuth2 nang mag-isa.

Ang OAuth2 Playground system ay idinisenyo para sa mga user na nangangailangan ng access sa mga account para lang sa isa manager account o user ng AdWords. Kung kailangan mong mag-prompt para sa mga kredensyal para sa maraming user, mas mainam na gumamit ng mga library ng kliyente tulad ng inilarawan sa itaas.

Mga setting

Babala.Upang gamitin OAuth2 Playground, kailangan mong lumikha client id Para sa . Ito ang nag-iisa isang uri ng application na gumagana sa OAuth2 Playground. Magbasa nang higit pa sa seksyon sa itaas.

Paano makakuha ng client ID at secret key

  1. Bukas
  2. Mula sa drop-down na menu, pumili ng kasalukuyang proyekto o lumikha ng bago.
  3. Sa pahina ng Mga Kredensyal, piliin Gumawa ng Mga Kredensyal, at pagkatapos - OAuth Client ID.
  4. Sa seksyon Uri ng aplikasyon pumili Web application.
  5. Sa seksyon idagdag susunod na linya: https://site/oauthplayground
  6. I-click Lumikha.
  7. Isulat ito identifier At lihim na susi mga kliyenteng ipinahiwatig sa pahinang lalabas.

Kakailanganin mo ang mga ito sa susunod na hakbang.

Babala.Paano gumawa ng mga token Mula sa ano Google account

Naka-sign in ka sa iyong browser, depende ito sa kung aling mga AdWords account ang maaari mong ma-access gamit ang mga kredensyal ng OAuth2 na iyong nilikha. Maaaring mas mahusay na kumpletuhin ang mga hakbang na ito sa incognito mode o nang hindi nagsa-sign in sa iyong Google Account. Malamang na kakailanganin mong gumamit ng mga kredensyal na iba sa account na kinaroroonan mo noong natanggap mo ang Client ID at Secret Key.

Paano alisin ang OAuth2 Playground mula sa Client ID Since meron ka na, hindi mo na kailangang gumamit ng OAuth2 Playground bilang iyong nalutas na URI ng pag-redirect. Upang alisin ang system na ito sa listahan, sundin ang mga hakbang na ito:

  1. Pumunta sa .
  2. Piliin ang iyong proyekto mula sa drop-down na menu.
  3. Sa page ng Mga Kredensyal, piliin ang pangalan ng client ID.
  4. Alisin ang https://site/oauthplayground mula sa field Pinapayagan ang mga URI sa pag-redirect. Pakitandaan na kailangan mong umalis kahit man lang isa I-redirect ang URI.
  5. I-click I-save.

Kaya nasa iyo ang iyong mga kredensyal sa OAuth. Maaari mo na ngayong i-query ang AdWords API at gamitin ito laban sa kinakailangang library ng kliyente.

Mga account sa serbisyo ng OAuth2

Inilalarawan ng seksyong ito kung paano i-access ang AdWords API gamit ang mga account ng serbisyo.

Ang account ng serbisyo ay isang account na kabilang sa isang aplikasyon, hindi isang hiwalay. end user. Nagbibigay ang mga account ng serbisyo ng pakikipag-ugnayan sa pagitan ng isang web application at isang serbisyo ng Google. Ang iyong application ay tumatawag sa API sa ngalan ng account ng serbisyo nang hindi direktang kinasasangkutan ng mga user.

Binibigyang-daan ng AdWords API ang access sa account ng serbisyo sa mga domain ng G Suite.

Ang account ng serbisyo ay nagpapatupad ng proseso ng OAuth2, na sa halip na pahintulutan ang user ay gumagamit ng key file na maa-access lang ng iyong application.

Ang paggamit ng mga account ng serbisyo ay nagbibigay ng dalawang makabuluhang pakinabang:

  • Pagpapahintulot sa pag-access ng application sa Google API isinasagawa sa yugto ng pag-setup. Iniiwasan nito ang abala sa pag-aatas ng interbensyon ng user o pag-cache ng mga token sa ibang mga daloy ng OAuth2.
  • Ang pagpapanggap ng ibang mga user sa application, kung kinakailangan, ay ginagawa bilang bahagi ng proseso ng pag-apruba ng OAuth2.
Tandaan. Kung hindi mo gagamitin mga espesyal na function domain, tulad ng pagpapanggap, sa halip na mga account ng serbisyo, lubos na inirerekomendang gumamit ng proseso para sa . Ang na-install na OAuth2 at mga proseso ng web app ay nangangailangan lamang ng pakikilahok ng user nang isang beses, sa oras na maibigay ang access sa account.

Alternatibo sa mga account ng serbisyo

Ang mga account ng serbisyo ay malawakang ginagamit upang magbigay pag-access sa software sa API sa pamamagitan ng OAuth2 protocol nang walang interbensyon ng user.

Gayunpaman, hindi madali ang pag-set up ng mga naturang account upang gumana sa AdWords API. Isang mas simpleng alternatibo ay may paulit-ulit na refresh token. Ang diskarte na ito ay nagpapahintulot sa application na humiling ng mga bagong token ng pag-access anumang oras.

Bilang bahagi ng prosesong ito, kailangan mong i-configure ang pahintulot ng aplikasyon sa pamamagitan ng client library gaya ng inilarawan sa itaas. Kailangan lang itong gawin nang isang beses, dahil mag-e-expire ang mga token Mga update ng Google Ang OAuth2 ay walang limitasyon.

Mga kinakailangan

  • Isang domain ng G Suite na pagmamay-ari mo, gaya ng mydomain.com o mybusiness.com.
  • token ng developer ng AdWords API at mas mainam na isang pansubok na account.
  • para sa wikang ginagamit.

Pagse-set up ng access para sa isang client account

Una, kailangan mong gumawa ng service account key sa Google API Console.

  1. Mag-sign in sa iyong G Suite account, buksan ang .
  2. Mula sa drop-down na menu ng mga proyekto, piliin Gumawa ng proyekto, pagkatapos ay ibigay ang kinakailangang impormasyon at i-click ang button Lumikha. Bagong proyekto lalabas sa aktibong listahan.
  3. Sa menu sa kaliwa itaas na sulok pumili IAM at administrasyon, at pagkatapos - Mga account ng serbisyo sa menu sa kaliwa.
  4. I-click Gumawa ng account ng serbisyo sa tuktok ng pahina.
  5. Ilagay ang pangalan ng account ng serbisyo.
  6. Lagyan ng tsek ang kahon Lumikha ng bago pribadong susi at piliin ang uri ng JSON key.
  7. Lagyan ng tsek ang kahon I-enable ang delegasyon ng access ng data sa iyong G Suite domain at ibigay ang pangalan ng produkto para sa window ng kahilingan sa pag-access.
  8. I-click Lumikha. Magsisimulang mag-download ang JSON key file. I-save ang file sa isang ligtas na lugar kung saan ikaw lang ang may access.
  9. Sa pahina Mga account ng serbisyo may lalabas na bagong service account.
Tandaan. Dahil makokontrol ang pagpapanggap ng user lamang sa antas ng domain, upang magamit ang mga account ng serbisyo at ang proseso ng pag-apruba sa Mga serbisyo ng Google OAuth2, kakailanganin mo ang iyong sariling domain na nakarehistro sa G Suite. Ang lahat ng mga gumagamit ng domain na gumagamit ng isang account ng serbisyo na may naaangkop na mga pahintulot ay maaaring magpanggap bilang sinumang gumagamit ng domain.

Mga isyu sa seguridad

Dahil ang G Suite ay pinamamahalaan sa antas ng domain, dapat mong secure na protektahan ang pangunahing file na nagbibigay-daan sa mga awtorisadong account na ma-access Mga serbisyo ng Google. Ito ay lalong mahalaga dahil sa katotohanan na binibigyan namin ang account ng serbisyo ng kakayahang magpanggap bilang sinumang gumagamit ng domain.

Bilang karagdagan, inirerekomenda na ang bawat account ng serbisyo ay may access lamang sa isang Google API. Ginagamit ang field para dito saklaw, na inilalarawan sa susunod na seksyon. ganyan hakbang sa pag-iwas nagbibigay-daan sa iyong limitahan ang dami ng data na bukas sa hindi awtorisadong pag-access kung sakaling makompromiso ang isang pangunahing file.

Paano magbigay ng mga kakayahan sa pagpapanggap

Upang magbigay ng mga kakayahan sa pagpapanggap sa isang account ng serbisyo, sundin ang mga hakbang na ito:

Maa-access mo na ngayon ang iyong AdWords account gamit ang iyong service account bilang bahagi ng proseso ng pag-apruba ng OAuth2.

Pag-set up ng client library

Pumili ng wika upang tingnan ang mga tagubilin para sa pag-set up ng client library.

Tandaan.Kung pipiliin mong hindi gamitin ang isa sa aming mga library ng kliyente, kakailanganin mong ipatupad ang proseso sa iyong sarili.

Pag-optimize ng mga kahilingan sa OAuth2

Kung hindi gumagamit ang iyong app ng pagbabahagi ng kredensyal, maaari nitong mapataas nang malaki ang bilang ng mga kahilingang ipinadala sa Google. Bilang resulta, ang aming mga server ay maaaring magpataw ng mga paghihigpit sa naturang aplikasyon, na magbabawas sa bilis ng operasyon nito.

Inilalarawan ng seksyong ito kung paano i-optimize ang pamamahala ng kredensyal ng OAuth2 upang mas epektibong makipag-ugnayan ang iyong application sa AdWords API.

Pansin!Sa ilalim ng termino mga kredensyal Ito ay tumutukoy sa buong hanay ng mga katangian ng kredensyal ng OAuth2, kabilang ang token ng pag-access at petsa ng pag-expire nito.

Mga diskarte sa pamamahagi ng kredensyal

Ang pamamahagi ng mga kredensyal sa lahat ng mga kahilingan sa API ay nagpapabuti sa pagganap at iniiwasan din ang mga overhead at mga error dahil sa mga paglabag sa pagpilit.

Ang diskarte sa pamamahagi ng kredensyal ay nakasalalay sa disenyo ng aplikasyon.

Sa mga multi-threaded na application, dapat mong gamitin ang parehong mga kredensyal para sa bawat session ng thread.

Sa multiprocess at ipinamahagi na mga aplikasyon Kinakailangang ipatupad ang ilang imprastraktura para sa pagpasa ng mga kredensyal sa pagitan ng mga proseso. Bilang karagdagan, ang mga thread ay dapat na pigilan mula sa pagharang at mga kondisyon ng lahi ay dapat mangyari.

Sa isang application na parehong multi-process/ibinahagi at multi-threaded, ang bawat proseso ay kailangang pagsamahin ang parehong mga diskarte.

Ang mga sumusunod ay mga diskarte para sa pag-authenticate ng isang AdWords account, gaya ng top-level na manager account sa isang hierarchy.

Pagkatapos ay inilalarawan nito kung paano iaangkop ang mga estratehiyang ito para sa .

Mga Multithreaded na Application

Sa mga multi-threaded na application, dapat na available ang mga kredensyal sa iba't ibang thread. Ang mga pag-update ng kredensyal ay dapat gawin nang sabay-sabay upang maiwasan ang mga kondisyon ng lahi.

Ipinapakita ng diagram na ito ang mga thread na nagpapasa ng mga kahilingan sa AdWords API sa runtime. Ginagamit ang isang nakabahaging grupo ng mga session (mga user). Tandaan na ang bawat session ay dapat gumamit ng parehong object ng mga kredensyal. Bilang tugon sa bawat kahilingan ng API, natatanggap ng thread ang kaukulang session (user). Kung kailangang i-refresh ang access token, dapat itong gawin nang sabay-sabay upang maiwasan ang kondisyon ng lahi. Sa madaling salita, ang object ng mga kredensyal ay dapat na ligtas sa thread.

Pinapadali ng mga library ng kliyente ang pagpasa ng mga kredensyal sa pagitan ng mga thread. Ang bawat library ng kliyente ay may session (o user) object na may mga kredensyal na ginagamit nitong muli sa kabuuan ikot ng buhay. Upang gumamit ng mga kredensyal sa mga session, dapat mong ilapat ang mga ito kapag gumagawa ng bawat session. Sa lahat ng library ng kliyente, ang kredensyal ay isang bagay na ligtas sa thread na sabay-sabay na ina-update kapag nag-expire ang access token.

Halimbawa, sa Java client library gagawa ka ng singleton Credential class at gagamitin ito para sa lahat ng session.

Multiprocess at distributed na mga application

Sa maraming proseso at ipinamahagi na mga aplikasyon, dapat na patuloy ang pamamahagi ng kredensyal. Upang maiwasan ang isang sitwasyon ng lahi kung saan sinusubukan ng maraming server na mag-update ng mga kredensyal nang sabay-sabay (na nagreresulta sa labis na mga kahilingan sa pag-update), inirerekomendang pilitin ang pag-update at ibigay ang na-update na mga kredensyal sa lahat ng mga proseso at server.

Halimbawa, ang isang gawain o serbisyo ay maaaring pana-panahong mag-update ng mga kredensyal at itulak ang mga ito sa isang data store kung saan gagamitin ang mga ito ng iba't ibang mga server.

Ipinapakita ng diagram ang pana-panahong pag-update ng mga kredensyal at pagtatala ng kanilang mga katangian sa data store. Ang lahat ng mga server pagkatapos ay makakatanggap ng mga kredensyal bago gumawa ng isang kahilingan sa API.

I-update ang gawain

Pana-panahong ina-update ng gawain sa pag-update ang mga kredensyal at ipinapadala ang mga ito sa data store. Ang gawaing ito ay hindi dapat maghintay para sa kasalukuyang mga kredensyal na mag-expire, dahil ito ay magsasanhi sa application na mawalan ng ilang oras dahil sa kakulangan ng mga wastong kredensyal.

Ang pinakamahusay na alternatibo ay pana-panahon sapilitang pag-update, kung saan ang mga kredensyal sa data store ay pinapalitan ng mga bago sa bawat pagkakataon. Ang gawain sa pag-update ay dapat na maisagawa nang maayos bago mag-expire ang kasalukuyang mga kredensyal upang magkaroon ng sapat na oras kung sakaling magkaroon ng pansamantalang error. Maaari kang magsimula sa pamamagitan ng pagsasagawa ng update tuwing 15 minuto.

Tandaan.Kung mag-e-expire ang token sa pag-access ng kredensyal habang pinoproseso ang isang kahilingan sa API, isasagawa pa rin ang kahilingan. Halimbawa, kung gumawa ka ng matagal nang query at wala pang isang minuto ang natitira upang ma-access, ibabalik pa rin ang mga resulta.

Imbakan ng data

Ang data store ay ginagamit upang magbigay ng mga kredensyal iba't ibang proseso at mga server.

Upang gawin ito, maaari kang gumamit ng isang umiiral nang data warehouse o lumikha ng isang dalubhasa kung saan ang mga server ay makakatanggap ng mga kredensyal. Bilang posibleng solusyon maaari kang gumamit ng mga server ng caching (halimbawa, Memcached o Infinispan) at mga tindahan ng data ng NoSQL (halimbawa, MongoDB).

Ang pangunahing layunin ng data warehouse ay magbigay ng maaasahang interface sa lahat ng server na nag-a-access sa API. Kailangang i-optimize ang operasyon nito upang mabilis na mabasa ang data: mas madalas na magbabasa ng mga kredensyal ang mga server at proseso kaysa sa pag-update ng mga ito.

Tandaang panatilihing secure ang iyong mga kredensyal.

Kapag nagse-save ng mga kredensyal, dapat mong i-save ang expiry_time property ( kasalukuyang panahon+ expires_in) at refresh_token kasama ang access_token property. Ang expiry_time property (token expiration date) ay kinakalkula gamit ang sumusunod na formula: access_token update request time + expires_in time (token expiration date).

Pool ng server

Ang bawat server sa pool ay nakakakuha ng pinakabagong mga kredensyal mula sa data store bago ipadala ang kahilingan. Hangga't matagumpay na tumatakbo ang gawain sa pag-update, magiging wasto ang mga kredensyal. Gayunpaman, kung nabigo ang gawain sa pag-update o data store, dapat mayroong mekanismo ng fallback.

Kung hindi makakuha ng mga kredensyal ang server o proseso mula sa data store, o kung nag-expire na ang mga kredensyal, dapat i-update ng server ang mga kredensyal nito upang payagan ang application na magpatuloy sa pagtatrabaho sa API hanggang sa malutas ang problema.

SA multithreaded na mga proseso ang parehong diskarte para sa pamamahagi ng mga kredensyal sa pagitan ng mga thread ay dapat gamitin.

Multiple Account Authentication

Ang mga kredensyal na gagawin mo para sa iyong AdWords manager account ay magagamit para ma-access ang lahat ng child account. Karaniwang kailangan lang ng mga user na may isang manager account na gumawa ng mga kredensyal para sa top-level na manager account upang pahintulutan ang application para sa lahat ng subordinate na AdWords account.

Sa ibang mga kaso, ang application ay nangangailangan ng access sa mga AdWords account na hindi nauugnay sa isa't isa sa hierarchy ng manager account. Sa sitwasyong ito, kailangan mong gumawa at magpanatili ng maraming kredensyal para sa magkaibang account, halimbawa, para sa bawat AdWords client account kung saan mayroon kang access, o para sa bawat top-level na manager account sa mga independiyenteng hierarchy.

Maaari mong sundin ang mga diskarteng ito para sa parehong mga application na may kaunting pagbabago. Kapag gumagamit nakabahaging imbakan Ang mga kredensyal ay dapat na na-index ng account ID customerId upang matiyak na ang mga kredensyal ay nauugnay sa kinakailangang account. Bilang karagdagan, ang gawain sa pag-update ay dapat na i-update ang mga ito sa oras. Pagkatapos magkonekta ng bagong account, maaaring kailanganin mong ilunsad ito.

Sa wakas, sa mga multi-threaded na application, kailangan mong ipamahagi ang object ng mga kredensyal sa mga thread na tumatakbo sa account kung saan ito nauugnay.

Paano gumagana ang OAuth2

Tandaan. Hindi pa sinusuportahan ng AdWords API ang sabay-sabay na pag-sign in sa pamamagitan ng kahilingan sa pag-access ng data (hybrid na disenyo) o delegasyon ng awtoridad sa antas ng domain (2LO).

Saklaw

Ang access token ay maaaring magbigay iba't ibang antas access sa data. Nababagong parameter ang saklaw ay tumutukoy sa hanay ng mga mapagkukunan at pagpapatakbo kung saan ang token ay nagbibigay ng access. Kapag humihiling ng access token, nagpapadala ang iyong application ng isa o higit pang mga value sa parameter ng saklaw.

Nasa ibaba ang kasalukuyan at legacy na saklaw para sa AdWords API.

Offline na pag-access

Karaniwang humihiling ng offline na access ang isang client application na gumagamit ng AdWords API. Ito ay maaaring mangyari kung ang iyong aplikasyon ay kailangang magpatakbo ng mga batch na trabaho habang ang user ay nagba-browse sa iyong site nang walang koneksyon sa Internet.

Gumagamit ng offline na access ang mga naka-install na app bilang default.

Header ng kahilingan sa HTTP

Ang HTTP header sa bawat kahilingan sa AdWords API server ay dapat na kasama ang sumusunod na form:

Awtorisasyon: Tagapagdala ng THE_ACCESS_TOKEN

POST ... HTTP/1.1 Host: ... Awtorisasyon: Bearer 1/fFAGRNJru1FTz70BzhT3Zg Content-Type: text/xml;charset=UTF-8 Content-Length: ...

I-access at i-refresh ang mga token

Sa karamihan ng mga kaso, ang refresh token ay kailangang maimbak sa isang secure na lokasyon dahil maaaring kailanganin ito sa ibang pagkakataon. Para sa higit pang impormasyon tungkol sa paghiling ng pag-access at pag-refresh ng mga token, tingnan ang mga sumusunod na gabay:

Kapag nag-expire ang isang access token

Ang access token ay may expiration date na nakadepende sa halaga ng expires_in . Maaaring i-refresh ang isang nag-expire na access token gamit ang isang refresh token, ngunit awtomatiko itong ginagawa ng aming mga client library.

Maliban kung iba ang nabanggit, ang nilalaman ng pahinang ito ay lisensyado sa ilalim ng Creative Commons Attribution 3.0 License, at ang mga sample ng code ay lisensyado sa ilalim ng Apache 2.0 License. Para sa mga detalye, tingnan ang sa amin. Ang Java ay isang rehistradong trademark ng Oracle at/o mga kaakibat nito.

Na-update noong Setyembre 24, 2018