Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

Pastaba. vert.: Šis puikus Okta straipsnis paaiškina, kaip OAuth ir OIDC (OpenID Connect) veikia paprastai ir aiškiai. Šios žinios bus naudingos kūrėjams, sistemų administratoriams ir net „paprastiems vartotojams“ populiarių interneto programų, kurios greičiausiai taip pat keičiasi konfidencialiais duomenimis su kitomis paslaugomis.

Interneto akmens amžiuje dalytis informacija tarp paslaugų buvo paprasta. Jūs tiesiog perdavėte savo prisijungimo vardą ir slaptažodį iš vienos paslaugos į kitą, kad jis įvestų į jūsų paskyrą ir gautų visą reikalingą informaciją.

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas
– Duok man savo banko sąskaitą. „Pažadame, kad su slaptažodžiu ir pinigais viskas bus gerai. Tai sąžininga, sąžininga!" *hee hee*

Siaubas! Niekas niekada neturėtų reikalauti, kad vartotojas bendrintų vartotojo vardą ir slaptažodį, kredencialus, su kita paslauga. Nėra garantijos, kad šią paslaugą teikianti organizacija saugos duomenis ir nerinks daugiau asmeninės informacijos, nei reikia. Tai gali atrodyti beprotiškai, bet kai kurios programos vis dar naudoja šią praktiką!

Šiandien yra vienas standartas, leidžiantis vienai tarnybai saugiai naudotis kitos paslaugos duomenimis. Deja, tokiuose standartuose vartojama daug žargono ir terminų, todėl juos sunku suprasti. Šios medžiagos tikslas – paaiškinti, kaip jie veikia, naudojant paprastas iliustracijas (Ar manote, kad mano piešiniai atrodo kaip vaikiški piešiniai? Na, gerai!).

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

Beje, šį vadovą taip pat galima rasti vaizdo įrašo formatu:

Ponios ir ponai, sveiki atvykę: OAuth 2.0

„OAuth 2.0“ yra saugos standartas, leidžiantis vienai programai gauti leidimą pasiekti informaciją kitoje programoje. Leidimo išdavimo veiksmų seka [leidimas] (Arba sutikimas [sutikimas]) dažnai skambina įgaliojimas [įgaliojimas] или даже deleguotasis įgaliojimas [perduotas įgaliojimas]. Naudodami šį standartą leidžiate programai skaityti duomenis arba naudoti kitos programos funkcijas jūsų vardu, nesuteikdami jai jūsų slaptažodžio. Klasė!

Pavyzdžiui, tarkime, kad atradote svetainę pavadinimu „Nelaimingas dienos kalambūras“ [Siaubingas dienos kalambūras] ir nusprendė joje užsiregistruoti, kad kasdien gautų kalambūrų žinutėmis į telefoną. Jums labai patiko svetainė ir nusprendėte ja pasidalinti su visais savo draugais. Juk visiems patinka šiurpios kalambūros, tiesa?

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas
„Nelaimingas šios dienos kalambūras: girdėjote apie vaikiną, kuris prarado kairę kūno pusę? Dabar jis visada teisus! (apytikslis vertimas, nes originalas turi savo kalambūrą – apytikslis vertimas)

Akivaizdu, kad rašyti kiekvienam asmeniui iš kontaktų sąrašo nėra išeitis. Ir, jei esate bent šiek tiek panašus į mane, tada jūs padarysite viską, kad išvengtumėte nereikalingo darbo. Laimei, Dienos siaubingas kalambūras gali pats pakviesti visus jūsų draugus! Norėdami tai padaryti, jums tereikia atidaryti prieigą prie savo kontaktų el. pašto – pati svetainė jiems išsiųs kvietimus (OAuth taisyklės)!

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas
„Visi mėgsta kalambūrą! - Jau prisijungei? „Ar norėtumėte leisti „The Terrible Pun of the Day“ svetainei pasiekti jūsų kontaktų sąrašą? - Ačiū! Nuo šiol visiems pažįstamiems priminimus siųsime kiekvieną dieną iki laikų pabaigos! Tu esi geriausias draugas!"

  1. Pasirinkite savo el. pašto paslaugą.
  2. Jei reikia, eikite į pašto svetainę ir prisijunkite prie savo paskyros.
  3. Suteikite „Baisus dienos kalambūras“ leidimą pasiekti savo kontaktus.
  4. Grįžkite į „Baisaus dienos kalambūro“ svetainę.

Jei apsigalvosite, „OAuth“ naudojančios programos taip pat suteikia galimybę atšaukti prieigą. Kai nuspręsite, kad nebenorite dalytis kontaktais su siaubingu dienos kalambūru, galite eiti į pašto svetainę ir pašalinti kalambūro svetainę iš įgaliotų programų sąrašo.

OAuth srautas

Ką tik išgyvenome tai, kas paprastai vadinama srautas [srautas] OAuth. Mūsų pavyzdyje šis srautas susideda iš matomų žingsnių, taip pat iš kelių nematomų žingsnių, kurių metu dvi tarnybos susitaria dėl saugaus keitimosi informacija. Ankstesniame siaubingame dienos pavyzdyje naudojamas labiausiai paplitęs OAuth 2.0 srautas, žinomas kaip „autorizacijos kodo“ srautas. ["autorizacijos kodo" srautas].

Prieš pasinerdami į OAuth veikimo detales, pakalbėkime apie kai kurių terminų reikšmę:

  • Išteklių savininkas:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Tai tu! Jūs turite savo kredencialus, duomenis ir valdote visą veiklą, kuri gali būti atliekama jūsų paskyrose.

  • klientas:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Programa (pavyzdžiui, paslauga „Siaubingas dienos kalambūras“), kuri nori pasiekti arba atlikti tam tikrus veiksmus Išteklių savininkas'bet.

  • Autorizacijos serveris:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Programa, kuri žino Išteklių savininkas'a ir kuriame u Išteklių savininkas'a jau turi paskyrą.

  • išteklių serveris:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Programų programavimo sąsaja (API) arba paslauga, kuri klientas nori naudoti vardu Išteklių savininkas'bet.

  • Peradresuoti URI:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Nuoroda, kuri Autorizacijos serveris nukreips Išteklių savininkas'ir davus leidimą klientas'at. Jis kartais vadinamas „atskambinimo URL“.

  • atsako tipas:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Informacijos, kurią tikimasi gauti, tipas klientas. Dažniausiai atsako tipas„Ohm yra kodas, tai yra klientas tikisi gauti autorizacijos kodas.

  • Apimtis:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Tai yra išsamus reikalingų leidimų aprašymas klientas'y, pvz., prieiga prie duomenų ar tam tikrų veiksmų atlikimas.

  • Sutikimas:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Autorizacijos serveris ima Apimtyspaprašė klientas'om, ir klausia Išteklių savininkas„a, ar jis pasirengęs suteikti klientas'turėti atitinkamus leidimus.

  • kliento ID:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Šis ID naudojamas identifikuoti klientas'a įjungta Autorizacijos serveris'e.

  • Kliento paslaptis:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Tai tik žinomas slaptažodis klientas' tu ir Autorizacijos serveris'at. Tai leidžia jiems privačiai dalytis informacija.

  • autorizacijos kodas:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Laikinas kodas su trumpu galiojimo laiku, kuris klientas teikia Autorizacijos serveris'y mainais už Prieigos raktas.

  • Prieigos raktas:

    Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

    Raktas, kurį klientas naudos bendraudamas išteklių serveris'om. Tam tikras ženklelis arba rakto kortelė, kuri suteikia klientas„turėti leidimą prašyti duomenų arba atlikti veiksmus išteklių serveris'e tavo vardu.

Atkreipti dėmesį: Kartais autorizacijos serveris ir išteklių serveris yra tas pats serveris. Tačiau kai kuriais atvejais tai gali būti skirtingi serveriai, net jei jie nepriklauso tai pačiai organizacijai. Pavyzdžiui, autorizacijos serveris gali būti trečiosios šalies paslauga, kuria pasitiki išteklių serveris.

Dabar, kai apžvelgėme pagrindines OAuth 2.0 sąvokas, grįžkime prie mūsų pavyzdžio ir atidžiau pažvelkime į tai, kas vyksta OAuth sraute.

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

  1. Tu, Išteklių savininkas, norite teikti siaubingos dienos kalambūros paslaugą (klientasy) prieigą prie jūsų kontaktų, kad jie galėtų siųsti kvietimus visiems jūsų draugams.
  2. klientas nukreipia naršyklę į puslapį Autorizacijos serveris'a ir įtraukti į užklausą kliento ID, Peradresuoti URI, atsako tipas ir vienas ar daugiau Apimtys (leidimų) tam reikia.
  3. Autorizacijos serveris patvirtina jus, jei reikia, paprašo vartotojo vardo ir slaptažodžio.
  4. Autorizacijos serveris rodo formą Sutikimas (patvirtinimai) su visų sąrašu Apimtyspaprašė klientas'om. Jūs sutinkate arba atsisakote.
  5. Autorizacijos serveris nukreipia jus į svetainę klientas'a, naudojant Peradresuoti URI su autorizacijos kodas (autorizacijos kodas).
  6. klientas tiesiogiai bendrauja su Autorizacijos serveris'ohm (aplenkiant naršyklę Išteklių savininkas'a) ir saugiai siunčia kliento ID, Kliento paslaptis и autorizacijos kodas.
  7. Autorizacijos serveris patikrina duomenis ir atsako su Prieigos raktas'om (prieigos prieigos raktas).
  8. dabar klientas gali naudoti Prieigos raktas išsiųsti prašymą išteklių serveris norėdami gauti kontaktų sąrašą.

