Sigurnost

Upravljanje OAuth prijavom

Upravljanje OAuth prijavom

Važne stvari koje morate znati o OAuth-u

OAuth je nešto o čemu svaki programer mora znati. Ako izrađujete samostalnu aplikaciju ili aplikaciju treće strane koja se integrira s nekom drugom HTTP uslugom, morate znati kako OAuth funkcionira kako bi vašim korisnicima pružio jednostavnu i dobro integriranu uslugu.

Ideja je omogućiti klijentskim aplikacijama ograničeni pristup korisničkim informacijama bez ikada dijeljenja korisničkih vjerodajnica ili lozinke. OAuth framework odgovoran je za razmjene potrebne prije nego što aplikacija dobije vaše podatke.

Pretpostavimo da se želite prijaviti za Dev.na (što je izvrsno mjesto za razmjenu ideja za programere) omogućuju vam prijavu pomoću vašeg GitHub računa. Kako se to događa? Kako bi znali da ste vlasnik GitHub računa s kojim se prijavljujete?

Još važnije, kako osiguravate da Dev.to ne prekoračuje svoje granice kada su u pitanju vaši podaci pohranjeni na GitHubu?

Sudionici OAuth-a

Držat ćemo se primjera dodatka GitHub urednika Atoma koji omogućava programerima da guraju kôd na GitHub izravno pomoću sučelja Atom. Razlog tome je kao primjer jer GitHub ne skriva detalje iza scene i možete vidjeti što se događa ispod haube.

Prije nego što uđemo u sitnice rada OAuth-a. Postavimo pozornicu prepoznavanjem svih sudionika u razmjeni:

  1. Vlasnik ili korisnik resursa: Ovaj je korisnik onaj kojem se mora pristupiti (čitati i / ili pisati) podacima o računu kako bi mogao funkcionirati s aplikacijom.
  2. Klijent: Ovo je aplikacija koja traži vaše dopuštenje za pristup vašim podacima s druge usluge. U našem primjeru je klijent Atom editor.
  3. Resurs: Resurs su vaše stvarne informacije koje sjede na poslužiteljima na nekom udaljenom mjestu. To se može pristupiti putem API-ja ako se klijentu dodijele odgovarajuća dopuštenja.
  4. Autorizacijski poslužitelj: Također povezano s API-jem. Ovaj poslužitelj održava davatelj usluga (GitHub u našem primjeru). I autorizacijski poslužitelj i poslužitelj resursa nazivaju se API, jer njima upravlja jedan entitet, u ovom slučaju GitHub, te su izloženi kao API klijentskom programeru.

OAuth registracija

Proces započinje kada se razvija klijentska aplikacija. Možete otići do davatelja resursa i prijaviti se na portalu njihovih programera ili API odjeljku web stranice. Također ćete morati navesti URL za povratni poziv na koji će korisnik biti preusmjeren nakon prihvaćanja ili odbijanja kako bi aplikaciji dao potrebna dopuštenja.

Na primjer, ako odete na GitHub → Postavke → Postavke programera i kliknete na “Registriranje nove prijave”. Ovo bi vam omogućilo ID klijenta koji se mogu javno objaviti i a Klijentska tajna koje organizacija za programere mora držati ... dobro u tajnosti.

Nakon što klijentov ID i tajnu dobijete vi, programer, vi mora čuvajte ih na sigurnom jer ih poslužitelj autorizacije neće ponovno prikazati. Isto vrijedi i za sve druge žetone koji bi se bacali (Više o žetonima kasnije).

Tok rada OAuth 2

Registrirali ste svoju prijavu. Razvijen je i testiran, a sada su ga korisnici spremni koristiti. Novom korisniku prilikom registracije na vašu uslugu prikazat će se opcija "Prijavi se s GitHub". Ovo je prvi korak.

Korak 1: Zahtjev za autorizaciju

Zahtjev za autorizaciju dio je u kojem se otvara novi prozor (ili sličan upit) s web stranicom resursa i traži od korisnika da se prijave. Ako ste već prijavljeni na tom uređaju, tada se ovaj korak preskače i GitHub vas jednostavno pita želite li dati pristup klijentskoj aplikaciji Atom. To je mnogo transparentnije u slučaju Atoma jer traže da ručno posjetite web mjesto GitHub i odobrite im dopuštenje.

