OAuth 2.0 – kas, kam ir kaip

2019 07 12

Duomenų saugumas yra viena opiausių šiandienos problemų. Interneto amžiuje virtualiai apmokame sąskaitas, perkame internetinėse parduotuvėse, atsiskaitinėjame už paslaugas ir t.t. Ne visada gerai suprasdami ir įvertindami duomenų tiekėjo saugumo užtikrinimą, pateikiame savo asmeninius duomenis, taip pat, dažnai prisijungdami įvairiose sistemose naudojame tuos pačius slaptažodžius. Jei nors vienas iš duomenų tiekėjų neužtikrina saugumo, atsiranda didelė tikimybė, jog mūsų asmeniniai duomenys pateks į internetinių sukčių rankas.

Dar viena problema, su kuria susiduria jau ne galutiniai įvairių sistemų vartotojai, o jų kūrėjai yra autorizavimo centralizacija. Kuriant įvairias aplikacijas kiekvieną kartą reikia užtikrinti asmens duomenų apsaugą, įgyvendinti vartotojų prisijungimo registravimo funkcijas, kas praktikoje, iš tiesų, yra nemenkas iššūkis, užimantis daug laiko.
OAuth2 sėkmingai susitvarko su šiomis problemomis pakeisdama tradicinių sistemų veikimo principą.

Kas, visgi, yra OAuth 2.0 ir kaip tai veikia?

OAuth2 – autorizacijos sistema (angl. framework), leidžianti gauti ribotą prieigą, nepateikiant prisijungimo duomenų trečiosioms šalims (angl. resource server). OAuth2 veikia taip: panaudojant HTTP protokolą perduoda vartotojo autorizavimą į autorizacijos paslaugų tiekėjų (Facebook, Google, Amazon, OpenAM ir kt.) rankas, kuriose yra vartotojo paskyra ir įgalioja trečiųjų šalių programas pasiekti vartotojo paskyrą. OAuth2 suteikia galimybę pasiekti apsaugotus resursus žiniatinklio ir darbalaukio programoms bei mobiliesiems įrenginiams.

Iš apibrėžimo galime išskirti OAuth2 vaidmenis, kuriuos būtina žinoti toliau aiškinantis sistemos veikimo principą.

Vaidmenys:
Resursų serveris ( angl. resource server) – žiniatinklio serveris, kuris talpiną resursų rinkinį, kurie apsaugoti naudojant OAuth2 autorizacijos sistema. Resursui gauti turi būti pateikiamas prieigos raktas (angl. access token).

  • Resurso savininkas (angl. resource owner) – subjektas, kuriam priklauso resursų serveryje talpinami resursai bei galintis suteikti prieigą prie saugomų resursų, kai resurso savininkas yra asmuo, jis vadinamas galutiniu vartotoju (angl. end-user).
  • Klientas (angl. client) – aplikacija, kuri resurso savininko (angl. resource owner) leidimu atlieka saugias resurso gavimo užklausas. Sąvoka „klientas“ nereiškia jokių konkrečių įgyvendinimo charakteristikų (pvz.: gali būti aplikacija, veikianti serveryje, staliniame kompiuteryje ar kituose įrenginiuose).
  • Autorizacijos servisas (angl. authorization server) – žiniatinklio serveris, kuris identifikuoja resurso savininką ir po tinkamos autorizacijos išduoda prieigos raktus (angl. access token). Autorizacijos serverio tiekėjai: Facebook, Twitter, Google, Okta ir kt. Autorizacijos serveris gali būti ir nuosavas.

OAuth2 veikimo principas

Susipažinę su OAuth2 vaidmenimis galime suprasti, kaip vienas su kitu bendradarbiauja aukščiau apžvelgti vaidmenys.

Diagramos paaiškinimas:

  1. Resurso savininkas (vartotojas) kreipiasi į aplikacija resursui gauti.
  2. Resurso savininkas (vartotojas) nukreipiamas į autorizacijos serverį tapatybei patvirtinti ir suteikia leidimą aplikacijai prisijungti prie vartotojo paslaugų resurso.
  3. Jei paraiškos tapatybė yra patvirtinta ir autorizacijos tipas leidžiamas, autorizacijos serveris (API) suteikia prieigos raktą ir jį grąžina aplikacijai. Autorizacija baigta.
  4. Aplikacija pateikdama prieigos raktą prašo resurso iš resursų serverio (API).
  5. Jei prieigos raktas yra galiojantis, resursų serveris (API) grąžina apsaugotą resursą aplikacijai. Prieigos raktas galiojimas gali būti patikrinamas resursų serveryje dviem būdais:
    • Resursų serveris siunčia į autorizacijos serverį prieigos raktą patikrinimui.
    • Resursų serveris pats patikriną prieigos raktą.
    Faktinis šio proceso veikimo principas skirsis priklausomai nuo naudojamo autorizacijos tipo (angl. authorization grant type).

Kadangi, jau žinote, kas yra ir kaip veikia OAuth sistema, kituose įrašuose pasigilinsiu ir išsamiau aptarsiu daugiau OAuth techninių niuansų.