Ilustrirani vodič za OAuth i OpenID Connect

Bilješka. prev.: Ovaj sjajan članak Okte objašnjava kako OAuth i OIDC (OpenID Connect) rade na jednostavan i jasan način. Ovo će znanje biti korisno programerima, administratorima sustava, pa čak i "običnim korisnicima" popularnih web aplikacija, koje vrlo vjerojatno također razmjenjuju povjerljive podatke s drugim servisima.

U kamenom dobu interneta dijeljenje informacija između servisa bilo je jednostavno. Jednostavno ste dali svoju prijavu i lozinku od jedne usluge do druge, tako da je on ušao u vaš račun i dobio sve potrebne informacije.

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

Užas! Nitko nikada ne bi trebao zahtijevati od korisnika da podijeli korisničko ime i lozinku, vjerodajnice, uz drugu uslugu. Ne postoji jamstvo da će organizacija koja stoji iza ove usluge čuvati podatke sigurnima i da neće prikupljati više osobnih podataka nego što je potrebno. Možda zvuči ludo, ali neke aplikacije još uvijek koriste ovu praksu!

Danas postoji jedinstveni standard koji jednoj usluzi omogućuje sigurno korištenje podataka druge. Nažalost, takvi standardi koriste mnogo žargona i izraza, što otežava njihovo razumijevanje. Svrha ovog materijala je objasniti kako funkcioniraju pomoću jednostavnih ilustracija (Mislite li da moji crteži sliče dječjem šaranju? Ma dobro!).

Ilustrirani vodič za OAuth i OpenID Connect

Usput, ovaj je vodič dostupan i u video formatu:

Dame i gospodo, dobrodošli: OAuth 2.0

OAuth 2.0 je sigurnosni standard koji jednoj aplikaciji omogućuje dobivanje dopuštenja za pristup informacijama u drugoj aplikaciji. Redoslijed koraka za izdavanje dozvole [dopuštenje] (Ili pristanak [pristanak]) često zovu ovlaštenje [autorizacija] ili čak delegirano ovlaštenje [delegirana autorizacija]. Ovim standardom dopuštate aplikaciji čitanje podataka ili korištenje funkcija druge aplikacije u vaše ime bez davanja vaše lozinke. Klasa!

Kao primjer, recimo da otkrijete web mjesto pod nazivom "Nesretna igra igre dana" [Užasna igra riječi dana] i odlučio se registrirati na njemu kako bi svakodnevno primao dosjetke u obliku SMS poruka na telefon. Stranica vam se jako svidjela i odlučili ste je podijeliti sa svim svojim prijateljima. Uostalom, svi vole jezive igre riječi, zar ne?

Ilustrirani vodič za OAuth i OpenID Connect
“Nesretna dosjetka dana: Jeste li čuli za tipa koji je izgubio lijevu polovicu tijela? Sada je uvijek u pravu!” (približan prijevod, jer original ima svoju igru ​​riječi - približan prijevod)

Jasno je da pisanje svakoj osobi s popisa kontakata nije opcija. I, ako ste makar malo poput mene, onda ćete ići na sve kako biste izbjegli 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 svojih kontakata - sama stranica će im poslati pozivnice (OAuth pravila)!

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

  1. Odaberite svoju uslugu e-pošte.
  2. Ako je potrebno, idite na web mjesto za poštu i prijavite se na svoj račun.
  3. Dajte Terrible Pun of the Day dopuštenje za pristup vašim kontaktima.
  4. Povratak na stranicu Terrible Pun of the Day.

U slučaju da se predomislite, aplikacije koje koriste OAuth također pružaju način opoziva pristupa. Nakon što odlučite da više ne želite dijeliti kontakte s Terrible Pun of the Day, možete otići na web mjesto za e-poštu i ukloniti mjesto s dosjetkom s popisa ovlaštenih aplikacija.

Tijek OAuth

Upravo smo prošli ono što se obično zove teći [teći] OAuth. U našem primjeru, ovaj tok se sastoji od vidljivih koraka, kao i nekoliko nevidljivih koraka, u kojima se dva servisa 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". [tijek "autorizacijski kod"].

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

  • Vlasnik resursa:

    Ilustrirani vodič za OAuth i OpenID Connect

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

  • Klijent:

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

  • Autorizacijski poslužitelj:

    Ilustrirani vodič za OAuth i OpenID Connect

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

  • poslužitelj resursa:

    Ilustrirani vodič za OAuth i OpenID Connect

    Programsko sučelje aplikacije (API) ili servis koji Klijent želi koristiti u ime Vlasnik resursa'a.

  • Preusmjeri URI:

    Ilustrirani vodič za OAuth i OpenID Connect

    Poveznica koja Autorizacijski poslužitelj će preusmjeriti Vlasnik resursa'i nakon davanja dopuštenja Klijent'na. Ponekad se naziva "URL povratnog poziva".

  • Vrsta odgovora:

    Ilustrirani vodič za OAuth i OpenID Connect

    Vrsta informacije za koju se očekuje da će biti primljena Klijent. Najčešći Vrsta odgovora'ohm je šifra, tj Klijent očekuje primiti Odobrenje Šifra.

  • Djelokrug:

    Ilustrirani vodič za OAuth i OpenID Connect

    Ovo je detaljan opis dopuštenja koja su potrebna Klijent'y, kao što je pristup podacima ili izvođenje određenih radnji.

  • Pristanak:

    Ilustrirani vodič za OAuth i OpenID Connect

    Autorizacijski poslužitelj beretka Scopeszatraženo Klijent'om, i pita Vlasnik resursa'a, je li spreman pružiti Klijent'imate odgovarajuća dopuštenja.

  • ID korisnika:

    Ilustrirani vodič za OAuth i OpenID Connect

    Ovaj ID se koristi za identifikaciju Klijent'a na Autorizacijski poslužitelj'e.

  • Klijentska tajna:

    Ilustrirani vodič za OAuth i OpenID Connect

    Ovo je lozinka koja se samo zna Klijent'u i Autorizacijski poslužitelj'na. Omogućuje im privatno dijeljenje informacija.

  • Odobrenje Šifra:

    Ilustrirani vodič za OAuth i OpenID Connect

    Privremeni kod s kratkim rokom valjanosti, koji Klijent pruža Autorizacijski poslužitelj'y u zamjenu za Pristup token.

  • Pristup token:

    Ilustrirani vodič za OAuth i OpenID Connect

    Ključ kojim će klijent komunicirati poslužitelj resursa'om. Vrsta značke ili ključne kartice koja pruža Klijent'imati dopuštenje za traženje podataka ili izvođenje radnji na poslužitelj resursa'e u tvoje ime.

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

Sada kada smo pokrili temeljne koncepte OAutha 2.0, vratimo se našem primjeru i pobliže pogledajmo što se događa u toku OAutha.

Ilustrirani vodič za OAuth i OpenID Connect

  1. Vas, Vlasnik resursa, želite pružiti uslugu Strašna igra riječi dana (Klijenty) pristup vašim kontaktima kako bi mogli slati pozivnice svim vašim prijateljima.
  2. Klijent preusmjerava preglednik na stranicu Autorizacijski poslužitelj'a i uključiti u upit ID korisnika, Preusmjeri URI, Vrsta odgovora i jedan ili više Scopes (dozvole) koje treba.
  3. Autorizacijski poslužitelj provjerava vas, tražeći korisničko ime i lozinku ako je potrebno.
  4. Autorizacijski poslužitelj prikazuje obrazac Pristanak (potvrde) s popisom svih Scopeszatraženo Klijent'om. Slažete se ili odbijate.
  5. Autorizacijski poslužitelj preusmjerava vas na stranicu Klijent'a, koristeći Preusmjeri URI zajedno s Odobrenje Šifra (autorizacijski kod).
  6. Klijent izravno komunicira s Autorizacijski poslužitelj'ohm (zaobilazeći preglednik Vlasnik resursa'a) i sigurno šalje ID korisnika, Klijentska tajna и Odobrenje Šifra.
  7. Autorizacijski poslužitelj provjerava podatke i odgovara s Pristup token'om (pristupni token).
  8. Sada Klijent može koristiti Pristup token poslati zahtjev poslužitelj resursa da biste dobili popis kontakata.

