Ilustrovani vodič za OAuth i OpenID Connect

Bilješka. transl.: Ovaj sjajan Okta članak objašnjava kako OAuth i OIDC (OpenID Connect) funkcionišu na jednostavan i jasan način. Ovo znanje će biti korisno programerima, sistem administratorima, pa čak i "običnim korisnicima" popularnih web aplikacija, koje najvjerovatnije također razmjenjuju povjerljive podatke sa drugim servisima.

U kamenom dobu Interneta, dijeljenje informacija između servisa bilo je jednostavno. Jednostavno ste dali svoj login i lozinku sa jednog servisa na drugi, tako da je on ušao u vaš nalog i dobio sve potrebne informacije.

Ilustrovani vodič za OAuth i OpenID Connect
"Daj mi svoj bankovni račun." “Obećavamo da će sve biti u redu sa lozinkom i novcem. To je iskreno, iskreno!" *hi hi*

Užas! Niko nikada ne bi trebao zahtijevati od korisnika da dijeli korisničko ime i lozinku, vjerodajnice, sa drugom uslugom. Ne postoji garancija da će organizacija koja stoji iza ove usluge čuvati podatke i da neće prikupiti više ličnih podataka nego što je potrebno. Možda zvuči ludo, ali neke aplikacije i dalje koriste ovu praksu!

Danas postoji jedan standard koji omogućava jednoj usluzi da bezbedno koristi podatke druge. Nažalost, takvi standardi koriste mnogo žargona i termina, što otežava njihovo razumijevanje. Svrha ovog materijala je da objasni kako oni rade pomoću jednostavnih ilustracija (Mislite li da moji crteži liče na dječje mazanje? Pa dobro!).

Ilustrovani vodič za OAuth i OpenID Connect

Inače, ovaj vodič je dostupan i u video formatu:

Dame i gospodo, dobrodošli: OAuth 2.0

OAuth 2.0 je sigurnosni standard koji omogućava jednoj aplikaciji da dobije dozvolu za pristup informacijama u drugoj aplikaciji. Redoslijed koraka za izdavanje dozvole [dozvola] (ili pristanak [pristanak]) često zovu autorizacija [autorizacija] ili čak delegirano ovlaštenje [delegirano ovlaštenje]. Ovim standardom dozvoljavate aplikaciji da čita podatke ili koristi funkcije druge aplikacije u vaše ime bez da joj date svoju lozinku. Klasa!

Kao primjer, recimo da ste otkrili stranicu pod nazivom "Nesrećna igra dana" [Užasna igra dana] i odlučio se registrovati na njemu kako bi svakodnevno primao dosjetke u obliku tekstualnih poruka na telefon. Zaista vam se svidjela stranica i odlučili ste je podijeliti sa svim svojim prijateljima. Uostalom, svi vole jezive igre riječi, zar ne?

Ilustrovani vodič za OAuth i OpenID Connect
„Nesrećna igra reči dana: Jeste li čuli za tipa koji je izgubio levu polovinu tela? Sada je uvek u pravu!” (približan prevod, jer original ima svoju igru ​​reči - pribl. prevod)

Jasno je da pisanje svakoj osobi sa liste kontakata nije opcija. I, ako ste makar malo poput mene, onda ćete se potruditi da izbjegnete nepotreban rad. Srećom, Terrible Pun of the Day može sam pozvati sve vaše prijatelje! Da biste to učinili, samo trebate otvoriti pristup e-pošti vaših kontakata - sama stranica će im poslati pozivnice (OAuth pravila)!

Ilustrovani vodič za OAuth i OpenID Connect
„Svi vole igre reči! - Već ste prijavljeni? “Želite li dozvoliti web stranici Terrible Pun of the Day pristup vašoj listi kontakata? - Hvala ti! Od sada ćemo slati podsjetnike svaki dan svima koje poznajete, do kraja vremena! Ti si najbolji prijatelj!"

  1. Odaberite uslugu e-pošte.
  2. Ako je potrebno, idite na stranicu pošte i prijavite se na svoj račun.
  3. Dajte Terrible Pun of the Day dozvolu za pristup vašim kontaktima.
  4. Vratite se na stranicu Strašna igra dana.

U slučaju da se predomislite, aplikacije koje koriste OAuth također pružaju način za opoziv pristupa. Jednom kada odlučite da više ne želite dijeliti kontakte sa Užasnom igrokazom dana, možete otići na stranicu e-pošte i ukloniti mjesto riječi sa liste ovlaštenih aplikacija.

OAuth tok