Kliento ID ir paslaptis

Ilgai prieš tai, kai leidote Dienos siaubingam kalambūrui pasiekti savo kontaktus, klientas ir autorizacijos serveris užmezgė darbinius santykius. Autorizacijos serveris sugeneravo kliento ID ir kliento paslaptį (kartais vadinamas programos ID и Programos paslaptis) ir nusiuntė juos Klientui, kad jis toliau sąveikautų su OAuth.

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas
"- Sveiki! Norėčiau dirbti su jumis! - Žinoma, ne bėda! Čia yra jūsų kliento ID ir paslaptis!

Pavadinimas reiškia, kad Kliento paslaptis turi būti laikoma paslaptyje, kad ją žinotų tik Klientas ir Autorizacijos serveris. Juk būtent jo pagalba Autorizacijos serveris patvirtina Kliento tiesą.

Bet tai dar ne viskas... Sveiki atvykę į OpenID Connect!

OAuth 2.0 skirta tik leidimas - suteikti prieigą prie duomenų ir funkcijų iš vienos programos į kitą. „OpenID Connect“ (OIDC) yra plonas sluoksnis, esantis ant OAuth 2.0, kuris prideda prie paskyros prisijungusio vartotojo prisijungimo ir profilio duomenis. Prisijungimo seanso organizavimas dažnai vadinamas autentifikavimas [autentifikavimas], ir informacija apie vartotoją, prisijungusį prie sistemos (t. y. apie Išteklių savininkas'e), — Asmeniniai duomenys [tapatybė]. Jei autorizacijos serveris palaiko OIDC, jis kartais vadinamas asmens duomenų teikėjas [tapatybės teikėjas]nes numato klientas'turėti informacijos apie Išteklių savininkas'e.

„OpenID Connect“ leidžia įgyvendinti scenarijus, kai vienas prisijungimas gali būti naudojamas keliose programose – šis metodas taip pat žinomas kaip vienkartinis prisijungimas (SSO). Pavyzdžiui, programa gali palaikyti SSO integravimą su socialiniais tinklais, tokiais kaip „Facebook“ ar „Twitter“, todėl vartotojai gali naudoti paskyrą, kurią jie jau turi ir nori naudoti.

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

Srauto (srauto) OpenID Connect atrodo taip pat, kaip ir OAuth atveju. Vienintelis skirtumas yra tas, kad pirminėje užklausoje naudojama konkreti taikymo sritis openid, - A klientas galiausiai gaunasi kaip Prieigos raktasIr ID prieigos raktas.

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

Kaip ir OAuth sraute, Prieigos raktas „OpenID Connect“ tai yra tam tikra reikšmė, kuri nėra aiški klientas'at. Iš požiūrio taško klientas„A Prieigos raktas reiškia simbolių eilutę, kuri perduodama kartu su kiekviena užklausa išteklių serverisy, kuris nustato, ar prieigos raktas galioja. ID prieigos raktas reiškia visiškai kitą dalyką.

ID Token yra JWT

ID prieigos raktas yra specialiai suformatuota simbolių eilutė, žinoma kaip JSON Web Token arba JWT (kartais JWT žetonai tariami kaip "jots"). Išoriniams stebėtojams JWT gali atrodyti kaip nesuprantamas mėšlas, bet klientas iš JWT gali išgauti įvairią informaciją, pvz., ID, vartotojo vardą, prisijungimo laiką, galiojimo datą ID prieigos raktas„a, bandymų kištis į JWT buvimas. Duomenys viduje ID prieigos raktas'a yra vadinami programos [pretenzijos].

Iliustruotas „OAuth“ ir „OpenID Connect“ vadovas

OIDC atveju taip pat yra standartinis būdas klientas gali paprašyti papildomos informacijos apie asmenį [tapatybė] nuo Autorizacijos serveris„a, pavyzdžiui, el. pašto adresas, naudojant Prieigos raktas.

Sužinokite daugiau apie OAuth ir OIDC

Taigi, trumpai apžvelgėme, kaip veikia OAuth ir OIDC. Pasiruošę kasti giliau? Čia yra papildomų išteklių, kurie padės sužinoti daugiau apie OAuth 2.0 ir OpenID Connect:

Kaip visada, nedvejodami komentuokite. Norėdami gauti naujausias naujienas, užsiprenumeruokite Twitter и "YouTube" Gerai kūrėjams!

PS iš vertėjo

Taip pat skaitykite mūsų tinklaraštyje:

Šaltinis: www.habr.com

Добавить комментарий