Prilikom posjeta URL-u traži se dopuštenje.

Primijetite da URL pokazuje da je ovo sigurna (HTTPS) web stranica tvrtke GitHub.Inc. Sada vi, korisnik, možete biti sigurni da izravno komunicirate s GitHubom. Atom jednostavno čeka, prilično daleko.

Za razliku od Atoma, većina klijentskih aplikacija automatski učitava stranicu za prijavu ili dopuštenja. Iako je ovo vrlo povoljno, može se i zloupotrijebiti ako klijentska aplikacija odluči otvoriti vezu za krađu identiteta. Da biste to izbjegli, uvijek morate provjeriti URL na koji ste preusmjereni i uvjeriti se da je točan URL i da koristi HTTPS protokol.

Korak 2: Dobivanje odobrenja za odobrenje

Da biste obavijestili Atom klijenta, dobivate token (odobrenje za odobrenje) koji se zatim predaje Atom klijentu.

Jednom kada korisnik to učini, posao korisnika je gotov. (U stvari, tipični korisnik nije ni svjestan razmjene odobrenja za autorizaciju. Primjer GitHub-a odabran je da pokaže da se to događa).

Korak 3: Dobivanje pristupnog tokena

Odobrenje za autorizaciju još uvijek nije entitet koji klijentu daje pristup korisničkim informacijama. To se dobiva pomoću nečega što se naziva pristupni token. Koji će klijentska aplikacija pokušati dobiti u ovom koraku.

Da bi to učinio, klijent će sada morati dati odobrenje za autorizaciju poslužitelju za autorizaciju zajedno s dokazom o vlastitom identitetu. Identitet se provjerava pomoću ID-a klijenta i tajne klijenta koji su ranije dodijeljeni klijentskoj aplikaciji.

Provjera identiteta vrši se kako bi se osiguralo da korisnik nije prevaren da koristi podlu aplikaciju koja se pretvara da je legalna aplikacija. Na primjer, ako netko odluči svom izvršnom programu dati ime Atom s istim imenom, logotipom i funkcionalnošću, korisnik bi mogao biti prevaren da pruži pristup klijentu koji može zloupotrijebiti vaše podatke. Oni mogu njuškati ili čak djelovati bez vašeg pristanka. Autorizacijski poslužitelj osigurava da je klijent zaista ono što se čini svojim korisnicima.

Nakon što se identitet provjeri i odobrenje za autorizaciju prihvati, poslužitelj za autorizaciju baca token u klijentsku aplikaciju. Zamislite token kao kombinaciju korisničkog imena i lozinke koji se mogu dati poslužitelju resursa za pristup određenom zaštićenom resursu kojem vam je vlasnik resursa dopustio pristup.

Napokon, pomoću ovog tokena aplikacija sada može dobiti pristup potrebnim korisničkim informacijama i drugim resursima s poslužitelja resursa.

Primijetite, kako se u cijeloj ovoj razmjeni stvarno korisničko ime i lozinka nikada nisu dijelili s klijentom? To je ljepota OAuth-a. Umjesto davanja korisničkog imena i lozinki koje aplikaciji omogućuju cjelokupan pristup resursu, umjesto toga koristi tokene. A token može dobiti samo ograničeni pristup resursu.

Opoziv dozvola

Pretpostavimo da izgubite pristup svom uređaju u kojem je bila autorizirana aplikacija za klijenta. Možete se prijaviti na GitHub i otići na Postavke → Programi → Ovlaštene OAuth aplikacije da biste opozvali odobrenje za odobrenje i token za pristup. I ja ću raditi isto, jer je na gornjim snimkama zaslona javno odobrena dodjela odobrenja.

Sad kad imate ptičji pogled na to kako OAuth 2.Ovdje možete pročitati više o odobrenjima za autorizaciju i ostalim detaljnijim detaljima protokola te o načinu obavljanja API poziva.

Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...
Najbolje aplikacije za mapiranje gamepada za Linux
Ako volite igrati igre na Linuxu s gamepadom umjesto tipičnim sustavom za unos tipkovnice i miša, za vas postoji nekoliko korisnih aplikacija. Mnoge r...
Korisni alati za Linux igrače
Ako volite igrati igre na Linuxu, velika je vjerojatnost da ste možda koristili aplikacije i uslužne programe poput Wine, Lutris i OBS Studio za pobol...