Upravo smo prošli kroz ono što se obično zove protok [protok] OAuth. U našem primjeru, ovaj tok se sastoji od vidljivih koraka, kao i nekoliko nevidljivih koraka, u kojima se dvije usluge dogovaraju o sigurnoj razmjeni informacija. Prethodni primjer Terrible Pun of the Day koristi najčešći tok OAuth 2.0, poznat kao tok "autorizacijskog koda". [tok "autorizacionog koda"].

Prije nego što uđemo u detalje kako OAuth funkcionira, razgovarajmo o značenju nekih pojmova:

  • Vlasnik resursa:

    Ilustrovani vodič za OAuth i OpenID Connect

    To si ti! Vi posjedujete svoje vjerodajnice, svoje podatke i kontrolirate sve aktivnosti koje se mogu obavljati na vašim računima.

  • Klijent:

    Ilustrovani vodič za OAuth i OpenID Connect

    Aplikacija (na primjer, usluga Terrible Pun of the Day) koja želi pristupiti ili izvršiti određene radnje u ime Vlasnik resursa'a.

  • Server za autorizaciju:

    Ilustrovani vodič za OAuth i OpenID Connect

    Aplikacija koja zna Vlasnik resursa'a i u kojem u Vlasnik resursa'a već imam račun.

  • server resursa:

    Ilustrovani vodič za OAuth i OpenID Connect

    Interfejs za programiranje aplikacije (API) ili servis koji Klijent želi koristiti u ime Vlasnik resursa'a.

  • Preusmjeravanje URI:

    Ilustrovani vodič za OAuth i OpenID Connect

    Link koji Server za autorizaciju će preusmjeriti Vlasnik resursa'i nakon davanja dozvole Klijent'at. Ponekad se naziva i "URL povratnog poziva".

  • tip odgovora:

    Ilustrovani vodič za OAuth i OpenID Connect

    Vrsta informacija za koje se očekuje da će biti primljene Klijent. Najčešći tip odgovora'Ohm je šifra, tj Klijent očekuje da dobije Kod ovlaštenja.

  • obim:

    Ilustrovani vodič za OAuth i OpenID Connect

    Ovo je detaljan opis potrebnih dozvola Klijent'y, kao što je pristup podacima ili izvođenje određenih radnji.

  • pristanak:

    Ilustrovani vodič za OAuth i OpenID Connect

    Server za autorizaciju traje Scopeszatraženo Klijent'om, i pita Vlasnik resursa'a, da li je spreman pružiti Klijent'imati odgovarajuće dozvole.

  • ID klijenta:

    Ilustrovani vodič za OAuth i OpenID Connect

    Ovaj ID se koristi za identifikaciju Klijent'a on Server za autorizaciju'e.

  • Klijentska tajna:

    Ilustrovani vodič za OAuth i OpenID Connect

    Ovo je lozinka koja je samo poznata Klijent'u and Server za autorizaciju'at. Omogućava im da privatno dijele informacije.

  • Kod ovlaštenja:

    Ilustrovani vodič za OAuth i OpenID Connect

    Privremeni kod sa kratkim rokom važenja, koji Klijent pruža Server za autorizaciju'y u zamjenu za Access Token.

  • Access Token:

    Ilustrovani vodič za OAuth i OpenID Connect

    Ključ koji će klijent koristiti za komunikaciju server resursa'om. Neka vrsta značke ili ključ kartice koja pruža Klijent'imaju dozvolu za traženje podataka ili izvršavanje radnji na server resursa'e u vaše ime.

primjedba: Ponekad su server za autorizaciju i server resursa isti server. Međutim, u nekim slučajevima to mogu biti različiti serveri, čak i ako ne pripadaju istoj organizaciji. Na primjer, autorizacijski server može biti usluga treće strane kojoj poslužitelj resursa vjeruje.

Sada kada smo pokrili osnovne koncepte OAuth 2.0, vratimo se na naš primjer i pobliže pogledamo šta se dešava u OAuth toku.

Ilustrovani vodič za OAuth i OpenID Connect

  1. ti, Vlasnik resursa, želite pružiti uslugu Užasna igra dana (Klijenty) pristup vašim kontaktima kako bi oni mogli slati pozivnice svim vašim prijateljima.
  2. Klijent preusmjerava pretraživač na stranicu Server za autorizaciju'a i uključiti u upit ID klijenta, Preusmjeravanje URI, tip odgovora i jedan ili više Scopes (dozvole) koje su mu potrebne.
  3. Server za autorizaciju vas verificira, tražeći korisničko ime i lozinku ako je potrebno.
  4. Server za autorizaciju prikazuje obrazac pristanak (potvrde) sa listom svih Scopeszatraženo Klijent'om. Pristajete ili odbijate.
  5. Server za autorizaciju vas preusmjerava na stranicu Klijent'a, koristeći Preusmjeravanje URI zajedno sa Kod ovlaštenja (kod autorizacije).
  6. Klijent komunicira direktno sa Server za autorizaciju'ohm (zaobilazeći pretraživač Vlasnik resursa'a) i sigurno šalje ID klijenta, Klijentska tajna и Kod ovlaštenja.
  7. Server za autorizaciju provjerava podatke i odgovara sa Access Token'om (pristupni token).
  8. Sada Klijent mogu koristiti Access Token da pošaljete zahtjev server resursa da dobijete listu kontakata.

