Što je OAuth? „Prijava putem Googlea” i delegirani pristup objašnjeno
OAuth je otvoreni standard koji korisniku omogućuje da jednoj aplikaciji dade ograničen pristup svom računu na drugom servisu, bez predaje lozinke. Kad kliknete „Poveži Google kalendar” i vidite ekran s pitanjem „Dopustiti ovoj aplikaciji da vidi vaše događaje?”, to je OAuth. Aplikacija dobiva token samo za ono što ste odobrili, a taj pristup možete u bilo kojem trenutku opozvati. Isti mehanizam, uz dodatni sloj zvan OpenID Connect, pokreće „Prijavi se putem Googlea” i slične gumbe.
Zašto je OAuth važan kad gradite s AI-jem
OAuth se pojavljuje u dvije uobičajene situacije pri izradi aplikacije:
- Društvena prijava. Želite da se korisnici prijavljuju „putem Googlea” (ili Applea, Microsofta, GitHuba) umjesto da stvaraju još jednu lozinku. Pogledajte kako dodati prijavu u aplikaciju.
- Povezivanje s računima korisnika na drugim servisima. Vaša aplikacija treba čitati korisnikov kalendar, objavljivati na njegov društveni račun, dohvaćati datoteke iz njegova oblaka ili sinkronizirati računovodstvene podatke.
U oba slučaja AI alat može napisati kod, ali neke korake možete odraditi samo vi: izraditi razvojnu aplikaciju kod davatelja, dobiti client ID i client secret, registrirati povratne URL-ove i, za neka dopuštenja, proći davateljev pregled. Razumijevanje OAuth-a čini te korake i pogreške koje proizvode manje tajanstvenima. Za širu sliku prijave pogledajte što je autentifikacija.
Svakodnevna analogija
Razmislite o kartici za hotelsku sobu. Pri prijavi recepcija potvrdi tko ste, zatim vam da karticu koja otvara vašu sobu i teretanu, ali ne i druge sobe ni prostore za osoblje, i prestaje raditi pri odjavi. Kartica ne sadrži vašu putovnicu. Ako je izgubite, recepcija je poništi i izda novu.
- Recepcija je server za autorizaciju (stranica za prijavu Googlea).
- Provjera vašeg identiteta je vaša prijava na Googleu.
- Kartica je access token.
- „Samo soba i teretana” su opsezi (scopes) koje ste odobrili.
- Odjava je istek tokena ili vaše opozivanje pristupa.
Aplikacija koju koristite nikad ne vidi vašu lozinku za Google, samo karticu.
Kako OAuth radi, korak po korak
Najčešći tok za web aplikacije je tok s autorizacijskim kodom. Evo što se događa kad korisnik poveže svoj Google kalendar s aplikacijom za zakazivanje:
- Klik. Korisnik klikne „Poveži Google kalendar”.
- Preusmjeravanje na davatelja. Aplikacija šalje preglednik na Google s client ID-jem, opsezima koje želi (čitanje događaja u kalendaru) i redirect URI-jem na koji Google treba vratiti korisnika.
- Prijava i pristanak. Korisnik se prijavljuje na Google (ako već nije) i vidi ekran pristanka s popisom traženih opsega. Klikne Allow.
- Povratak s kodom. Google preusmjerava preglednik na redirect URI aplikacije s kratkotrajnim, jednokratnim autorizacijskim kodom.
- Razmjena na serveru. Serverska strana aplikacije šalje taj kod, zajedno s klijentskom tajnom, izravno Googleu i prima access token (i često refresh token).
- Korištenje API-ja. Server poziva API Google kalendara s access tokenom i dohvaća događaje korisnika.
Povratni poziv u koraku 4 izgleda otprilike ovako:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
A odgovor s tokenom u koraku 5 je JSON poput ovoga:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
Važna točka dizajna: razmjena tokena odvija se između servera, pa klijentska tajna i tokeni nikad ne moraju proći kroz preglednik.
OAuth vs OpenID Connect vs vlastita prijava
| Na što odgovara | Primjer | |
|---|---|---|
| OAuth 2.0 | „Što ova aplikacija smije raditi u ime korisnika?” (autorizacija) | Čitanje korisnikova kalendara |
| OpenID Connect (OIDC) | „Tko je ovaj korisnik?” (autentifikacija), izgrađen na OAuth-u | „Prijava putem Googlea” vraća potvrđenu e-adresu |
| Vlastita prijava | „Je li ovo ispravna lozinka za ovaj račun?” | E-adresa i lozinka pohranjene (hashirane) u vašoj bazi |
Mnoge aplikacije kombiniraju ih: prijava e-adresom i lozinkom, plus „Prijava putem Googlea” preko OIDC-a, plus zasebne OAuth veze s drugim servisima.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Davatelj / server za autorizaciju | Servis na kojem se korisnik prijavljuje i odobrava pristup, poput Googlea, Microsofta ili GitHuba. |
| Klijent | Vaša aplikacija, registrirana kod davatelja. |
| Client ID | Javni identifikator vaše aplikacije kod davatelja. |
| Client secret | Privatna „lozinka” vaše aplikacije kod davatelja. Samo na serveru. |
| Opseg (scope) | Specifično dopuštenje, poput „čitanje kalendara” ili „vidi adresu e-pošte”. |
| Ekran pristanka | Stranica na kojoj korisnik vidi i odobrava tražene opsege. |
| Redirect URI / povratni URL | Mjesto na koje davatelj vraća korisnika. Mora biti unaprijed registriran i točno se podudarati. |
| Access token | Kratkotrajna vjerodajnica za pozivanje API-ja. |
| Refresh token | Dugotrajnija vjerodajnica za dobivanje novih access tokena. Čuvajte je kao lozinku. |
| ID token | U OIDC-u potpisani token koji opisuje tko je korisnik. |
| PKCE | Dodatna provjera („dokaz ključa”) koja sprječava korištenje presretnutih kodova. Preporučuje se za sve klijente. |
| state | Nasumična vrijednost koja štiti tok od lažnih zahtjeva. |
Česte zablude
- „OAuth je sustav prijave.” Sam OAuth dodjeljuje pristup; OpenID Connect rješava identitet. Korištenje golog access tokena kao dokaza tko je netko uzrokovalo je stvarne sigurnosne probleme.
- „Aplikacija dobiva moju lozinku.” Nikad. U tome je cijela poanta.
- „Traženje više opsega je bezopasno.” Korisnici su oprezniji pred širokim zahtjevima, a davatelji poput Googlea mogu zahtijevati pregled aplikacije za osjetljive ili ograničene opsege. Tražite samo ono što vam treba.
- „Klijentska tajna može ići u frontend.” Sve što je u kodu preglednika je javno. Držite je u tajnama na serveru.
- „Radi u testiranju, radit će i u produkciji.” Davatelji često ograničavaju neprovjerene aplikacije, na primjer na popis testnih korisnika, a povratni URL za vašu stvarnu domenu mora se registrirati zasebno.
- „Tokeni traju zauvijek.” Access tokeni brzo isteknu, a korisnici mogu opozvati pristup. Vaša aplikacija mora to podnijeti.
Što tražiti od AI alata za izradu
- „Dodaj ‘Prijava putem Googlea’ koristeći OpenID Connect s dobro održavanom bibliotekom za autentifikaciju, nemoj sam pisati OAuth tok.”
- „Koristi tok s autorizacijskim kodom s PKCE-om i provjeri parametar
state.” - „Čitaj client ID i client secret iz varijabli okruženja na serveru.”
- „Traži samo opsege koji su nam potrebni: samo čitanje kalendara.”
- „Reci mi svaki povratni URL koji moram registrirati u konzoli davatelja, za pregled, objavljeni URL i moju prilagođenu domenu.”
- „Pohranjuj refresh tokene šifrirano u bazi i kad je token istekao ili opozvan, traži od korisnika da se ponovno poveže.”
- „Neka korisnici mogu prekinuti integraciju na stranici svojih postavki.”
OAuth i Mythex
Mythex nema ugrađenu prijavu krajnjih korisnika za aplikacije koje gradite; dokumentacija opisuje pristup „donesi svoj”: odabirete biblioteku za autentifikaciju ili hostirani servis, spremate njegove ključeve kao tajne projekta, a agent piše kod. Recept dodavanje autentifikacije ima početni upit za to. S OAuth-om ćete se susresti i u samom Mythexu: možete se prijaviti s Googleom, povezivanje GitHuba za sinkronizaciju repozitorija koristi GitHub OAuth, a AI klijenti koji se spajaju na Mythex preko MCP-a prolaze kroz stranicu za pristanak OAuth-a. Za više pogledajte što je autentifikacija i što je dvofaktorska autentifikacija.
Pitanja
Što je OAuth, jednostavno rečeno?
OAuth je standardan način da korisnik dopusti jednoj aplikaciji ograničen pristup svom računu na drugom servisu, primjerice da aplikacija za zakazivanje čita njegov Google kalendar, bez predaje lozinke. Korisnik odobrava određena dopuštenja, a aplikacija dobiva token koji smije koristiti samo za njih.
Je li OAuth isto što i „Prijava putem Googlea”?
„Prijava putem Googlea” izgrađena je na OAuth 2.0 i OpenID Connectu, sloju iznad OAuth-a koji dodaje standardan način da aplikacija sazna tko je korisnik. Sam OAuth služi za dodjelu pristupa; OpenID Connect ga pretvara u prijavu.
Što je OAuth access token?
Access token je vjerodajnica koju aplikacija šalje API-ju servisa kako bi dokazala da joj je dodijeljen pristup. Obično je kratkotrajan i ograničen na dopuštenja (opsege) koja je korisnik odobrio. Refresh token, ako je izdan, omogućuje aplikaciji da dobije nove access tokene bez ponovnog pitanja korisnika.
Što znači redirect_uri_mismatch?
Znači da se povratni URL koji je vaša aplikacija poslala tijekom prijave ne podudara točno s onim registriranim u razvojnoj konzoli davatelja. Dodajte točan URL, uključujući https, domenu, putanju i eventualnu kosu crtu na kraju, za svaku adresu na kojoj vaša aplikacija radi.
Je li OAuth siguran?
OAuth 2.0 je široko korišten i siguran kad se pravilno implementira: koristi se tok s autorizacijskim kodom s PKCE-om, točni povratni URL-ovi, parametar state, a klijentska tajna i tokeni drže se na serveru. Većina problema dolazi od prečaca u implementaciji, zato se preporučuje dobro održavana biblioteka.