Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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.

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta
„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!).

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

Muide, see juhend on saadaval ka videoformaatis:

Vaata videot

Daamid ja hÀrrad, tutvustame: OAuth 2.0

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?

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta
«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)!

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta
«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!»

  1. Valige oma e-posti teenus.
  2. Vajadusel minge e-posti saidile ja logige sisse oma kontole.
  3. Andke Terrible Pun of the Day le lubadus juurdepÀÀsuks kontaktidele.
  4. 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:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

    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:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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

  • Autoriseerimisserver:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

    Rakendus, mis teab Ressursi omanikning millel on Ressursi omanikjuba konto.

  • Ressursside server:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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

  • Redirect URI:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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

  • Response Type:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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

  • Ulatus:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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

  • NĂ”usolek:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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

  • Kliendi ID:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

    See ID kasutatakse Kliendituvastamiseks AutoriseerimisserversĂŒsteemis.

  • Kliendi saladus:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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

  • Autoriseerimiskood:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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

  • Access Tokeni vastu.:

    Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

    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.

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

  1. 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.
  2. 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.
  3. Autoriseerimisserver kontrollib teid, kĂŒsides vajadusel sisse logimist ja parooli.
  4. Autoriseerimisserver kuvab vormi NĂ”usolek (kinnitamiseks) koos loetelu kĂ”igist Skopid, mida on taotlenud Kliendi‘. Te nĂ”ustute vĂ”i keeldute.
  5. Autoriseerimisserver suunab teid 'i veebisaidile, kasutades Kliendikoos Redirect URI (autoriseerimiskoodiga). Autoriseerimiskood ĂŒhendab otse
  6. Kliendi otseselt ĂŒhendub Autoriseerimisserver‘om (brauserist mööda Ressursi omanik‘a) ja edastab turvaliselt Kliendi ID, Kliendi saladus ja Autoriseerimiskood.
  7. Autoriseerimisserver kontrollib andmeid ja vastab Access Tokeni vastu.‘om (juurdepÀÀsutoken).
  8. 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.

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta
«— 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. OpenID Connect (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.

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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.

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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].

Illustreeritud juhend OAuth'i ja OpenID Connect'i kohta

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 Twitter ja YouTube Okta arendajate ettevÔtte uudiskiri!

P.S. tÔlkija mÀrkused

Lugege ka meie blogist:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster