Zpět na seznam článků     Číst komentáře (0)     Verze pro tisk

Ako funguje OAuth

Autor: novellizator   
24.9.2012

Tento článok má za cieľ popísať ako funguje OAuth a selským rozumom vysvetliť, prečo práve tak funguje


Posledné dva dni som zápasil s OAUTH snažiac sa pochopiť, ako to funguje a PREČO to tak funguje. Priznám sa, bol som z toho na začiatku dosť zmetený a musel som si pár článkov prečítať, až mi všetko začalo do seba zapadať. V tomto článku som to skúsim osvetliť tak, aby to pochopil každý a nemusel sa tým toľko prehrabávať :)

Poznámka: Nebudem vysvetľovať, čo je oauth, to si už nájdete napr. na ttp://www.zdrojak.cz/clanky/oauth-novy-protokol-pro-autentizaci-k-vasemu-api/

V mojom rozprávaní budú vystupovať traja aktéri. V hlavných úlohách bežný Franta uživateľ, EcoPrint -služba na tisk fotiek a Facebook. Franta si bude chcieť naimportovať a vytisknout niektoré svoje privátne fotky z Facebooku. Vo vedľajsích úlohách bude app key, app secret, request token a access token.

(Token si predstavujte, ako nejaký náhodný string.)

Ako sa teda dohodnú?
Niekedy dávno pred tým, ako Franta vôbec navštívil nejaký Ecoprint, prebehla medzi EcoPrintom a Facebookom takáto konverzácia:


--
EcoPrint: Ahoj Facebook. Niektorí moji užívatelia budú chcieť naimportovať svoje fotky z Facebooku ku mne, aby si ich mohli vytlačiť. Dovolíš mi to?

Facebook: Ok, dovolím. Posielam ti výmenou app key a app secret – údaje, ktorými sa mi budeš podpisovať, keď niečo budeš chcieť – aby som vedel, že si to ty. (Áno, áno, app secret je niečo ako private key, ktorý bude slúžit na podpisovanie requestov. Čiže klasický elektronický podpis)
--


Teraz si už ale približme samotnú koverzáciu medzi Facebookom a EcoPrintom v čase, keď Franta chce niečo vytisknúť:

Najprv EcoPrint požiada o pridelenie nejakého tokenu od Facebooku. Facebook vygeneruje náhodný token a vráti ho (v oauth terminológii sa tento token nazýva REQUEST TOKEN). Nezabúdajme, že v tejto chvíli, Facebook nevie o ničom. Proste dostal dotaz:
“Čau, to som ja, EcoPrint. Prosím ťa vygeneruj, pre jedného môjho užívateľa nejaký náhodný token, ktorý ho bude jednoznačne identifikovať”.

Uvedomme si, čo kto vie. EcoPrint si jednoznačne spojila Frantom token. Facebook vie, že EcoPrint dostala jeden jeho token pre nového užívateľa.

Teraz, keď EcoPrint dostala token, tak zobrazí na svojej stránke link typu: “Prihláste sa prosím k facebooku, aby sme mohli importovať vaše facebookovské fotky a kontakty atď”. Tento link bude odkazovať na stránku Facebooku s tým, že ako parameter mu bude dodaný ten token.

Facebook teda dostane request typu: “Čau, tu EcoPrint. Posielam ti token, ktorý si mi vygeneroval. Jeden môj užívateľ by chcel, aby si mi povolil prístup k jeho fotkám”. Facebook spozornie a požíada užívateľa, aby sa prihlásil (tým pádom si facebook spáruje konkrétneho užívateľa s tokenom) a spýta sa ho niečo v zmysle: “Si si istý, že chceš, aby som EcoPrint povolil prístup k tvojim osobným údajom?”. Pokiaľ užívateľ súhlasí, facebook si token AUTORIZUJE. Týmto krokom tento token nadobúda hodnotu a je niečím, ako heslo. Jediným problémom je, že tento token putoval už v prehliadači užívateľa a teda keby niekto odposlúchal tento token (u Frantu), tak by vedel pristupovať aj k rôznym funkciám Facebooku - čo nie je bezpečné.

Preto je tu na rade ešte tretí krok. EcoPrint pošle priamy request (teda nie cez užívateľa) vo svojom menej na Facebook s obsahom: “Ahoj, to som ja EcoPrint. Mám ten request token, ktorý už uživateľ autorizoval. Pošli mi prosím ťa heslo, ktoré možem použivať.” Toto heslo sa volá ACCESS TOKEN. A pokiaľ bol request token autorizovaný, tak
facebook na oblátku pošle access token.

A hotovo! EcoPrint teraz môže od Facebooku získavať rôzne užívateľove údaje. Všetky dotazy budú tvaru: “Ahoj Facebook, to som ja EcoPrint. Pošli mi prosím ťa súkromné fotky tohto užívateľa. Pozri, mám an to heslo! Teda access token!”

Pozorovanie:
uvedomme si, že všetko kontroluje užívateľ. Keby Franta dostal paranoiu a prestal by EcoPrintu dôverovať, tak stačí, že sa obráti na Facebook a povie: “Ahoj Facebook. Bojím sa, že EcoPrint používa moje fotky na nekalé účely. Prosím ťa zablokuj Access token, ktorý si dal EcoPrintu”. A hotovo. Access token, ktorý použival EcoPrint ako heslo, je zneplatnený a EcoPrint sa už ďalej k osobným údajom Frantu nedostane.


Pozorovanie2:
uvedomme si, že je veľmi dôležité, aby sa
tretie strany nedozvedeli app secret. Keby sa to stalo, tak sa môžu vydávať za samotnú aplikáciu a nejakym phishingom (spravia stánku podobnú EcoPrintu a budú sa vydávať za ňu) získavať v jej mene súkromné údaje, ktoré by ináč mala mať len tá aplikácia. App secret je relatívne bezpečný pokiaľ ide o webové aplikácie. Horšie ale je, keď je tá aplikácia desktopová a teda hrozia rôzne reverzné
inžinierstvá.

Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 1.67/3

1  2  3  4  5    
(známkování jako ve škole)