Kas yra „OAuth“ prisijungimas ir kaip jį naudoti
Daugelis iš mūsų susiduria su OAuth naršydami internete ir dauguma mūsų net nežino apie savo egzistavimą. „OAuth“ (Atviras autentifikavimas) yra sistema, suteikianti trečiųjų šalių svetainėms ribotą prieigą prie naudotojų paskyrų, pvz., „Twitter“ arba „Facebook“ paskyrų. Jis leidžia lankytojams sąveikauti svetainėje nereikalaujant naujo paskyros registravimo arba išleidžiant naudotojo vardą ir slaptažodį trečiosioms šalims.
Šiame vadove norėčiau pristatyti „OAuth“ koncepciją ir kaip ji gali būti taikoma kūrėjams. Savo „OAuth“ programos įdiegime yra daug techninių detalių. Mano pavyzdys bus parašytas PHP naudojant „Twitter“ bibliotekos pakuotę, bet galėtumėte naudoti beveik bet kurią populiarią programavimo API iš „Python“ į „Ruby“ arba „Objective-C“..
Net jei koncepcija jaučiasi paslaptinga, bandykite suvirškinti kiek galite. Tai vis dar labai paslaptinga technologija, ką tik buvo parengta 2007 m. Aš tikrai nesuprato, kaip sukurti visas „OAuth“ jungtis net po mano pirmųjų pamokų, bet jei prilipsite prie jo, greitai sugrįšite. Dabar pirmą kartą, kad išspręstumėte dalykus, mažas įvadas!
Kokias problemas galime išspręsti?
Jei manote, kiek daugiau prisijungė internetas, tik prasminga, kad naudotojai norės pasidalinti informacija tarp kelių „Facebook“ paskyrų į „Twitter“, „Tumblr“, „Foursquare“ ir dabar net į mobilias programas, pvz., „Path“ arba „Instagram“. Problema, su kuria susiduriame dabar, yra tai, kaip tai pasiekti kuo saugiau ir paprasčiausiai. OAuth 1.0 yra bandymas išspręsti šią problemą ir daug kitų problemų, palyginti su senesniais OpenID standartais. Vartotojai vis dar įveda savo naudotojo vardą / slaptažodį į kitas trečiųjų šalių svetaines tik prisijungdami prie OpenID. Tai vartotojui nesudaro saugesnio. Pagal OAuth specifikacijas naudotojas niekada neprivalo saugoti jokių asmeninių paskyros duomenų į trečiosios šalies duomenų bazę.
(Vaizdo šaltinis: Martin Hassman)
Su „OAuth“ pagrindinis paskyros teikėjas (pvz., „Twitter“, „Facebook“) pirmiausia nukreips jus (vartotoją) į autorizacijos puslapį. Tuomet naudotojas prisijungia prie pagrindinio tinklo, o tada priima ar neigia naują ryšį į trečiosios šalies svetainę. Technologija yra nesunkiai paprasta ir bet kuriuo metu galite neleisti prisijungti prie savo paskyros nustatymų. Atkreipkite dėmesį, kad jūsų slaptažodis niekada neperduodamas trečiajai šaliai, dėl kurios šis protokolas yra daug saugesnis nei jo partneris.
Kaip veikia procesas
Standartiniame „OAuth“ skambutyje yra trys šalys:
- Paslaugų teikėjas - Pagrindinis tinklas, kuriuo bandote ištraukti duomenis. Jie pateikia API atsakymą, pvz., Naudotojo vardą, profilio nuotrauką, svetainės URL ir kitus dalykus.
- Vartotojas - Trečiosios šalies programa nori gauti duomenis. Tai būtų svetainė arba mobilioji programa, kuri pateikia pradinį prisijungimo užklausą, o po to taip pat tvarko grąžinimo duomenis po leidimo.
- Vartotojas - Asmuo, sėdintis už kompiuterio, sąveikaujantis su svetainėmis, kurios jums būtų!
„OAuth“ tikslas nėra pateikti konkrečios bibliotekos, skirtos naudoti tinklapiuose. Jis iš tikrųjų sukuria “taisykles” sukurti atvirą protokolo API. Taigi, nors mes visi galime pasinaudoti šia technologija, tai iš tikrųjų kūrėjai, kurie tikrai domėsis šia sritimi. Jei jums reikia daugiau informacijos, peržiūrėkite 2010 m. Balandžio mėn.
Saugumas
Visam procesui galiausiai reikalingi 2 skirtingi raktai ir prieigos raktas. Klavišus suteikia root paslauga, kai užregistruojate programą - jie yra žinomi kaip jūsų klientas ir slaptas ID. Kliento ID paprastai perduodamas autentifikavimo URL, kad serveris galėtų atpažinti jūsų programą.
Slaptas ID yra jūsų kode, kad serveris galėtų patikrinti jūsų programos tapatybę. Panašiai nuotolinis serveris suderins jūsų slaptą ID su savimi, kad neteisingai atsiųstumėte „Twitter“ užklausą „Facebook“ API arba atvirkščiai. Jei naudotojas įgalina ryšį ir visi raktai atitinka, tada jie grąžinami į jūsų svetainę su ilgu atsitiktinių skaičių ir raidžių kodu.
Šis kodas naudojamas naujam generavimui prieigos raktas. Šie veiksmai yra panašūs į sesijos kintamąjį, kurį galite saugoti slapuke, kad vartotojas prisijungtų prie jūsų svetainės. Vienintelis skirtumas yra tas, kad daugelis paslaugų atsiųs prieigos raktą ir slaptą prieigos raktą. Jums reikės abiejų šių duomenų, kad ištrauktumėte duomenis iš serverio. Pavyzdžiui, gali būti prašoma vartotojo profilio nuotraukos išsaugoti kopiją savo svetainėje.
„Twitter OAuth“ bibliotekos pavyzdys
Dažnai tikėtina, kad kūrėjai pradės nuo nulio, tad kodėl gi ne pažvelgti į anksčiau pastatytą biblioteką? Tai padės mums išgelbėti mūsų laiką ir galvos skausmą dirbant su PHP. Pažvelkime į tikrai paprasto pavyzdžio sukūrimą ant „Twitter“ API.
Aš labai rekomenduoju Jaisen Mathai „Twitter Async“ GitHub'e. Jis puikiai veikia ir netgi suteikia keletą tikrai paprastų pavyzdžių kodų, kuriuos galime pažvelgti. Dabar galite atsisiųsti „zip“, bet prieš mes pažvelgsime į kodą, kurį turime užregistruoti ir gauti „Twitter“ programos ID.
Naujos programos registravimas
„Twitter Dev Center“ yra puikus šaltinis tiems, kurie tik pradeda naudotis API. Per kelerius metus jis buvo parašytas ir perrašytas daug kartų. Norimas puslapis yra https://dev.twitter.com/apps/new. Ji paprašys jūsų prisijungti iš pradžių, tada reikia įvesti kelis įgaliojimus naujai programai.
Programos pavadinimas ir aprašymas rodomi, kai vartotojas ketina leisti naudoti „Twitter“. Jūsų interneto adresas taip pat svarbus norint atskirti trečiosios šalies adresą. Būtų lengviau dirbti su tiesioginiu domenu, nors jūs galite naudoti „localhost“ testavimui, tačiau šio metodo nenoriu. Tai taip pat paprasta prisiregistruoti prie nemokamo žiniatinklio prieglobos ir paleisti savo scenarijus iš ten.
Atšaukimo URL nurodomas kaip galutinė paskirties vieta, kai lankytojai sutinka arba atsisako suteikti leidimą. Tai jūsų, kaip programuotojo, darbas perskaityti atsakymą iš „Twitter“ ir atitinkamai išsiųsti pranešimą. Async bibliotekoje jau turime tam tikrus įgaliojimus, tačiau jie neveiks, nes atgalinio ryšio URL yra nurodytas išoriniam dienoraščiui. Jei jus domina sukurti visiškai prijungtą „OAuth“ žiniatinklio programą, toliau pateikiau keletą išsamių vadovėlių.
Patikrinkite Kodą
Jei naudojate nuotolinį žiniatinklio prieglobą, galbūt norėsite išpakuoti Async bibliotekas ir įkelti juos į naują katalogą. Priešingu atveju galite tiesiog patikrinti šaltinio kodą. Tikėtina, kad vis tiek negalėsime pritraukti naujo ryšio. Tačiau praktinė patirtis naudojant pradinį kodą yra visada mokymosi procesas.
Į šaknų katalogą rasite pavadintą scenarijų simpleTest.php. Viduje yra daug PHP kodų, susijusių su OAuth bibliotekomis. Aš negalėsiu to padaryti kartu su jumis, bet turėtume pažvelgti į svarbų kodų bloką, kad būtų galima pastebėti svarbias detales.
Vartotojų raktui ir slaptam ID yra 4 labai svarbūs kintamieji, kartu su simboliu ir slaptu ženklu. Ne visoms API paslaugoms reikės šio 4 rinkinio, bet tai yra tinkamas OAuth protokolas. EpiTwitter klasė reikalauja visų 4 vertybių kaip parametrų ir generuoja ryšio URL į „Twitter“.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
Naudodami šį naują dinaminį URL galite sukurti prisijungimo mygtuką naudotojams. Tai pirmiausia nukreiptų juos į saugų „Twitter“ API puslapį, kuriame naudotojas priims arba neigia jūsų ryšį. Nepriklausomai nuo jų pasirinkimo, vartotojas vėl nukreipiamas į jūsų „app“ atšaukimo URL. Visas atviras protokolas turi labai švarią perspektyvą, leidžiančią sparčiai vystytis, ypač bibliotekose, kurios yra prieinamos beveik visomis kalbomis.
Susijusios nuorodos
- hueniverse oauth 1.0 vadovas
- Švelnus „OAuth“ įvadas
- OAuth DUK
- „Facebook“ autentifikavimo įrenginio vadovas
- Paprasta Twitter OAuth Signin
- „OAuth“ naudojimas su „Twitter“ kakavos tikslo C programoje
- Išnaudoti „OAuth“ protingai „Rails“
Išvada
Tikimės, kad šis įvadas į „OAuth“ jus domina užmegzti programas per protokolą. Daugelis kūrėjų siekė tik tokio sprendimo, o OAuth 2.0 gali būti tarpusavyje susijusių socialinių tinklų ateitis. Aš jau naudoju daugiau kaip du tuzinus jungčių į mano „Twitter“ paskyrą ir tikrai sužavėjau kūrėjo dokumentaciją!
Akivaizdu, kad šiuo klausimu yra daug ką pasakyti. Tai nėra kažkas, kurį galėtumėte visiškai apdoroti viename posėdyje. Apsilankykite tinkle daugiau OAuth sprendimų ir praneškite mums savo mintis toliau pateikiamoje diskusijų srityje.