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.
"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!).
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?
ā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)!
ā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!"
IzvÄlieties savu e-pasta pakalpojumu.
Ja nepiecieÅ”ams, dodieties uz pasta vietni un pierakstieties savÄ kontÄ.
Dodiet dienas Å”ausmÄ«gajam vÄrdu spÄlÄm atļauju piekļūt saviem kontaktiem.
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:
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:
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:
Lietotne, kas zina Resursa Ä«paÅ”nieks'a un kurÄ u Resursa Ä«paÅ”nieksJums jau ir konts.
resursu serveris:
Lietojumprogrammu saskarne (API) vai pakalpojums, kas Klients vÄlas izmantot vÄrdÄ Resursa Ä«paÅ”nieks'Š°.
Novirzīt URI:
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:
ParedzamÄs informÄcijas veids Klients. VisbiežÄk Atbildes veids"Ohm ir kods, tas ir Klients cer saÅemt autorizÄcijas kods.
Joma:
Å is ir detalizÄts nepiecieÅ”amo atļauju apraksts Klients'y, piemÄram, piekļūt datiem vai veikt noteiktas darbÄ«bas.
PiekriŔana:
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:
Å o ID izmanto, lai identificÄtu Klients'a ieslÄgts AutorizÄcijas serveris'e.
Klienta noslÄpums:
Å Ä« ir tikai zinÄma parole Klients'tu un AutorizÄcijas serveris'at. Tas ļauj viÅiem privÄti koplietot informÄciju.
autorizÄcijas kods:
Pagaidu kods ar Ä«su derÄ«guma termiÅu, kas Klients nodroÅ”ina AutorizÄcijas serveris'y apmaiÅÄ pret Access Token.
Access Token:
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Ä.
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.
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.
AutorizÄcijas serveris verificÄ jÅ«s, ja nepiecieÅ”ams, pieprasot lietotÄjvÄrdu un paroli.
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.
AutorizÄcijas serveris novirza jÅ«s uz vietni Klients'a, izmantojot NovirzÄ«t URI ar autorizÄcijas kods (autorizÄcijas kods).
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.
AutorizÄcijas serveris pÄrbauda datus un atbild ar Access Token'om (piekļuves marÄ·ieris).
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.
"- 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.
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.
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].
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: