MĂ€rk. tĂ”lge.: Selles suurepĂ€rases materjalis rÀÀgib ettevĂ”te Okta lihtsalt ja selgelt OAuth-i ja OIDC (OpenID Connect) tööpĂ”himĂ”tetest. Need teadmised on kasulikud arendajatele, sĂŒsteemiadministraatoritele ja isegi tavakasutajatele, kes kasutavad populaarseid veebirakendusi ja jagavad tĂ”enĂ€oliselt ka tundlikke andmeid teiste teenustega.
Interneti âkiviajastuâ ajal oli teenuste vahel teabe jagamine lihtne. Sa andsid lihtsalt oma kasutajanime ja parooli ĂŒhe teenuse jaoks teisele, et see saaks siseneda sinu kontole ja saada vajaliku teabe.

âKasutage oma pangakontot.â â âMe lubame, et parooliga ja rahaga on kĂ”ik korras. AusĂ”na!â *hee-hee*
Jube! Keegi ei tohi kunagi nÔuda kasutajalt, et ta jagaks oma kasutajanime ja parooli, tema kontod, teise teenusega. Ei mingit garantiid, et selle teenuse taga olev organisatsioon hoiab andmeid turvaliselt ega kogu rohkem isiklikku teavet, kui on vajalik. See vÔib tunduda metsikuna, kuid mÔned rakendused kasutavad endiselt selliseid tavasid!
TĂ€na on olemas ĂŒhtne standard, mis vĂ”imaldab ĂŒhel teenusel turvaliselt kasutada teise andmeid. Kahjuks kasutavad sellised standardid hulga ĆŸargooni ja termineid, mis muudavad nende mĂ”istmise keeruliseks. Selle materjali eesmĂ€rk on illustreerida, kuidas need töötavad lihtsate jooniste abil (Kas arvad, et mu joonistused nĂ€evad vĂ€lja nagu laste sodimine? No ja siis!).

Muide, see juhend on saadaval ka videoformaatis:

Daamid ja hÀrrad, tutvustame: OAuth 2.0
â see on turvastandard, mis vĂ”imaldab ĂŒhel rakendusel saada luba teise rakenduse teabele juurdepÀÀsuks. Luba vĂ€ljastamise jĂ€rjekord [permission] (vĂ”i nĂ”usolek [consent]) nimetatakse sageli volitamiseks [authorization] vĂ”i isegi delegeeritud volitamiseks [delegated authorization]. Selle standardiga annate rakendusele Ă”iguse lugeda andmeid vĂ”i kasutada teise rakenduse funktsioone teie nimel, paljastamata oma parooli. Lahe!
NĂ€iteks kujutame ette, et leidsid veebisaidi nimega âTĂ€nane kohutav sĂ”namĂ€ngâ [Terrible Pun of the Day] otsustav ja registreeritud sellel, et saada igapĂ€evaselt nalju tekstisĂ”numite kaudu oma telefonile. Veebisait meeldis teile vĂ€ga ja soovisite seda kĂ”igile tuttavatele jagada. LĂ”ppude lĂ”puks meeldivad kĂ”ikidele kohutavad naljad, eks ole?

«PĂ€eva ebaĂ”nnestunud nali: Kas olete kuulnud mehest, kes kaotas oma keha vasaku poole? NĂŒĂŒd on ta alati parem!» (tĂ”lge on umbkaudne, kuna originaalis on oma sĂ”namĂ€ng â toimetaja mĂ€rkus)
On selge, et iga inimesele kontaktide loendis kirja kirjutamine ei ole variant. Ja kui te olete vĂ€hemalt natuke minu moodi, siis teete kĂ”ik selleks, et vĂ€ltida liigset tööd. Ănneks vĂ”ib Terrible Pun of the Day ise teie kĂ”igile sĂ”pradele kutse saata! Selleks tuleb vaid anda sellele juurdepÀÀs kontaktide e-posti aadressidele â veebisait saadab neile ise kutseid (OAuth on kuningas)!

«Kohutavad naljad meeldivad kĂ”igile! â Kas olete juba sisse logitud? â Kas soovite anda Terrible Pun of the Day-le juurdepÀÀsu kontaktide loetulele? â AitĂ€h! NĂŒĂŒd saadame me iga pĂ€ev meeldetuletusi kĂ”igile, keda tunnete, igavesti! Te olete parim sĂ”ber!»
- Valige oma e-posti teenus.
- Vajadusel minge e-posti saidile ja logige sisse oma kontole.
- Andke Terrible Pun of the Day le lubadus juurdepÀÀsuks kontaktidele.
- Naaske Terrible Pun of the Day lehele.
Kui muudate meelt, pakuvad OAuth'i kasutavad rakendused ka vĂ”imalust juurdepÀÀsu tĂŒhistamiseks. Otsustades, et te ei soovi enam kontakte Terrible Pun of the Day'ga jagada, saate minna e-posti saidile ja eemaldada naljade sait autoriseeritud rakenduste loendist.
OAuth voog
Just lÀbisime selle, mida tavaliselt nimetatakse vooks [flow] OAuth. Meie nÀites koosneb see voog nÀhtavatest sammudest ning mitmest nÀhtamatust sammust, mille kÀigus kaks teenust lepivad kokku teabe turvalises jagamises. Varasemas nÀites Terrible Pun of the Day's kasutatakse kÔige levinumat OAuth 2.0 voogu, mida tuntakse "autentimisnÀidatud koodi" voona. [«authorization code» flow].
Enne kui sĂŒveneme OAuth'i töödetailsse, rÀÀgime mĂ”nede terminite tĂ€hendusest:
- Ressursi omanik:

