MĂ€rge. tĂ”lge: See suurepĂ€rane Okta artikkel selgitab lihtsalt ja selgelt, kuidas OAuth ja OIDC (OpenID Connect) töötavad. Need teadmised on kasulikud populaarsete veebirakenduste arendajatele, sĂŒsteemiadministraatoritele ja isegi "tavakasutajatele", kes tĂ”enĂ€oliselt vahetavad ka konfidentsiaalseid andmeid teiste teenustega.
Interneti kiviajal oli teabe jagamine teenuste vahel lihtne. Andsite lihtsalt oma sisselogimise ja parooli ĂŒhest teenusest teise, nii et ta sisenes teie kontole ja sai kogu vajaliku teabe.

"Anna mulle oma pangakonto." «Lubame, et salasÔna ja rahaga saab kÔik korda. See on aus, aus!" *hee hee*
Ăudus! Keegi ei tohiks kunagi nĂ”uda, et kasutaja jagaks kasutajanime ja parooli, volikirjad, teise teenusega. Ei ole mingit garantiid, et selle teenuse taga olev organisatsioon hoiab andmeid turvaliselt ega kogu vajalikust rohkem isiklikku teavet. See vĂ”ib tunduda hullumeelne, kuid mĂ”ned rakendused kasutavad seda praktikat endiselt!
TĂ€napĂ€eval on ĂŒks standard, mis vĂ”imaldab ĂŒhel teenusel turvaliselt kasutada teise teenuse andmeid. Kahjuks kasutatakse sellistes standardites palju ĆŸargooni ja termineid, mis raskendab nende mĂ”istmist. Selle materjali eesmĂ€rk on selgitada, kuidas need töötavad lihtsate illustratsioonide abil (Kas te arvate, et minu joonistused meenutavad laste vĂ€rvimist? Ahjaa!).

Muide, see juhend on saadaval ka videovormingus:

Daamid ja hÀrrad, tere tulemast: OAuth 2.0
on turbestandard, mis vĂ”imaldab ĂŒhel rakendusel saada luba teise rakenduse teabele juurde pÀÀseda. Loa vĂ€ljastamise sammude jada [luba] (VĂ”i nĂ”usolekut [nĂ”usolek]) helistavad sageli luba [volitus] ОлО ЎажД delegeeritud volitus [delegeeritud volitus]. Selle standardiga lubate rakendusel teie nimel andmeid lugeda vĂ”i teise rakenduse funktsioone kasutada ilma parooli andmata. Klass!
Oletame nÀiteks, et avastate veebisaidi nimega "PÀeva Ônnetu sÔnamÀng" [PÀeva kohutav sÔnamÀng] ja otsustas sellel registreeruda, et saada igapÀevaseid sÔnamÀnge telefoni tekstisÔnumite kujul. Sait meeldis teile vÀga ja otsustasite seda kÔigi oma sÔpradega jagada. LÔppude lÔpuks meeldivad jubedad sÔnamÀngud kÔigile, eks?

"PĂ€eva kahetsusvÀÀrne sĂ”namĂ€ng: olete kuulnud mehest, kes kaotas oma vasaku kehapoole? NĂŒĂŒd on tal alati Ă”igus!â (ligikaudne tĂ”lge, sest originaalil on oma sĂ”namĂ€ng â ca tĂ”lge)
On selge, et igale inimesele kontaktiloendist kirjutamine ei ole valik. Ja kui sa oled vĂ€hegi minu moodi, siis annad endast kĂ”ik, et vĂ€ltida asjatut tööd. Ănneks vĂ”ib pĂ€eva kohutav sĂ”namĂ€ng ise kĂ”ik teie sĂ”brad kohale kutsuda! Selleks pead lihtsalt avama juurdepÀÀsu oma kontaktide meilile â sait ise saadab neile kutsed (OAuthi reeglid)!

âKĂ”ik armastavad sĂ”namĂ€ngu! - Juba sisse logitud? âKas soovite lubada veebisaidil Terrible Pun of the Day juurdepÀÀsu oma kontaktide loendile? - AitĂ€h! Edaspidi saadame iga pĂ€ev meeldetuletusi kĂ”igile tuttavatele, kuni aegade lĂ”puni! Sa oled parim sĂ”ber!"
- Valige oma meiliteenus.
- Vajadusel minge e-posti saidile ja logige oma kontole sisse.
- Andke oma kontaktidele juurdepÀÀsemiseks luba PÀeva kohutavale sÔnamÀngule.
- Naaske pÀeva kohutava sÔnamÀngu saidile.
Kui muudate meelt, pakuvad OAuthi kasutavad rakendused juurdepÀÀsu ka vĂ”imaluse tĂŒhistada. Kui olete otsustanud, et te ei soovi enam pĂ€eva kohutava sĂ”namĂ€nguga kontakte jagada, vĂ”ite minna e-posti saidile ja eemaldada sĂ”namĂ€ngusait volitatud rakenduste loendist.
OAuth Flow
Oleme just lÀbi teinud selle, mida tavaliselt nimetatakse voolu [vool] OAuth. Meie nÀites koosneb see voog nÀhtavatest sammudest, aga ka mitmest nÀhtamatust etapist, mille kÀigus kaks teenust lepivad kokku turvalises teabevahetuses. Eelmises Terrible Pun of the Day nÀites kasutatakse kÔige levinumat OAuth 2.0 voogu, mida tuntakse "volitamiskoodi" voona. ["volitamiskoodi" voog].
Enne OAuthi toimimise ĂŒksikasjadesse sukeldumist rÀÀgime mĂ”ne termini tĂ€hendusest.
- Ressursi omanik:

