Kas ir OAuth savienojums un kā to izmantot
Daudzi no mums saskaras ar OAuth, pārlūkojot tīmekli, un lielākā daļa no mums pat nezina par tās esamību. OAuth (Open Authentication) ir sistēma, kas trešo pušu tīmekļa vietnēm piešķir ierobežotu piekļuvi lietotāju kontiem, piemēram, jūsu Twitter vai Facebook kontiem. Tas ļauj apmeklētājiem sazināties vietnē, nepieprasot jaunu konta reģistrāciju vai atbrīvojot savu lietotājvārdu un paroli trešajām personām.
Šajā rokasgrāmatā es vēlos iepazīstināt ar OAuth koncepciju un to, kā to var piemērot izstrādātājiem. Jūsu OAuth lietojumprogrammas īstenošanā ir daudz tehnisku detaļu. Mans piemērs tiks rakstīts PHP, izmantojot čivināt bibliotēku iesaiņojumu, bet jūs varētu izmantot gandrīz jebkuru populāru programmēšanas API no Python uz Ruby vai Objective-C.
Pat ja koncepcija jūtas slepena, mēģiniet sagremot tik daudz, cik vien iespējams. Tā joprojām ir ļoti noslēpumaina tehnoloģija, kas tikko tika izstrādāta 2007. gadā. Es, protams, nesapratu, kā pilnveidot OAuth savienojumus pat pēc manām pirmajām konsultācijām, bet, ja jūs pieturaties pie tā, jūs ātri nokļūsiet. Tagad pirmais, lai kick off lietas, neliela ievads!
Kādas problēmas var atrisināt?
Ja uzskatāt, ka ir kļuvis daudz vairāk pieslēgts internetam, ir jēga, ka lietotāji vēlas koplietot informāciju starp vairākiem kontiem no Facebook uz čivināt, Tumblr, Foursquare un tagad pat uz mobilajām lietotnēm, piemēram, Path vai Instagram. Problēma, ar ko mēs saskaramies tagad, ir tas, kā to paveikt visdrošākajā un vienkāršākajā veidā. OAuth 1.0 ir mēģinājums atrisināt šo un daudzas citas problēmas, salīdzinot ar vecākiem OpenID standartiem. Lietotāji joprojām ievada savu lietotājvārdu / paroli citās trešo pušu tīmekļa vietnēs, lai izveidotu savienojumu ar OpenID. Tas lietotājam nedara nekādu drošību. Saskaņā ar OAuth specifikācijām lietotājam nekad nav jāglabā personiskie konta dati trešās puses datubāzē.
(Image Source: Martin Hassman)
Izmantojot OAuth, galvenais konta nodrošinātājs (piemēram, Twitter, Facebook) vispirms novirzīs jūs (lietotāju) uz autorizācijas lapu. Pēc tam lietotājs piesakās galvenajā tīklā un pēc tam vai nu pieņem, vai liedz jaunu savienojumu trešās puses tīmekļa vietnē. Šī tehnoloģija ir nesāpīgi vienkārša, un jūs vienmēr varat neatļaut savienojumus no sava konta iestatījumiem jebkurā brīdī. Ievērojiet, ka jūsu parole nekad netiek piešķirta trešajai pusei, kas padara šo protokolu daudz drošāku nekā tā partneris.
Kā darbojas Process
Standarta OAuth sarunā jāapsver 3 personas:
- Pakalpojumu sniedzējs - Galvenais tīkls, no kura mēģināt iegūt datus. Tie nodrošina API atbildi, piemēram, jūsu lietotājvārdu, profila attēlu, vietnes URL un citas lietas.
- Patērētājs - Trešās puses lietotne, kas vēlas saņemt datus. Tā būtu tīmekļa vietne vai mobilā lietotne, kas veic sākotnējo savienojuma pieprasījumu, un pēc tam apstrādā atgriešanas datus pēc atļaujas saņemšanas.
- Lietotājs - Persona, kas sēž aiz datora, mijiedarbojoties ar vietnēm, kas būtu jums!
OAuth mērķis nav nodrošināt konkrētu bibliotēku, lai izmantotu tīmekļa vietnes. Tas faktiski izveido “noteikumiem” atvērtā protokola API izveidei. Tātad, kamēr mēs visi varam gūt labumu no šīs tehnoloģijas, patiesībā izstrādātāji, kas patiešām atradīs interesi par šo jomu. Ja jums ir nepieciešama vairāk informācijas, skatiet 2010. gada aprīlī publicēto pārskatīto v1.0 versiju.
Saskaroties ar drošību
Visam procesam ir nepieciešami 2 dažādi taustiņi kopā ar piekļuves pilnvaru. Taustiņus nodrošina saknes pakalpojums pēc pieteikuma reģistrēšanas - tie ir pazīstami kā jūsu klients un slepenais ID. Klienta ID parasti tiek nodots autentifikācijas URL, lai serveris varētu atpazīt jūsu lietotni.
Slepens ID tiek glabāts jūsu kodā, lai serveris varētu pārbaudīt jūsu lietotnes identitāti. Līdzīgi attālais serveris savam slepenajam identifikatoram būs atbilstošs, lai jūs kļūdaini nesūtītu čivināt pieprasījumu uz Facebook API vai otrādi. Ja lietotājs atļauj savienojumu un visas atslēgas atbilst, tad tās tiek atgrieztas jūsu tīmekļa vietnē ar garu nejaušu skaitļu un burtu kodu.
Šo kodu izmanto, lai radītu jaunu pieejas atslēga. Tie darbojas līdzīgi sesijas mainīgajam, kuru varat glabāt sīkfailā, lai lietotājs būtu pieteicies jūsu vietnē. Vienīgā atšķirība ir tā, ka daudzi pakalpojumi nosūtīs atpakaļ piekļuves Token un Secret Access Token. Jums, visticamāk, būs vajadzīgi abi šie dati, lai izvilktu datus no servera. Piemērs varētu būt lietotāja profila fotoattēla pieprasīšana, lai saglabātu kopiju savā tīmekļa vietnē.
Čivināt OAuth bibliotēka
Izstrādātāji bieži vien nespēj sākt no nulles, tad kāpēc ne apskatīt iepriekš izveidotu bibliotēku? Tas ļaus ietaupīt mūsu laiku un galvassāpes, strādājot ar PHP. Apskatīsim tiešām vienkāršu piemēru uz čivināt API.
Es ļoti ieteiktu Jaisen Mathai sniegto Twitter Async par GitHub. Tas darbojas perfekti un pat nodrošina patiešām vienkāršus piemēru kodus, kurus mēs varam apskatīt. Tagad varat lejupielādēt .zip, bet pirms mēs apskatām kodu, mums ir jāreģistrējas un jāsaņem mūsu lietotnes ID no čivināt.
Jauna pieteikuma reģistrēšana
Twitter Dev Center ir lielisks resurss tiem, kas tikko sākuši lietot API. Dažu gadu laikā tas ir rakstīts un pārrakstīts daudzas reizes. Lapa, kuru mēs vēlamies, ir https://dev.twitter.com/apps/new. Tā vispirms lūgs jums pieteikties, tad jums ir jāievada daži akreditācijas dati jaunai lietojumprogrammai.
Lietotnes nosaukums un apraksts tiek parādīts, kad lietotājs dod atļauju autorizēties ar čivināt. Jūsu tīmekļa vietnei ir svarīga nozīme, lai atšķirtu trešās puses adresi. Būtu vieglāk strādāt ar tiešraides domēnu, lai gan testēšanai varat izmantot vietējo vietni, bet es neatbalstu šo metodi. Tas ir tikpat vienkārši reģistrēties bezmaksas interneta uzņēmējas un palaist jūsu skriptus no turienes.
Atgriešanās URL tiek norādīts kā galamērķis pēc tam, kad apmeklētāji vai nu ir apstiprinājuši vai noraidījuši atļauju. Tas ir jūsu darbs kā programmētājs lasīt atbildi no čivināt un izdrukāt atbilstošu ziņojumu. Async bibliotēkā mēs jau esam ieguvuši dažus akreditācijas datus, bet tie nedarbosies, jo atzvanīšanas URL ir norādīts ārējam emuāram. Ja esat ieinteresēts izveidot pilnībā savienotu OAuth tīmekļa lietojumprogrammu, tālāk ir iekļautas dažas detalizētas konsultācijas.
Pārbaudiet Kodu
Ja izmantojat attālo tīmekļa mitinātāju, iespējams, vēlēsities izņemt Async bibliotēkas un augšupielādēt tās jaunā direktorijā. Pretējā gadījumā varat vienkārši pārbaudīt pirmkodu. Iespējams, ka mēs vairs nevarēsim piesaistīt jaunu savienojumu. Bet praktiskā pieredze ar pirmkoda augšupielādi un rediģēšanu vienmēr ir mācību process.
Saknes direktorijā jūs atradīsiet nosaukumu simpleTest.php. Iekšpusē ir daudz PHP kodu, kas saistīti ar OAuth bibliotēkām. Es nevarēšu to visu kopā apvienot, bet mums vajadzētu apskatīt svarīgu koda bloku, lai noteiktu svarīgas detaļas.
Patērētāja atslēgai un slepenajam ID ir 4 ļoti svarīgi mainīgie lielumi, kā arī marķiera un slepenā identifikatora ID. Ne visi API pakalpojumi prasīs šo 4 komplektu, bet tas ir pareizs OAuth protokols. EpiTwitter klase prasa visas 4 vērtības kā parametrus un ģenerē savienojuma URL čivināt.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
Izmantojot šo jauno dinamisko URL, varat izveidot pieteikšanās pogu lietotājiem. Tas vispirms novirzītu tos drošai Twitter API lapai, kurā lietotājs vai nu pieņem vai noraida jūsu savienojumu. Neatkarīgi no to izvēles, lietotājs pēc tam tiek pāradresēts uz jūsu lietotnes atzvanīšanas URL. Visam atvērtajam protokolam ir ļoti tīra perspektīva, kas ļauj strauji attīstīties, jo īpaši ar bibliotēkām, kas pieejamas praktiski visās valodās.
Saistītās saites
- hueniverse oauth 1.0 rokasgrāmata
- Maiga Ievads OAuth
- OAuth FAQ
- Facebook autentifikācijas Dev Guide
- Vienkāršs Twitter OAuth Signin
- OAuth lietošana ar čivināt kakao mērķī-C
- Izlietojot OAuth saprātīgi Rails
Secinājums
Cerams, ka šī iepazīšanās ar OAuth ir ieinteresēta lietotnes veidošanā pār protokolu. Daudzi izstrādātāji tiecas pēc šāda risinājuma, un OAuth 2.0 var būt savstarpēji saistītu sociālo tīklu nākotne. Es jau izmantoju vairāk nekā divus desmitus savienojumus savā Twitter kontā un esmu patiešām pārsteigts ar izstrādātāja dokumentāciju!
Skaidrs, ka par šo tēmu ir daudz ko teikt. Tas nav kaut kas, ko jūs varētu pilnībā apstrādāt vienā sēdē. Pārlūkojiet tīklu, lai iegūtu vairāk OAuth risinājumu, un informējiet mūs par savām domām tālāk minētajā diskusiju jomā.