Web Developmentexpert

Čo je OAuth?

OAuth je otvorený štandard pre autorizáciu, ktorý umožňuje aplikáciám získať obmedzený prístup k používateľským účtom bez zdieľania hesiel. Aktuálna verzia OAuth 2.0 je základom prihlásenia cez Google, Facebook, GitHub a ďalších poskytovateľov.

Definícia OAuth

Čo je OAuth

OAuth je otvorený štandard pre autorizáciu, ktorý umožňuje tretím stranám pristupovať k chráneným zdrojom používateľa bez toho, aby poznali jeho heslo. Prvá verzia OAuth 1.0 bola publikovaná v roku 2007 — iniciovali ju vývojári z Twitter a Google. Aktuálny štandard OAuth 2.0 bol publikovaný ako RFC 6749 v októbri 2012 a nie je spätne kompatibilný s verziou 1.0.

Dôležitý rozdiel: OAuth rieši autorizáciu (čo smie aplikácia robiť), nie autentifikáciu (kto je používateľ). Na autentifikáciu sa používa nadstavba OpenID Connect, postavená na OAuth 2.0.

Ako OAuth 2.0 funguje

  • Používateľ (Resource Owner) chce povoriť aplikácii prístup k svojim dátam
  • Aplikácia (Client) presmeruje používateľa na autorizačný server (napr. Google)
  • Autorizačný server overí používateľa a spýta sa na súhlas (consent screen)
  • Authorization Code — po súhlase server vráti jednorazový kód
  • Access Token — aplikácia vymení kód za prístupový token, s ktorým môže pristupovať k API
  • Refresh Token — voliteľný token na obnovenie prístupu bez opätovného prihlásenia

Medzi najväčších poskytovateľov OAuth patria Google, Facebook, Apple, Microsoft a GitHub. Používateľ tak nemusí vytvárať nový účet — prihlási sa existujúcim.

Praktický príklad

Príklad: Chcete sa zaregistrovať na novom webe a vidíte tlačidlo „Prihlásiť sa cez Google".

Po kliknutí vás web presmeruje na Google, kde sa prihlásite a odsúhlasíte zdieľanie mena a e-mailu. Google vráti webovej aplikácii autorizačný kód, aplikácia ho vymení za access token a pomocou neho získa vaše meno a e-mail z Google API. Heslo k vášmu Google účtu aplikácia nikdy nevidí.

Často kladené otázky

Čo je OAuth a na čo slúži?

OAuth je štandard pre autorizáciu, ktorý umožňuje aplikáciám pristupovať k vašim dátam (napr. e-mail, profil) bez toho, aby poznali vaše heslo. Je základom tlačidiel „Prihlásiť sa cez Google/Facebook".

Aký je rozdiel medzi OAuth a OpenID Connect?

OAuth rieši autorizáciu (čo smie aplikácia robiť s vašimi dátami). OpenID Connect je nadstavba nad OAuth 2.0, ktorá pridáva autentifikáciu (overenie totožnosti používateľa).

Je prihlásenie cez OAuth bezpečné?

Áno, OAuth je bezpečnejšie než zdieľanie hesla s treťou stranou. Token má obmedzené oprávnenia a platnosť, a používateľ ho môže kedykoľvek zrušiť v nastaveniach svojho účtu u poskytovateľa.

Aký je rozdiel medzi OAuth 1.0 a OAuth 2.0?

OAuth 2.0 je kompletne prepísaný štandard — je jednoduchší na implementáciu, podporuje mobilné aplikácie a používa bearer tokeny. OAuth 1.0 vyžadoval kryptografické podpisy na každú požiadavku, čo bolo zložitejšie.

Súvisiace pojmy

JWT (JSON Web Token)

JWT (JSON Web Token) je navrhovaný internetový štandard (RFC 7519) pre vytváranie prístupových tokenov vo formáte JSON s voliteľným podpisom a šifrovaním. Používa sa predovšetkým na autentifikáciu používateľov a bezpečný prenos údajov medzi aplikáciami.

API kľúč

API kľúč je tajný unikátny identifikátor, ktorý slúži na autentifikáciu a autorizáciu pri prístupe k API. Funguje ako „heslo pre aplikácie" — identifikuje, kto volá API, a umožňuje poskytovateľovi sledovať a obmedzovať prístup.

CORS (Cross-Origin Resource Sharing)

CORS je bezpečnostný mechanizmus prehliadačov, ktorý umožňuje webovej stránke pristupovať k zdrojom na inom serveri (iný origin). Bez CORS by prehliadače blokovali všetky požiadavky medzi rôznymi doménami kvôli politike rovnakého pôvodu (same-origin policy).

REST API

REST (Representational State Transfer) je softvérový architektonický štýl pre vytváranie webových služieb. Definuje pravidlá, ako by mali klient a server komunikovať cez HTTP protokol. REST API je dnes najrozšírenejší spôsob, akým webové aplikácie a mobilné appky získavajú a odosielajú dáta.

SDK (Software Development Kit)

SDK (Software Development Kit) je sada nástrojov, knižníc, dokumentácie a príkladov kódu, ktorá vývojárom uľahčuje vytváranie aplikácií pre konkrétnu platformu alebo službu. SDK zjednodušuje prácu s API tým, že poskytuje hotové funkcie namiesto priameho volania HTTP požiadaviek.

Potrebujete pomôcť s webom?

Napíšte mi a poradím vám s vaším projektom. Prvá konzultácia je zadarmo a nezáväzná.