Ilustrēta OAuth un OpenID Connect rokasgrāmata

PiezÄ«me. tulk.: Å is lieliskais Okta raksts vienkārŔā un skaidrā veidā izskaidro, kā darbojas OAuth un OIDC (OpenID Connect). Å Ä«s zināŔanas noderēs izstrādātājiem, sistēmu administratoriem un pat populāru tÄ«mekļa lietojumprogrammu "parastajiem lietotājiem", kuri, visticamāk, arÄ« apmainās ar konfidenciāliem datiem ar citiem servisiem.

Interneta akmens laikmetā informācijas apmaiņa starp pakalpojumiem bija vienkārÅ”a. JÅ«s vienkārÅ”i nodevāt savu pieteikumvārdu un paroli no viena pakalpojuma citam, lai viņŔ ievadÄ«tu jÅ«su kontu un saņemtu visu nepiecieÅ”amo informāciju.

Ilustrēta OAuth un OpenID Connect rokasgrāmata
"Dodiet man savu bankas kontu." ā€œApsolām, ka ar paroli un naudu viss bÅ«s kārtÄ«bā. Tas ir godÄ«gi, godÄ«gi!" *hee hee*

Å ausmas! Nevienam nekad nevajadzētu pieprasÄ«t lietotājam kopÄ«got lietotājvārdu un paroli, akreditācijas dati, ar citu pakalpojumu. Nav garantijas, ka organizācija, kas nodroÅ”ina Å”o pakalpojumu, nodroÅ”inās datu droŔību un neievāks vairāk personas informācijas, nekā nepiecieÅ”ams. Tas var izklausÄ«ties traki, taču dažas lietotnes joprojām izmanto Å”o praksi!

MÅ«sdienās ir viens standarts, kas ļauj vienam pakalpojumam droÅ”i izmantot cita pakalpojuma datus. Diemžēl Ŕādos standartos tiek izmantots daudz žargona un terminu, kas apgrÅ«tina to izpratni. Å Ä« materiāla mērÄ·is ir izskaidrot, kā tie darbojas, izmantojot vienkārÅ”as ilustrācijas (Vai jÅ«s domājat, ka mani zÄ«mējumi atgādina bērnu krāsojumu? Ak, labi!).

Ilustrēta OAuth un OpenID Connect rokasgrāmata

Starp citu, Ŕī rokasgrāmata ir pieejama arī video formātā:

Dāmas un kungi, laipni lÅ«dzam: OAuth 2.0

OAuth 2.0 ir droŔības standarts, kas ļauj vienai lietojumprogrammai iegÅ«t atļauju piekļūt informācijai citā lietojumprogrammā. Atļaujas izsniegÅ”anas darbÄ«bu secÄ«ba [atļauja] (Vai piekriÅ”anu [piekriÅ”ana]) bieži zvana autorizācija [atļauja] vai pat deleģētā atļauja [deleģēta pilnvara]. Izmantojot Å”o standartu, jÅ«s atļaujat lietojumprogrammai lasÄ«t datus vai izmantot citas lietojumprogrammas funkcijas jÅ«su vārdā, nenorādot tai jÅ«su paroli. Klase!

Piemēram, pieņemsim, ka atklājat vietni ar nosaukumu "Dienas neveiksmÄ«gais vārdu spēles". [Dienas Å”ausmÄ«gais vārdu spēles] un nolēma tajā reÄ£istrēties, lai saņemtu ikdienas kalambÅ«rus Ä«sziņu veidā pa tālruni. Jums ļoti patika vietne, un jÅ«s nolēmāt dalÄ«ties tajā ar visiem draugiem. Galu galā, visiem patÄ«k rāpojoÅ”as vārdu spēles, vai ne?

Ilustrēta OAuth un OpenID Connect rokasgrāmata
ā€œDienas neveiksmÄ«gs vārdu spēles: vai esat dzirdējuÅ”i par puisi, kurÅ” zaudēja Ä·ermeņa kreiso pusi? Tagad viņam vienmēr ir taisnÄ«ba! (aptuvens tulkojums, jo oriÄ£inālam ir savs kalambÅ«rs - apm. tulk.)

