MĂ€rkus tĂ”lke kohta.: Selles suurepĂ€rases materjalis rÀÀgib Okta selgelt ja arusaadavalt OAuthi ja OIDC (OpenID Connect) toimimise pĂ”himĂ”tetest. Need teadmised on kasulikud arendajatele, sĂŒsteemiadministraatoritele ja isegi tavakasutajatele, kes kasutavad populaarseid veebirakendusi, mis tĂ”enĂ€oliselt jagavad ka oma konfidentsiaalseid andmeid teiste teenustega.
Interneti âkivikodusâ oli teabe jagamine teenuste vahel lihtne. Antid lihtsalt oma sisselogimise ja parooli ĂŒhest teenusest teise, et nad saaksid pÀÀseda sinu kontole ja saada vajalikku teavet.

âAndke oma pangakonto.â - âLubame, et paroolide ja rahaga on kĂ”ik korras. TĂ”esti, ausalt!â *haha*
Jube! Ăkski organisatsioon ei tohi kunagi nĂ”uda, et kasutaja jagaks oma sisselogimisandmeid andmeid, mis on seotud teiste teenustega. Pole mingeid garantii, et see teenus, mille eest see organisatsioon seisab, hoiab andmeid turvaliselt ja ei kogu rohkem isiklikku teavet, kui vajalik. See vĂ”ib tunduda mĂ€rkamatuna, kuid mĂ”ned rakendused kasutavad endiselt sellist praktikat!
TĂ€napĂ€eval on olemas ĂŒhtne standard, mis vĂ”imaldab ĂŒhel teenusel turvaliselt kasutada teiste andmeid. Kahjuks sisaldavad sellised standardid palju ĆŸargooni ja termineid, mis muudavad nende mĂ”istmise keeruliseks. Selle materjali eesmĂ€rk on kasutada lihtsaid illustratsioone, et selgitada, kuidas need toimivad (Kas arvate, et mu joonistused meenutavad laste joonistusi? No ja mis siis!).

Muide, see juhend on saadaval ka videoformaadis:

Daamid ja hÀrrad, tervitage: OAuth 2.0
on turstandard, mis vĂ”imaldab ĂŒhel rakendusel saada volitusi teise rakenduse teabe kasutamiseks. Luba andmise protseduur [permission] (vĂ”i nĂ”usolek [consent]) nimetatakse sageli autoriseerimiseks [authorization] vĂ”i isegi delegeeritud autoriseerimiseks [delegated authorization]. Selle standardi abil lubate rakendusel lugeda andmeid vĂ”i kasutada teise rakenduse funktsioone teie nimel, ilma et jagaksite selle parooli. Lahe!
NĂ€iteks kujuta ette, et oled leidnud veebisaidi nimega âPĂ€eva kohutav sĂ”namĂ€ngâ [Terrible Pun of the Day] ja registreeriti seal, et saada iga pĂ€ev sĂ”nademĂ€ngusid tekstisĂ”numitena oma telefonile. Hindate seda veebisaiti vĂ€ga ja otsustasite jagada seda kĂ”igiga, keda tunnete. Saame aru, et kohutavad sĂ”nademĂ€ngud meeldivad kĂ”igile, kas pole?

«PĂ€eva ebaĂ”nnestunud sĂ”nademĂ€ng: Kas olete kuulnud mehest, kes kaotas vasaku keha poole? NĂŒĂŒd on ta alati parem!» (tĂ”lge on umbkaudne, sest originaalis on oma sĂ”namĂ€ng â toim.)
On selge, et igale kontaktloendi isikule kirjutamine ei ole variant. Ja kui te natukenegi sarnanete mulle, siis teete kĂ”ik, et vĂ€ltida ĂŒlemÀÀrast tööd. Ănneks saab Terrible Pun of the Day ise kutsuda kĂ”iki teie sĂ”pru! Selleks tuleb lihtsalt avada rakendusele juurdepÀÀs oma kontaktide e-posti aadressile â veebisait saadab neile ise kutseid (OAuth juhib)!

«KĂ”ik armastavad sĂ”nademĂ€nge! â Kas olete juba sisse loginud? â Kas soovite avada Terrible Pun of the Day lehele juurdepÀÀsu kontaktide loetellu? â AitĂ€h! NĂŒĂŒd saadame igapĂ€evaselt meeldetuletusi kĂ”igile, keda te tunnete, igavesti! Te olete parim sĂ”ber!»
- Valige oma e-posti teenus.
- Vajadusel minge e-posti lehele ja logige oma kontole sisse.
- Andke Terrible Pun of the Day lehele luba kontaktidele juurdepÀÀsuks.
- Naaske Terrible Pun of the Day lehele.
Juhul kui te ĂŒmber mĂ”tleks, pakuvad OAuth-i rakendused samuti vĂ”imalust juurdepÀÀsu tĂŒhistamiseks. Kui olete otsustanud, et te ei soovi enam oma kontaktidega Terrible Pun of the Day jagada, vĂ”ite minna e-posti lehele ja eemaldada sĂ”nademĂ€nge sisaldav veebisait autoriseeritud rakenduste loendist.
OAuth voog
Just Ă€sja lĂ€bisime selle, mida tavaliselt nimetatakse voog [flow] OAuth. Meie nĂ€ites koosneb see voog nĂ€htavatest sammudest ning mitmest nĂ€htamatust, mille jooksul kaks teenust lepivad kokku teabe turvalises vahetamises. Eelnevas nĂ€ites Terrible Pun of the Day korraldatakse kĂ”ige levinum OAuth 2.0 voog, mida tuntakse kui "autoriseerimiskoodi" voog [âauthorization codeâ flow].
Enne kui sukeldume OAuth tööpÔhimÔtete detaljidesse, rÀÀgime mÔnedest mÔistetest:
- Ressursi omanik:

