Čo je pripojenie OAuth a ako ho používať
Mnohí z nás prichádzajú do kontaktu s OAuth pri surfovaní po webe a väčšina z nás ani nevie o svojej existencii. OAuth (Open Authentication) je systém, ktorý webovým stránkam tretích strán poskytuje obmedzený prístup k používateľským účtom, napríklad k účtom Twitter alebo Facebook. Umožňuje návštevníkom komunikovať v rámci lokality bez nutnosti registrácie nového účtu alebo uvoľnenia vášho používateľského mena a hesla tretím stranám.
V tejto príručke by som chcel predstaviť koncept OAuth a ako sa môže vzťahovať na vývojárov. Existuje veľa technických podrobností týkajúcich sa implementácie vlastnej aplikácie OAuth. Môj príklad bude napísaný v systéme PHP pomocou obálky knižnice v službe Twitter, ale môžete použiť takmer ľubovoľné populárne API programovania z Pythonu na Ruby alebo Objective-C.
Dokonca aj vtedy, keď sa tento pojem cíti záhadný, pokúste sa stráviť čo najviac. Je to stále veľmi tajomná technológia, ktorá bola práve prepracovaná už v roku 2007. Určite som nerozumel, ako môžem rozvinúť plné OAuth pripojenia aj po prvých mojich cvičeniach, ale ak sa s tým budete držať, rýchlo sa chystáte. Teraz najskôr vykopnúť veci, malý úvod!
Aké problémy môžeme vyriešiť?
Ak uvažujete o tom, o koľko viac sa pripojil internet, má zmysel len to, že používatelia budú chcieť zdieľať informácie medzi viacerými účtami z Facebook na Twitter, Tumblr, Foursquare a teraz aj do mobilných aplikácií, ako je cesta alebo Instagram. Problémom, ktorému teraz čelíme, je, ako to dosiahnuť najbezpečnejším a najjednoduchším spôsobom. OAuth 1.0 je pokus o vyriešenie tohto a mnohých ďalších problémov v porovnaní so staršími normami OpenID. Používatelia stále zadávajú svoje používateľské meno / heslo na iné webové stránky tretích strán len na to, aby sa pripojili do OpenID. To pre neho neumožňuje bezpečnejšie. Podľa špecifikácií OAuth používateľ nikdy nepotrebuje ukladať žiadne údaje osobného účtu do databázy tretích strán.
(Image Source: Martin Hassman)
Pomocou služby OAuth najprv vás hlavný poskytovateľ účtu (napríklad Twitter, Facebook) presmeruje vás (používateľ) na autorizačnú stránku. Používateľ sa potom prihlási do hlavnej siete a potom prijme alebo odmietne nové pripojenie na webovú stránku tretej strany. Technológia je bezbolestne jednoduchá a v každom okamihu môžete kedykoľvek zakázať autorizáciu pripojení z nastavení účtu. Všimnite si, že vaše heslo nie je nikdy poskytnuté tretej strane, ktorá robí tento protokol omnoho bezpečnejší ako jeho protějšek.
Ako funguje proces
Existujú tri strany, ktoré by mali zvážiť v štandardnom hovore OAuth:
- Poskytovateľ služieb - Hlavná sieť, z ktorej sa snažíte vytiahnuť údaje. Poskytujú odpoveď na rozhranie API, ako napríklad vaše používateľské meno, profilový obrázok, webovú adresu URL a ďalšie veci.
- Spotrebiteľ - Aplikácia tretej strany, ktorá sa snaží získať údaje. Bolo to webová stránka alebo mobilná aplikácia, ktorá robí počiatočnú žiadosť o pripojenie, potom spracuje aj údaje o návrate po autorizácii.
- užívateľ - Osoba sediaca za počítačom v interakcii s webovými stránkami, ktoré by ste boli vy!
Účelom služby OAuth nie je poskytovať konkrétnu knižnicu na používanie webových stránok. V skutočnosti to nastavuje “pravidlá” pre vytváranie API s otvoreným protokolom. Takže zatiaľ čo my všetci môžeme mať prospech z tejto technológie, je to vlastne vývojár, ktorý naozaj nájde záujem o túto oblasť. Ak potrebujete viac informácií, pozrite si revidované vydanie v1.0 vydané v apríli 2010.
Tvárou v tvár bezpečnosť
Celý proces nakoniec vyžaduje 2 rôzne tlačidlá spolu s prístupovým tokenom. Kľúče sú poskytované koreňovou službou po zaregistrovaní aplikácie - tieto sú známe ako vaše zákazník a tajné ID. ID klienta je vo všeobecnosti odovzdané do adresy URL autentifikácie, aby mohol server rozpoznať vašu aplikáciu.
Tajné ID sa uchováva vo vašom kóde, takže server môže overiť totožnosť vašej aplikácie. Podobne vzdialený server priradí váš tajný identifikátor svojmu vlastnému, aby ste nesprávne odoslali žiadosť na službu Facebook API alebo naopak. Ak užívateľ autorizuje pripojenie a všetky klávesy sa zhodujú, vrátia sa na vašu webovú stránku s dlhým kódom náhodných čísel a písmen.
Tento kód sa používa na vytvorenie nového prístupový token. Tieto sa správajú podobne ako premenná relácie, ktorú si môžete uložiť do súboru cookie, aby sa používateľ prihlásil na vašu webovú stránku. Jediný rozdiel je v tom, že mnoho služieb odošle späť Access Token a tajný prístupový token. Pravdepodobne budete potrebovať obidve z nich, aby vytiahli akékoľvek údaje zo servera. Príkladom môže byť vyžiadanie profilovej fotografie používateľa na uloženie kópie na vašich vlastných webových stránkach.
Príklad knižnice pre službu Twitter OAuth
Vývojári nie sú často pravdepodobné, že začnú od začiatku, tak prečo sa nepozerať do predtým postavenej knižnice? To nám ušetrí náš čas, a to z bolesti hlavy, pri práci s PHP. Pozrime sa na vytvorenie naozaj jednoduchého príkladu nad API služby Twitter.
Veľmi odporúčam Twitter Async od Jaisen Mathai na GitHub. Funguje perfektne a dokonca poskytuje aj naozaj jednoduché kódy príkladov, na ktoré sa môžeme pozrieť. Teraz môžete prevziať .zip, ale skôr než sa pozrieme do kódu, musíme sa zaregistrovať a dostať naše ID aplikácie zo služby Twitter.
Registrácia novej aplikácie
Aplikácia Twitter Dev Center je skvelým zdrojom pre tých, ktorí práve začínajú používať rozhranie API. V priebehu niekoľkých rokov sa už mnohokrát píše a prepisuje. Požadovaná stránka je https://dev.twitter.com/apps/new. Najprv vás požiada o prihlásenie, potom musíte zadať niektoré poverenia pre novú aplikáciu.
Názov aplikácie a popis sa zobrazia, keď používateľ prejde na autorizáciu pomocou služby Twitter. Webová adresa URL je tiež dôležitá na rozlíšenie adresy tretej strany. Bolo by jednoduchšie pracovať so živou doménou, aj keď môžete použiť testovací program localhost, ale túto metódu neodrádzam. Je rovnako ľahké sa zaregistrovať na bezplatný webový hostiteľ a spustiť skripty odtiaľ.
Adresa URL spätného volania je uvedená ako cieľová destinácia, keď návštevníci buď prijmú alebo odmietnu autorizáciu. Je to vaša práca ako programátor čítať odpoveď z Twitteru a zodpovedajúcim spôsobom odosielať správu. V knižnici Async už máme niektoré poverenia na mieste, ale nebudú fungovať, pretože adresa URL spätného volania je zadaná na externý blog. Ak máte záujem o vytvorenie plne pripojenej webovej aplikácie OAuth, zahrnul som niekoľko podrobných tutoriálov nižšie.
Pozrite sa na kód
Ak používate vzdialený webový hostiteľ, možno budete chcieť rozbaliť Async knižnice a nahrať ich do nového adresára. V opačnom prípade môžete len skontrolovať zdrojový kód. Je pravdepodobné, že budeme môcť vytiahnuť nové pripojenie tak ako tak. Ale praktické skúsenosti s nahrávaním a úpravou zdrojového kódu sú vždy vzdelávacím procesom.
V koreňovom adresári nájdete skript s názvom simpleTest.php. Vnútri je množstvo kódov PHP súvisiacich s knižnicami OAuth. Nebudem to môcť dať všetko pre vás, ale mali by sme sa pozrieť na dôležitý kódový blok, aby sme zistili pozoruhodné detaily.
Existujú 4 veľmi dôležité premenné pre spotrebiteľský kľúč a tajné ID spolu s tokenom a ID tajného tokenu. Nie všetky služby API budú vyžadovať túto sadu 4, ale je to správny protokol OAuth. Trieda EpiTwitter vyžaduje všetky 4 hodnoty ako parametre a generuje URL spojenia do Twitteru.
https://api.twitter.com/oauth/authorize?oauth_token=TOKEN_ID_HERE
Pomocou tejto novej dynamickej adresy URL môžete vytvoriť prihlasovacie tlačidlo pre svojich používateľov. To by nasmerovalo ich najprv na zabezpečenú stránku API služby Twitter, kde používateľ buď prijíma alebo odmieta vaše pripojenie. Bez ohľadu na ich výber sa používateľ potom presmeruje na adresu URL spätného volania aplikácie. Celý otvorený protokol má veľmi čistý pohľad, ktorý umožňuje rýchly vývoj, a to najmä v knižniciach dostupných prakticky v každom jazyku.
súvisiace odkazy
- hueniverse oauth 1.0 sprievodca
- Jemný úvod do systému OAuth
- OAuth FAQ
- Sprievodca overovaním Facebooku
- Jednoduché prihlásenie do služby OAuth pre službu Twitter
- Použitie OAuth s Twitter v kakaovom objekte-C
- Inteligentné využívanie OAuth v koľajniciach
záver
Dúfajme, že tento úvod do aplikácie OAuth vás zaujíma o vytvorenie aplikácií v protokole. Mnohí vývojári sa usilujú o takéto riešenie a OAuth 2.0 môže byť budúcnosťou prepojených sociálnych sietí. Už používam viac ako dve desiatky pripojení na môj Twitter účet a boli naozaj ohromení dokumentáciou pre vývojárov!
Je zrejmé, že na túto tému je veľa čo povedať. Nie je to niečo, čo by ste mohli plne spracovať v jednom posedení. Prehľadávajte v sieti viac riešení OAuth a dajte nám vedieť svoje myšlienky v diskusnej oblasti nižšie.