See oled sina! Sa oled oma mandaadi omanik, oma andmete haldaja ja vastutad kÔigi toimingute eest, mis vÔivad sinu kontodega seotud olla. - Kliendi:

Rakendus (nÀiteks teenus Terrible Pun of the Day), mis soovib pÀÀseda juurde vÔi teha teatud toiminguid Ressursi omaniknimel. - Autoriseerimisserver:

Rakendus, mis teab Ressursi omanikning millel on Ressursi omanikjuba konto. - Ressursside server:

Rakendusprogrammi liides (API) vÔi teenus, mida Kliendi soovitakse kasutada Ressursi omaniknimel. - Redirect URI:

Link, mille kaudu Autoriseerimisserver suunatakse Ressursi omanikpĂ€rast loa andmist Kliendi. MĂ”nikord nimetatakse seda âTagasipöördumise URL-iksâ (Callback URL). - Response Type:

Teave, mida oodatakse Kliendi. KĂ”ige levinum Response TypetĂŒĂŒp on kood, see tĂ€hendab Kliendi et oodatakse Autoriseerimiskood. - Ulatus:

See on ĂŒksikasjalik kirjeldus lubadest, mis on vajalikud Kliendi, nagu juurdepÀÀs andmetele vĂ”i teatud toimingute tegemine. - NĂ”usolek:

Autoriseerimisserver vĂ”tab Skopid, mida kĂŒsitakse Kliendija kĂŒsib Ressursi omanikkas ta on valmis Kliendivastavad Ă”igused. - Kliendi ID:

See ID kasutatakse Kliendituvastamiseks AutoriseerimisserversĂŒsteemis. - Kliendi saladus:

See on parool, mis on teada ainult Kliendija Autoriseerimisserver. See vÔimaldab neil teavet konfidentsiaalselt vahetada. - Autoriseerimiskood:

Ajutine kood, millel on lĂŒhike kehtivusaeg, mille Kliendi pakub Autoriseerimisserversaab vahetada Access Tokeni vastu.. - Access Tokeni vastu.:

Klahv, mida klient kasutab ĂŒhenduse saamiseks Ressursside serverâiga. Teatud tĂŒĂŒpi kĂ€epide vĂ”i vĂ”tmekaart, mis annab Kliendiâile Ă”iguse andmete taotlemiseks vĂ”i toimingute tegemiseks Ressursside serverâi nimel.
MÀrkus: mÔnikord on Autoriseerimise Server ja Ressursside Server sama server. Kuid mÔnel juhul vÔivad need olla erinevad serverid, mis ei kuulugi sama organisatsiooni. NÀiteks vÔib Autoriseerimise Server olla kolmanda osapoole teenus, millele Ressursside Server usaldab.
NĂŒĂŒd, kui oleme tutvunud OAuth 2.0 pĂ”hikontseptsioonidega, pöördume tagasi meie nĂ€ite juurde ja vaatame lĂ€hemalt, mis toimub OAuth voos.

- Teie, Ressursi omaniksoovite anda Terrible Pun of the Day (Kliendiâile) juurdepÀÀsu oma kontaktidele, et see saaks saata kutseid kĂ”igile teie sĂ”pradele.
- Kliendi suunab brauseri lehele Autoriseerimisserverâi ja lisab pĂ€ringule Kliendi ID, Redirect URI, Response Type ja ĂŒhe vĂ”i mitu Skopid (luba), mida ta vajab.
- Autoriseerimisserver kontrollib teid, kĂŒsides vajadusel sisse logimist ja parooli.
- Autoriseerimisserver kuvab vormi NĂ”usolek (kinnitamiseks) koos loetelu kĂ”igist Skopid, mida on taotlenud Kliendiâ. Te nĂ”ustute vĂ”i keeldute.
- Autoriseerimisserver suunab teid 'i veebisaidile, kasutades Kliendikoos Redirect URI (autoriseerimiskoodiga). Autoriseerimiskood ĂŒhendab otse
- Kliendi otseselt ĂŒhendub Autoriseerimisserverâom (brauserist mööda Ressursi omanikâa) ja edastab turvaliselt Kliendi ID, Kliendi saladus ja Autoriseerimiskood.
- Autoriseerimisserver kontrollib andmeid ja vastab Access Tokeni vastu.âom (juurdepÀÀsutoken).
- NĂŒĂŒd Kliendi vĂ”ib kasutada Access Tokeni vastu. pĂ€ringu saatmiseks Ressursside server et saada kontaktide nimekiri.
Klient ID ja Salajasuset
Enne seda, kui andsite Terrible Pun of the Day-le juurdepÀÀsu kontaktidele, loodi Kliendi ja Autentimisserveri vahel tööaluseid suhteid. Autentimisserver genereeris Klient ID ja Klient Salajasuse (mĂ”nikord nimetatakse neid Rakenduse ID ja Rakenduse Salajasus) ja saatis need Klientâile edasiseks suhtlemiseks OAuth-i raames.