See olete teie! Te omate oma mandaate, oma andmeid ja haldate kÔiki tegevusi, mis vÔivad toimuda teie kontodega. - Klient:

Rakendus (nt teenus Terrible Pun of the Day), mis soovib pÀÀseda juurde vĂ”i teostada teatud toiminguid {client_name} nimel. Ressursi omanikâle. - Autoriseerimise server:

Rakendus, mis teab Ressursi omanikâst ja millel on Ressursi omanikâl juba konto. - Resursside server:

Rakenduste programmeerimise liides (API) vĂ”i teenus, mida Klient soovib kasutada {client_name} nimel. Ressursi omanikâle. - Suunamis-URI:

Link, kuhu Autoriseerimise server suunatakse Ressursi omanikâle pĂ€rast volituste andmist Klientâle. MĂ”nikord nimetatakse seda ka 'Tagastamis-URL' ('Callback URL'). - VastusetĂŒĂŒp:

Teave, mida oodatakse saavat Klient. Levinum VastusetĂŒĂŒpâst on kood, mis tĂ€hendab Klient et plaanitakse saada Autoriseerimis kood. - Ulatus:

See on detailne kirjeldus lubadest, mis on vajalikud Klientâle, nĂ€iteks andmete juurde pÀÀsemiseks vĂ”i teatud toimingute teostamiseks. - NĂ”usolek:

Autoriseerimise server vĂ”tab Skopid, mida kĂŒsib Klientâlt, ja kĂŒsib Ressursi omanikâlt, kas ta on valmis andma Klientâle vastavad Ă”igused. - Client ID:

See ID kasutatakse Klientât tuvastamiseks Autoriseerimise serverâs. - Kliendisaladus:

See on parool, mis on tuntud ainult Klientâle ja Autoriseerimise serverâle. See vĂ”imaldab neil konfidentsiaalselt teavet vahetada. - Autoriseerimis kood:

Ajutine kood lĂŒhikese kehtivusajaga, mida Klient pakub Autoriseerimise serverâlt vahetatakse LigipÀÀsutoken. - LigipÀÀsutoken:

VĂ”ti, mida klient kasutab suhtlemiseks Resursside serverâga. See on nagu badge vĂ”i juurdepÀÀsukaart, mis annab Klientâle Ă”iguse pĂ€rida andmeid vĂ”i teostada toiminguid Resursside serverâs {client_name} nimel.
MÀrkus: mÔnikord on autoriseerimise server ja ressursserver sama server. Siiski vÔivad nad olla ka erinevad serverid, mis ei kuulu isegi samasse organisatsiooni. NÀiteks autoriseerimise server vÔib olla kolmas osaliste teenus, mida usaldab ressursserver.
NĂŒĂŒd, kui oleme tutvunud OAuth 2.0 pĂ”hikontseptsioonidega, vaatame tagasi meie nĂ€itele ja uurime ĂŒksikasjalikult, mis toimub OAuth voo kĂ€igus.

- Teie, Ressursi omaniksoovite anda teenusele Terrible Pun of the Day ({client_name}) ligipÀÀsu oma kontaktidele, et nad saaksid saata kutseid kÔigile teie sÔpradele.Klientsuunab brauseri lehele
- Klient âle ja sisaldab pĂ€ringus Autoriseerimise serverja ĂŒhte vĂ”i mitut Client ID, Suunamis-URI, VastusetĂŒĂŒp (luba), mida tal on vaja. Skopid kontrollib teid, kĂŒsides vajadusel sisselogimist ja parooli.
- Autoriseerimise server kuvatakse vorm
- Autoriseerimise server (kinnitada) kĂ”igi seas NĂ”usolek , mida kĂŒsib Skopidâlt. Te nĂ”ustute vĂ”i keeldute. Klientsuunab teid saidile
- Autoriseerimise server âle, kasutades Klient(autoriseerimiskoodi). Suunamis-URI koos Autoriseerimis kood otseteed ĂŒhendab
- Klient âga (brauseri vahele jĂ€tmine Autoriseerimise serverâst) ja saadab turvaliselt. Ressursi omanikâа) Đž Đ±Đ”Đ·ĐŸĐżĐ°ŃĐœĐŸ ĐŸŃĐżŃаĐČĐ»ŃĐ”Ń Client ID, Kliendisaladus ja Autoriseerimis kood.
- Autoriseerimise server kontrollib andmeid ja vastab LigipÀÀsutokenâga (juurdepÀÀsu tokeniga).
- NĂŒĂŒd Klient ĂŒht privaate vĂ”tit, olenemata sellest, millist juhuslikustatud versiooni tema avalikust vĂ”tme kasutati krĂŒpteerimiseks. LigipÀÀsutoken pĂ€ringu saatmiseks Resursside server eesmĂ€rgiga saada kontaktide nimekiri.
Kliendi ID ja Salajane
Aastas enne, kui te lubasite Terrible Pun of the Day'il pÀÀseda kontaktidele, kliendil ja autoriseerimise serveril loodi tööalased suhted. Autoriseerimise server genereeris Kliendi ID ja Kliendi Saladuse (mÔnikord nimetatakse neid ka Rakenduse ID ja Rakenduse Salajane) ja saatis need kliendile edaspidiseks suhtlemiseks OAuth raames.