Ir skaidrs, ka rakstÄ«t katrai personai no kontaktpersonu saraksta nav iespējama. Un, ja tu kaut nedaudz lÄ«dzināsies man, tad darÄ«si visu, lai izvairÄ«tos no lieka darba. Par laimi, Dienas briesmÄ«gais vārdu spēles var uzaicināt visus jÅ«su draugus! Lai to izdarÄ«tu, jums vienkārÅ”i jāatver piekļuve kontaktpersonu e-pastam ā€” vietne pati nosÅ«tÄ«s viņiem ielÅ«gumus (OAuth noteikumi)!

Ilustrēta OAuth un OpenID Connect rokasgrāmata
ā€œVisiem patÄ«k vārdu spēles! - Jau pieteicies? ā€œVai vēlaties atļaut Dienas briesmÄ«gā vārdu spēle piekļūt jÅ«su kontaktpersonu sarakstam? - Paldies! Turpmāk atgādinājumus sÅ«tÄ«sim katru dienu visiem zināmajiem, lÄ«dz pat laika galam! Tu esi labākais draugs!"

  1. Izvēlieties savu e-pasta pakalpojumu.
  2. Ja nepiecieŔams, dodieties uz pasta vietni un pierakstieties savā kontā.
  3. Dodiet dienas Å”ausmÄ«gajam vārdu spēlēm atļauju piekļūt saviem kontaktiem.
  4. Atgriezties uz drausmīgo dienas vārdu vietni.

Ja pārdomājat, lietojumprogrammas, kas izmanto OAuth, nodroÅ”ina arÄ« veidu, kā atsaukt piekļuvi. Kad esat nolēmis, ka vairs nevēlaties koplietot kontaktus ar dienas Å”ausmÄ«go vārdu spēli, varat doties uz pasta vietni un noņemt Å”o vietni no pilnvaroto lietojumprogrammu saraksta.

OAuth plūsma

Mēs tikko esam izgājuÅ”i cauri tam, ko parasti sauc plÅ«sma [plÅ«sma] OAuth. MÅ«su piemērā Ŕī plÅ«sma sastāv no redzamiem soļiem, kā arÄ« vairākiem neredzamiem soļiem, kuros divi dienesti vienojas par droÅ”u informācijas apmaiņu. IepriekŔējā briesmÄ«gā dienas vārdu piemērā tiek izmantota visizplatÄ«tākā OAuth 2.0 plÅ«sma, kas pazÄ«stama kā ā€œautorizācijas kodaā€ plÅ«sma. ["autorizācijas koda" plÅ«sma].

Pirms iedziļināties OAuth darbības detaļās, parunāsim par dažu terminu nozīmi.

  • Resursa Ä«paÅ”nieks:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Tas esi tu! Jums pieder jūsu akreditācijas dati, jūsu dati un jūs kontrolējat visas darbības, kas var tikt veiktas jūsu kontos.

  • Klients:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Lietojumprogramma (piemēram, pakalpojums The Terrible Pun of the Day), kas vēlas piekļūt vai veikt noteiktas darbÄ«bas Resursa Ä«paÅ”nieks'Š°.

  • Autorizācijas serveris:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Lietotne, kas zina Resursa īpaŔnieks'a un kurā u Resursa īpaŔnieksJums jau ir konts.

  • resursu serveris:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Lietojumprogrammu saskarne (API) vai pakalpojums, kas Klients vēlas izmantot vārdā Resursa Ä«paÅ”nieks'Š°.

  • NovirzÄ«t URI:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Saite, kas Autorizācijas serveris novirzÄ«s Resursa Ä«paÅ”nieks'un pēc atļaujas pieŔķirÅ”anas Klients'at. To dažreiz dēvē par "atzvanÄ«Å”anas URL".

  • Atbildes veids:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Paredzamās informācijas veids Klients. Visbiežāk Atbildes veids"Ohm ir kods, tas ir Klients cer saņemt autorizācijas kods.

  • Joma:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Å is ir detalizēts nepiecieÅ”amo atļauju apraksts Klients'y, piemēram, piekļūt datiem vai veikt noteiktas darbÄ«bas.

  • PiekriÅ”ana:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Autorizācijas serveris aizņem TēmekļipieprasÄ«ts Klients'om, un jautā Resursa Ä«paÅ”nieks'a, vai viņŔ ir gatavs nodroÅ”ināt Klientsir atbilstoÅ”as ā€‹ā€‹atļaujas.

  • klienta ID:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Šo ID izmanto, lai identificētu Klients'a ieslēgts Autorizācijas serveris'e.

  • Klienta noslēpums:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Šī ir tikai zināma parole Klients'tu un Autorizācijas serveris'at. Tas ļauj viņiem privāti koplietot informāciju.

  • autorizācijas kods:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Pagaidu kods ar Ä«su derÄ«guma termiņu, kas Klients nodroÅ”ina Autorizācijas serveris'y apmaiņā pret Access Token.

  • Access Token:

    Ilustrēta OAuth un OpenID Connect rokasgrāmata

    Atslēga, ar kuru klients sazināsies resursu serveris'om. Sava veida nozÄ«mÄ«te vai atslēgas karte, kas nodroÅ”ina Klientsā€œir atļauja pieprasÄ«t datus vai veikt darbÄ«bas ar resursu serveris'e jÅ«su vārdā.