ID klijenta i tajna

Mnogo prije nego što ste dozvolili Terrible Pun of the Day da pristupi vašim kontaktima, klijent i autorizacijski server su uspostavili radni odnos. Autorizacijski server je generirao ID klijenta i tajnu klijenta (ponekad se zove ID aplikacije и App Secret) i poslao ih Klijentu na dalju interakciju unutar OAuth-a.

Ilustrovani vodič za OAuth i OpenID Connect
"- Zdravo! Voleo bih da radim sa vama! - Naravno, nije problem! Evo vašeg klijentskog ID-a i tajne!”

Ime nagoveštava da se tajna klijenta mora čuvati u tajnosti tako da je znaju samo klijent i autorizacioni server. Uostalom, uz njegovu pomoć server za autorizaciju potvrđuje istinitost Klijenta.

Ali to nije sve... Pozdravite OpenID Connect!

OAuth 2.0 je dizajniran samo za autorizacija - omogućiti pristup podacima i funkcijama iz jedne aplikacije u drugu. Otvorite ID Connect (OIDC) je tanak sloj na vrhu OAuth 2.0 koji dodaje podatke za prijavu i profil korisnika koji je prijavljen na nalog. Organizacija sesije za prijavu se često naziva autentifikaciju [autentifikacija], i informacije o korisniku prijavljenom na sistem (tj Vlasnik resursa'e), — lične podatke [identitet]. Ako autorizacijski server podržava OIDC, ponekad se naziva pružalac ličnih podataka [davatelj identiteta]jer pruža Klijent'imati informacije o Vlasnik resursa'e.

OpenID Connect vam omogućava da implementirate scenarije u kojima se jedna prijava može koristiti u više aplikacija - ovaj pristup je također poznat kao jedinstvena prijava (SSO). Na primjer, aplikacija može podržati SSO integraciju sa društvenim mrežama kao što su Facebook ili Twitter, omogućavajući korisnicima da koriste račun koji već imaju i koji preferiraju da koriste.

Ilustrovani vodič za OAuth i OpenID Connect

Protok (tok) OpenID Connect izgleda isto kao u slučaju OAuth. Jedina razlika je u tome što se u primarnom zahtjevu koristi specifičan opseg openid, - A Klijent na kraju dobije kao Access Token, i ID token.

Ilustrovani vodič za OAuth i OpenID Connect

Baš kao u OAuth toku, Access Token u OpenID Connect-u, ovo je neka vrijednost koja nije jasna Klijent'at. Sa tačke gledišta Klijent'i Access Token predstavlja niz znakova koji se prosljeđuje uz svaki zahtjev server resursa'y, koji određuje da li je token valjan. ID token predstavlja sasvim drugu stvar.

ID token je JWT

ID token je posebno formatiran niz znakova poznat kao JSON Web Token ili JWT (ponekad se JWT tokeni izgovaraju kao "jots"). Spoljašnjim posmatračima JWT može izgledati kao neshvatljivo brbljanje, ali Klijent može izdvojiti različite informacije iz JWT-a, kao što su ID, korisničko ime, vrijeme prijave, datum isteka ID token'a, prisustvo pokušaja ometanja JWT-a. Podaci unutra ID token'a se zovu aplikacije [zahtjevi].

Ilustrovani vodič za OAuth i OpenID Connect

U slučaju OIDC-a, postoji i standardni način na koji Klijent može tražiti dodatne informacije o pojedincu [identitet] iz Server za autorizaciju'a, na primjer, adresu e-pošte koja koristi Access Token.

Saznajte više o OAuth-u i OIDC-u

Dakle, ukratko smo pregledali kako OAuth i OIDC rade. Spremni za kopanje dublje? Evo dodatnih resursa koji će vam pomoći da saznate više o OAuth 2.0 i OpenID Connect:

Kao i uvijek, slobodno komentirajte. Da budete u toku s našim najnovijim vijestima, pretplatite se na cvrkut и YouTube Okta za programere!

PS od prevodioca

Pročitajte i na našem blogu:

izvor: www.habr.com

Dodajte komentar