ââ Tere! Ma tahaksin teiega koostööd teha! â Pole probleemi! Siin on sinu Kliendi ID ja Salajane!â
Nimi viitab sellele, et Kliendi Saladust tuleks hoida saladuses, et seda teaksid ainult Klient ja Autoriseerimise Server. Just selle abil Autoriseerimise Server kinnitab Kliendi tÔelisust.
Aga see pole veel kÔik⊠Palun tervitage OpenID Connect'i!
OAuth 2.0 on loodud ainult volitamiseks â andmete ja funktsioonide andmiseks ĂŒhest rakendusest teise. (OIDC) â see on Ă”huke kiht OAuth 2.0 kohal, mis lisab teavet kasutaja sisselogimise ja profiili kohta, kes on oma kontole sisse loginud. Sisselogimise sessiooni korraldamist nimetatakse sageli autentimiseks [authentication], ja teavet sisseloginud kasutaja kohta (st Ressursi omanikâst), â isikuandmed [identity]. Kui Autoriseerimise Server toetab OIDC-d, nimetatakse seda mĂ”nikord isikuteabe pakkujaks [identity provider], kuna see annab Klientâle teavet Ressursi omanikâs.
OpenID Connect vĂ”imaldab ellu viia stsenaariume, kus ĂŒhtset sisselogimist saab kasutada mitmes rakenduses â seda lĂ€henemist tuntakse ka kui ĂŒhtne sisselogimine (SSO). NĂ€iteks vĂ”ib rakendus toetada SSO integreerimist sotsiaalsete vĂ”rgustikega, nagu Facebook vĂ”i Twitter, lubades kasutajatel kasutada juba olemasolevat ja eelistatud kontot.

OpenID Connectâi voog (flow) nĂ€eb vĂ€lja sarnaselt OAuth'iga. Ainuke erinevus seisneb selles, et algses pĂ€ringus kasutatav konkreetne ulatus (scope) on openid, â ja Klient saab lĂ”puks nagu LigipÀÀsutoken, kui ka ID Token.

Nagu ka OAuth'i voos, LigipÀÀsutoken on OpenID Connect'is - see on mingi vÀÀrtus, mida ei mĂ”isteta Klientâle. Kliendi poolelt Klientesindab see teatud sĂŒmbolite jada, mis saadetakse koos iga pĂ€ringuga LigipÀÀsutoken âle, ja see mÀÀrab, kas token on kehtiv. Resursside serveresindab tĂ€iesti muud. ID Token ID Token â see on JWT
â see on eriliselt vormindatud sĂŒmbolite jada, tuntud kui JSON Web Token vĂ”i JWT
ID Token (mĂ”nikord hÀÀldatakse JWT-d kui âjotsâ) (ĐžĐœĐŸĐłĐŽĐ° ŃĐŸĐșĐ”ĐœŃ JWT ĐżŃĐŸĐžĐ·ĐœĐŸŃŃŃ ĐșаĐș «jots»). Kolmandatel isikutel vĂ”ib JWT nĂ€ida arusaamatu abrakadabra, kuid Klient saab JWT-st erinevat teavet, nĂ€iteks ID, kasutajanimi, sisselogimise aeg, kehtivuse lĂ”ppkuupĂ€ev ID Tokenteatustele sekkumise katsete olemasolust. Andmed sees ID Tokennimetatakse nĂ”udmisteks [claims].

OIDC korral on olemas ka standardne viis, kuidas Klient vĂ”ib kĂŒsida lisateavet isiku kohta [identity] alates Autoriseerimise servernt e-posti aadress, kasutades LigipÀÀsutoken.
Lisainfot OAuth ja OIDC kohta
Nii, oleme lĂŒhidalt ĂŒle vaadanud OAuth ja OIDC tööpĂ”himĂ”tted. Kas olete valmis sĂŒgavamale minekuks? Siin on tĂ€iendavad ressursid, mis aitavad rohkem teada saada OAuth 2.0 ja OpenID Connecti kohta:
Nagu ikka, Àrge kartke kommenteerida. Et olla kursis meie viimaste uuendustega, tellige ja Okta arendajate ettevÔttelt!
P.S. tÔlkijalt
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com