See oled sina! Teile kuuluvad oma mandaadid, andmed ja saate juhtida kÔiki tegevusi, mida teie kontodel vÔidakse teha. - klient:

Rakendus (nt teenus Terrible Pun of the Day), mis soovib juurdepÀÀsu vÔi teatud toiminguid teha Ressursi omanik'а. - Autoriseerimisserver:

Rakendus, mis teab Ressursi omanik'a ja milles u Ressursi omanik'on juba konto. - ressursiserver:

Rakenduse programmeerimisliides (API) vĂ”i teenus, mis klient nimel soovib kasutada Ressursi omanik'а. - Ămbersuunamise URI:

Link, mis Autoriseerimisserver suunab ĂŒmber Ressursi omanikja pĂ€rast loa andmist klient'at. Seda nimetatakse mĂ”nikord "tagasihelistamis-URL-iks". - Vastuse tĂŒĂŒp:

Eeldatava teabe tĂŒĂŒp klient. KĂ”ige tavalisem Vastuse tĂŒĂŒp'ohm on kood, see tĂ€hendab klient loodab saada Autoriseerimiskood. - Ulatus:

See on vajalike Ă”iguste ĂŒksikasjalik kirjeldus klient'y, nĂ€iteks andmetele juurdepÀÀsemine vĂ”i teatud toimingute tegemine. - NĂ”usolek:

Autoriseerimisserver vĂ”tab Ăppesuunataotletud klient'om, ja kĂŒsib Ressursi omanik'a, kas ta on valmis pakkuma klient'omama vastavaid Ă”igusi. - kliendi ID:

Seda ID-d kasutatakse tuvastamiseks klient'a sisse Autoriseerimisserver'e. - Kliendi saladus:

See on ainult teadaolev parool klient'sina ja Autoriseerimisserver'at. See vÔimaldab neil privaatselt teavet jagada. - Autoriseerimiskood:

LĂŒhikese kehtivusajaga ajutine kood, mis klient annab Autoriseerimisserver'y vastutasuks Access Token. - Access Token:

VĂ”ti, millega klient suhtlemiseks kasutab ressursiserver'om. Omamoodi mĂ€rk vĂ”i vĂ”tmekaart, mis pakub klientomama luba andmete kĂŒsimiseks vĂ”i toimingute tegemiseks ressursiserverSinu nimel.
MÀrkus: MÔnikord on autoriseerimisserver ja ressursiserver sama server. Kuid mÔnel juhul vÔivad need olla erinevad serverid, isegi kui need ei kuulu samasse organisatsiooni. NÀiteks vÔib autoriseerimisserver olla kolmanda osapoole teenus, mida ressursiserver usaldab.
NĂŒĂŒd, kui oleme kĂ€sitlenud OAuth 2.0 pĂ”hikontseptsioone, pöördume tagasi oma nĂ€ite juurde ja vaatame lĂ€hemalt, mis OAuthi voos toimub.

- Sina, Ressursi omanik, soovite pakkuda teenust Terrible Pun of the Day (klienty) juurdepÀÀs teie kontaktidele, et nad saaksid saata kutseid kÔigile teie sÔpradele.
- klient suunab brauseri lehele Autoriseerimisserver'a ja lisage pĂ€ringusse kliendi ID, Ămbersuunamise URI, Vastuse tĂŒĂŒp ja ĂŒks vĂ”i mitu Ăppesuuna (load), mida see vajab.
- Autoriseerimisserver kontrollib teid, kĂŒsides vajadusel kasutajanime ja parooli.
- Autoriseerimisserver kuvab vormi NĂ”usolek (kinnitused) koos kĂ”igi nimekirjaga Ăppesuunataotletud klient'om. NĂ”ustute vĂ”i keeldute.
- Autoriseerimisserver suunab teid saidile klient'a, kasutades Ămbersuunamise URI koos Autoriseerimiskood (volituskood).
- klient suhtleb otse Autoriseerimisserver'ohm (brauserist mööda minnes Ressursi omanik'a) ja saadab turvaliselt kliendi ID, Kliendi saladus О Autoriseerimiskood.
- Autoriseerimisserver kontrollib andmeid ja vastab Access Token'om (pÀÀsuluba).
- NĂŒĂŒd jagab ta klient saab kasutada Access Token pĂ€ringu saatmiseks ressursiserver kontaktide loendi saamiseks.
Kliendi ID ja saladus
Ammu enne seda, kui lubasite PÀeva kohutaval sÔnamÀngul oma kontaktidele juurde pÀÀseda, olid kliendi ja autoriseerimisserver loonud töösuhte. Autoriseerimisserver genereeris kliendi ID ja kliendi saladuse (mÔnikord nimetatakse seda App ID О Rakenduse saladus) ja saatis need kliendile edasiseks suhtluseks OAuthis.

"- Tere! Tahaksin teiega koostööd teha! - Muidugi, see pole probleem! Siin on teie kliendi ID ja saladus!
Nimi vihjab, et kliendisaladust tuleb hoida saladuses, et seda teaksid ainult klient ja autoriseerimisserver. LÔppude lÔpuks kinnitab autoriseerimisserver just tema abiga Kliendi tÔde.
Kuid see pole veel kÔik... Tere tulemast OpenID Connecti!
OAuth 2.0 on mĂ”eldud ainult volitus - vĂ”imaldada juurdepÀÀsu andmetele ja funktsioonidele ĂŒhest rakendusest teise. (OIDC) on OAuth 2.0 peal olev Ă”huke kiht, mis lisab kontole sisse logitud kasutaja sisselogimis- ja profiiliandmed. Sisselogimisseansi korraldamist nimetatakse sageli autentimine [autentimine]ja teavet sĂŒsteemi sisse logitud kasutaja kohta (nt umbes Ressursi omanik'e), â isiklikud andmed [identiteet]. Kui autoriseerimisserver toetab OIDC-d, nimetatakse seda mĂ”nikord ka kui isikuandmete pakkuja [identiteedi pakkuja]sest see annab klient'teavet selle kohta Ressursi omanik'e.
OpenID Connect vĂ”imaldab rakendada stsenaariume, kus ĂŒhte sisselogimist saab kasutada mitmes rakenduses â seda lĂ€henemist tuntakse ka kui ĂŒhekordne sisselogimine (SSO). NĂ€iteks vĂ”ib rakendus toetada SSO integreerimist sotsiaalsete vĂ”rgustikega, nagu Facebook vĂ”i Twitter, vĂ”imaldades kasutajatel kasutada kontot, mis neil juba on ja mida eelistavad kasutada.

Voog (voog) OpenID Connect nÀeb vÀlja sama, mis OAuthi puhul. Ainus erinevus seisneb selles, et esmases taotluses kasutatakse konkreetset ulatust openid, - A klient lÔpuks meeldib Access TokenJa ID-mÀrk.

Nii nagu OAuthi voos, Access Token OpenID Connectis on see vÀÀrtus, mis pole selge klient'at. Vaatepunktist klient'а Access Token tÀhistab tÀhemÀrkide jada, mis edastatakse koos iga pÀringuga ressursiserver'y, mis mÀÀrab, kas mÀrk on kehtiv. ID-mÀrk esindab tÀiesti erinevat asja.
ID Token on JWT
ID-mĂ€rk on spetsiaalselt vormindatud mĂ€rgijada, mida tuntakse JSON Web Token vĂ”i JWT nime all (mĂ”nikord hÀÀldatakse JWT mĂ€rke nagu "jots"). VĂ€lisvaatlejatele vĂ”ib JWT tunduda arusaamatu jaburana, kuid klient saab JWT-st vĂ€lja vĂ”tta erinevat teavet, nagu ID, kasutajanimi, sisselogimisaeg, aegumiskuupĂ€ev ID-mĂ€rkâa, JWT-d sekkumise katsete olemasolu. Andmed sees ID-mĂ€rk'a kutsutakse rakendusi [vĂ€ited].

OIDC puhul on olemas ka standardne viis, mille abil klient vĂ”ib kĂŒsida ĂŒksikisiku kohta lisateavet [identiteet] pĂ€rit Autoriseerimisserver'a, nĂ€iteks e-posti aadress, mis kasutab Access Token.
Lisateave OAuthi ja OIDC kohta
Niisiis vaatasime lĂŒhidalt ĂŒle, kuidas OAuth ja OIDC töötavad. Kas olete valmis sĂŒgavamale kaevama? Siin on tĂ€iendavad ressursid, mis aitavad teil OAuth 2.0 ja OpenID Connecti kohta lisateavet saada.
Nagu alati, kommenteerige julgelt. Et olla kursis meie viimaste uudistega, tellige Đž Okta arendajatele!
PS tÔlkijalt
Loe ka meie blogist:
- «";
- «";
- «";
- «'.
Allikas: www.habr.com