PiezÄ«me: Dažkārt autorizācijas serveris un resursu serveris ir viens un tas pats serveris. Tomēr dažos gadÄ«jumos tie var bÅ«t dažādi serveri, pat ja tie nepieder vienai organizācijai. Piemēram, autorizācijas serveris var bÅ«t treŔās puses pakalpojums, kuram uzticas resursu serveris.

Tagad, kad esam apskatÄ«juÅ”i OAuth 2.0 pamatjēdzienus, atgriezÄ«simies pie mÅ«su piemēra un tuvāk apskatÄ«sim, kas notiek OAuth plÅ«smā.

Ilustrēta OAuth un OpenID Connect rokasgrāmata

  1. Tu, Resursa Ä«paÅ”nieks, jÅ«s vēlaties sniegt pakalpojumu BriesmÄ«gais dienas vārdu spēles (Klientsy) piekļuve jÅ«su kontaktpersonām, lai viņi varētu nosÅ«tÄ«t ielÅ«gumus visiem jÅ«su draugiem.
  2. Klients novirza pārlūkprogrammu uz lapu Autorizācijas serveris'a un iekļaut vaicājumā klienta ID, Novirzīt URI, Atbildes veids un viens vai vairāki Tēmekļi (atļaujas) tam ir vajadzīgas.
  3. Autorizācijas serveris verificē jÅ«s, ja nepiecieÅ”ams, pieprasot lietotājvārdu un paroli.
  4. Autorizācijas serveris parāda veidlapu PiekriÅ”ana (apstiprinājumi) ar visu sarakstu TēmekļipieprasÄ«ts Klients'om. JÅ«s piekrÄ«tat vai atsakāties.
  5. Autorizācijas serveris novirza jūs uz vietni Klients'a, izmantojot Novirzīt URI ar autorizācijas kods (autorizācijas kods).
  6. Klients sazinās tieÅ”i ar Autorizācijas serveris'ohm (apejot pārlÅ«kprogrammu Resursa Ä«paÅ”nieks'a) un droÅ”i nosÅ«ta klienta ID, Klienta noslēpums Šø autorizācijas kods.
  7. Autorizācijas serveris pārbauda datus un atbild ar Access Token'om (piekļuves marķieris).
  8. Tagad Klients var izmantot Access Token lai nosūtītu pieprasījumu uz resursu serveris lai iegūtu kontaktu sarakstu.

Klienta ID un noslēpums

Ilgi pirms jÅ«s atļāvāt Dienas Å”ausmÄ«go vārdu piekļuvi saviem kontaktiem, Klients un Autorizācijas serveris bija izveidojuÅ”i darba attiecÄ«bas. Autorizācijas serveris Ä£enerēja klienta ID un klienta noslēpumu (dažreiz tos sauc App ID Šø Lietotnes noslēpums) un nosÅ«tÄ«ja tos Klientam turpmākai mijiedarbÄ«bai ar OAuth.

Ilustrēta OAuth un OpenID Connect rokasgrāmata
"- Sveiki! Es vēlētos ar jums strādāt! - Protams, nav problēma! Šeit ir jūsu klienta ID un noslēpums!

Nosaukums norāda, ka klienta noslēpums ir jāsaglabā slepenÄ«bā, lai to zinātu tikai klients un autorizācijas serveris. Galu galā tieÅ”i ar viņa palÄ«dzÄ«bu Autorizācijas serveris apstiprina Klienta patiesÄ«bu.

Bet tas vēl nav viss... Lūdzu, apsveicam OpenID Connect!

OAuth 2.0 ir paredzēts tikai autorizācija - nodroÅ”ināt piekļuvi datiem un funkcijām no vienas lietojumprogrammas uz otru. OpenID Connect (OIDC) ir plāns slānis virs OAuth 2.0, kas pievieno tā lietotāja pieteikuminformāciju un profila informāciju, kurÅ” ir pierakstÄ«jies kontā. PieteikÅ”anās sesijas organizÄ“Å”ana bieži tiek saukta par autentifikācija [autentifikācija], un informācija par lietotāju, kas pieteicies sistēmā (t.i., par Resursa Ä«paÅ”niekse), ā€” personas dati [identitāte]. Ja autorizācijas serveris atbalsta OIDC, to dažreiz dēvē par personas datu sniedzējs [identitātes nodroÅ”inātājs]jo tas nodroÅ”ina Klients'ir informācija par Resursa Ä«paÅ”nieks'e.

OpenID Connect ļauj ieviest scenārijus, kuros vienu pieteikÅ”anos var izmantot vairākās lietojumprogrammās ā€” Ŕī pieeja ir pazÄ«stama arÄ« kā vienreizēja pierakstÄ«Å”anās (SSO). Piemēram, lietojumprogramma var atbalstÄ«t SSO integrāciju ar sociālajiem tÄ«kliem, piemēram, Facebook vai Twitter, ļaujot lietotājiem izmantot kontu, kas viņiem jau ir un kuru viņi vēlas izmantot.

Ilustrēta OAuth un OpenID Connect rokasgrāmata

PlÅ«sma (plÅ«sma) OpenID Connect izskatās tāpat kā OAuth gadÄ«jumā. VienÄ«gā atŔķirÄ«ba ir tā, ka primārajā pieprasÄ«jumā tiek izmantots konkrētais tvērums openid, - A Klients galu galā kļūst patÄ«k Access TokenUn ID marÄ·ieris.

Ilustrēta OAuth un OpenID Connect rokasgrāmata

Tāpat kā OAuth plÅ«smā, Access Token OpenID Connect, Ŕī ir vērtÄ«ba, kas nav skaidra Klients'at. No skatu punkta Klientsā€œA Access Token apzÄ«mē rakstzÄ«mju virkni, kas tiek nosÅ«tÄ«ta kopā ar katru pieprasÄ«jumu resursu serveris'y, kas nosaka, vai marÄ·ieris ir derÄ«gs. ID marÄ·ieris pārstāv pavisam citu lietu.

ID Token ir JWT

ID marÄ·ieris ir Ä«paÅ”i formatēta rakstzÄ«mju virkne, kas pazÄ«stama kā JSON Web Token vai JWT (dažreiz JWT marÄ·ieri tiek izrunāti kā "jots"). No malas novērotājiem JWT var Ŕķist nesaprotama muļķība, taču Klients no JWT var iegÅ«t dažādu informāciju, piemēram, ID, lietotājvārdu, pieteikÅ”anās laiku, derÄ«guma termiņu ID marÄ·ierisā€œa, mēģinājumi traucēt JWT. Dati iekŔā ID marÄ·ieris'a tiek saukti lietojumprogrammas [pretenzijas].

Ilustrēta OAuth un OpenID Connect rokasgrāmata

OIDC gadījumā ir arī standarta veids, kā Klients var pieprasīt papildu informāciju par personu [identitāte] no Autorizācijas serveris'a, piemēram, e-pasta adrese, izmantojot Access Token.

Uzziniet vairāk par OAuth un OIDC

Tātad, mēs Ä«si pārskatÄ«jām, kā darbojas OAuth un OIDC. Vai esat gatavs rakt dziļāk? Tālāk ir sniegti papildu resursi, kas palÄ«dzēs uzzināt vairāk par OAuth 2.0 un OpenID Connect:

Kā vienmēr, nekautrējieties komentēt. Lai bÅ«tu informēts par mÅ«su jaunākajām ziņām, abonējiet Twitter Šø YouTube Okta izstrādātājiem!

PS no tulka

Lasi arī mūsu emuārā:

Avots: www.habr.com

Pievieno komentāru