ID i tajna klijenta

Mnogo prije nego što ste dopustili Terrible Pun of the Day pristup vašim kontaktima, klijent i autorizacijski poslužitelj uspostavili su radni odnos. Poslužitelj za autorizaciju generirao je ID klijenta i tajnu klijenta (ponekad se nazivaju ID aplikacije и Tajna aplikacije) i poslao ih Klijentu na daljnju interakciju unutar OAutha.

Ilustrirani vodič za OAuth i OpenID Connect
"- Zdravo! Htio bih raditi s tobom! - Naravno, nije problem! Evo vašeg ID-a klijenta i tajne!"

Naziv implicira da tajna klijenta mora biti tajna tako da je znaju samo klijent i autorizacijski poslužitelj. Uostalom, uz njegovu pomoć autorizacijski poslužitelj potvrđuje istinitost klijenta.

Ali to nije sve... Pozdravite OpenID Connect!

OAuth 2.0 dizajniran je samo za autorizacija - omogućiti pristup podacima i funkcijama iz jedne aplikacije u drugu. OpenID Connect (OIDC) je tanki sloj na vrhu OAutha 2.0 koji dodaje podatke o prijavi i profilu korisnika koji je prijavljen na račun. Organizacija sesije prijave često se naziva ovjera [ovjera], te podatke o korisniku koji je prijavljen u sustav (tj. o Vlasnik resursa'e), — osobni podaci [identitet]. Ako autorizacijski poslužitelj podržava OIDC, ponekad se naziva davatelj osobnih podataka [davatelj identiteta]jer pruža Klijent'imati informacije o Vlasnik resursa'e.

OpenID Connect vam omogućuje implementaciju scenarija u kojima se jedna prijava može koristiti u više aplikacija - ovaj pristup je također poznat kao pojedinačna prijava (SSO). Na primjer, aplikacija može podržavati SSO integraciju s društvenim mrežama kao što su Facebook ili Twitter, dopuštajući korisnicima da koriste račun koji već imaju i koji radije koriste.

Ilustrirani vodič za OAuth i OpenID Connect

Tok (tijek) OpenID Connect izgleda isto kao u slučaju OAutha. Jedina je razlika u tome što se u primarnom zahtjevu koristi specifični opseg openid, - A Klijent na kraju dobije kao Pristup tokenI ID token.

Ilustrirani vodič za OAuth i OpenID Connect

Baš kao u OAuth toku, Pristup token u OpenID Connect, ovo je neka vrijednost koja nije jasna Klijent'na. S gledišta Klijent'a Pristup token predstavlja niz znakova koji se prosljeđuje uz svaki zahtjev poslužitelj resursa'y, koji određuje je li token valjan. ID token predstavlja sasvim drugu stvar.

ID token je JWT

ID token je posebno formatirani niz znakova poznat kao JSON web token ili JWT (ponekad se JWT tokeni izgovaraju kao "jots"). Promatračima izvana JWT može izgledati kao neshvatljivo brbljanje, ali Klijent može izvući razne informacije iz JWT-a, kao što su ID, korisničko ime, vrijeme prijave, datum isteka ID token'a, prisutnost pokušaja ometanja JWT-a. Podaci unutra ID token'a se zovu aplikacije [zahtjevi].

Ilustrirani vodič za OAuth i OpenID Connect

U slučaju OIDC-a također postoji standardni način na koji Klijent može zatražiti dodatne podatke o pojedincu [identitet] iz Autorizacijski poslužitelj'a, na primjer, adresu e-pošte pomoću Pristup token.

Saznajte više o OAuth i OIDC

Dakle, ukratko smo pregledali kako rade OAuth i OIDC. Jeste li spremni kopati dublje? Evo dodatnih resursa koji će vam pomoći da saznate više o OAuth 2.0 i OpenID Connectu:

Kao i uvijek, slobodno komentirajte. Kako biste bili u tijeku s našim najnovijim vijestima, pretplatite se na X / Twitter и YouTube Okta za programere!

PS od prevoditelja

Pročitajte i na našem blogu:

Izvor: www.habr.com

Dodajte komentar