«â Tere! Ma tahaksin sinuga koostööd teha! â Pole probleemi! Siin on sinu Klient ID ja Salajasus!»
Nimi vihjab sellele, et Klient Salajasus peab olema saladuses, nii et seda teavad ainult Klient ja Autentimisserver. Just tema abil Autentimisserver kinnitab Klientâide tĂ”elisust.
Aga see pole veel kĂ”ik⊠Palun tervitage OpenID Connectâi!
OAuth 2.0 on vĂ€lja töötatud ainult autoriseerimiseks â et vĂ”imaldada juurdepÀÀsu andmetele ja funktsioonidele ĂŒhe rakenduse poolt teisele. (OIDC) on OAuth 2.0 peal Ă”huke kiht, mis lisab teavet kasutaja sisselogimise ja profiili kohta, kes on sisse logitud konto. Sisselogimisseansi korraldamist nimetatakse sageli autentimiseks [authentication], ja teave kasutaja kohta, kes on sisse logitud (st Ressursi omanikâe), â isiklike andmete [identity]. Kui autoriseerimisteenus toetab OIDC, nimetatakse seda mĂ”nikord isiklike andmete teenusepakkujaks [identity provider], kuna see pakub Kliendiâle teavet Ressursi omaniksĂŒsteemis.
OpenID Connect vĂ”imaldab realiseerida stsenaariume, kus ĂŒhtset sisselogimist saab kasutada mitmes rakenduses â see lĂ€henemine on tuntud ka kui ĂŒhtne sisselogimine (SSO). NĂ€iteks vĂ”ib rakendus toetada SSO-integratsiooni sotsiaalmeedia platvormidega, nagu Facebook vĂ”i Twitter, vĂ”imaldades kasutajatel kasutada juba olemasolevat ja eelistatud kontot.

OpenID Connecti voog (flow) nĂ€eb vĂ€lja sarnane nagu OAuth puhul. Ainuke erinevus on see, et esialgses pĂ€ringus kasutatav konkreetne scope on openid, â ja Kliendi lĂ”ppkokkuvĂ”ttes saadakse nii Access Tokeni vastu., kui ka ID Token.

Sarnaselt OAuth voogule, Access Tokeni vastu. OpenID Connectis â see on mingi vÀÀrtus, mis ei ole mĂ”istetav Kliendiâle. Vaatenurgast Kliendiâst Access Tokeni vastu. on see mingi sĂŒmbolite string, mis edastatakse koos iga pĂ€ringuga Ressursside serverâle, ja see mÀÀrab, kas token on kehtiv. ID Token on tĂ€iesti midagi muud.
ID Token on JWT
ID Token â on erilise vormindusega sĂŒmbolite rida, mida tuntakse kui JSON Web Token vĂ”i JWT (mĂ”nikord hÀÀldatakse JWT-sid kui âjotsâ). Kolmandatele isikutele vĂ”ib JWT tunduda arusaamatu abrakadabra, kuid Kliendi vĂ”ib JWT-st vĂ€lja tĂ”mmata erinevat teavet, nagu ID, kasutajanimi, konto sisenemise aeg, kehtivuse lĂ”ppemise aeg ID Tokenja vĂ”imalike sekkumiskatsete kohta JWT-sse. Andmed ID Tokenselles on [claims].

OIDC puhul on ka standardne viis, kuidas Kliendi vĂ”ib kĂŒsida tĂ€iendavat teavet isiku kohta [identity] alates AutoriseerimisservernĂ€iteks e-posti aadress, kasutades Access Tokeni vastu..
TĂ€iendavad ĂŒksikasjad OAuth ja OIDC kohta
Nii oleme lĂŒhidalt kĂ€sitlenud OAuth ja OIDC toimimist. Kas olete valmis sĂŒgavamale kaevama? Siin on tĂ€iendavad ressursid, mis aitavad rohkem teada saada OAuth 2.0 ja OpenID Connecti kohta:
Nagu tavaliselt, Àrge kartke kommenteerida. Et olla kursis meie uusimate uudistega, tellige ja Okta arendajate ettevÔtte uudiskiri!
P.S. tÔlkija mÀrkused
Lugege ka meie blogist:
- «»;
- «»;
- «»;
- «».
Allikas: habr.com











