Šta je OAuth? „Prijava preko Googlea” i delegirani pristup objašnjeni
OAuth je otvoreni standard koji korisniku omogućava da jednoj aplikaciji da ograničen pristup svom nalogu na drugom servisu, bez predaje lozinke. Kada kliknete „Poveži Google kalendar” i vidite ekran koji pita „Dozvoliti ovoj aplikaciji da vidi vaše događaje?”, to je OAuth. Aplikacija dobija token za tačno ono što ste odobrili, a to možete opozvati u bilo kom trenutku. Ista mehanika, uz dodatni sloj zvan OpenID Connect, pokreće „Prijavu preko Googlea” i slična dugmad.
Zašto je OAuth važan kada gradite uz AI
OAuth se pojavljuje u dvije uobičajene situacije kada pravite aplikaciju:
- Društvena prijava. Želite da se vaši korisnici „Prijave preko Googlea” (ili Applea, Microsofta, GitHuba) umjesto da prave novu lozinku. Pogledajte kako dodati prijavu u aplikaciju.
- Povezivanje s nalozima korisnika na drugim servisima. Vaša aplikacija treba čitati kalendar korisnika, objavljivati na njegov društveni nalog, preuzimati fajlove s njegovog cloud diska ili sinhronizovati podatke iz računovodstva.
U oba slučaja AI graditelj može napisati kod, ali neke korake može uraditi samo vi: napraviti razvojnu aplikaciju kod provajdera, dobiti client ID i client secret, registrovati callback URL-ove i, za neke dozvole, proći provajderov pregled. Kada znate kako OAuth radi, ti koraci — i greške koje proizvode — postaju mnogo manje tajanstveni. Za širu sliku prijave pogledajte šta je autentifikacija.
Svakodnevna analogija
Razmislite o kartici za sobu u hotelu. Na prijavi recepcija potvrdi ko ste, zatim vam da karticu koja otvara vašu sobu i teretanu — ne druge sobe, ne prostorije za osoblje — i prestaje da radi na odjavi. Kartica ne sadrži vaš pasoš. Ako je izgubite, recepcija je poništi i izda novu.
- Recepcija je autorizacioni server (Googleova stranica za prijavu).
- Provjera vašeg identiteta je vaša prijava na Google.
- Kartica je access token.
- „Samo soba i teretana” su opsezi koje ste odobrili.
- Odjava je istek tokena ili vaše opozivanje pristupa.
Aplikacija koju koristite nikada ne vidi vašu Google lozinku, samo karticu.
Kako OAuth radi, korak po korak
Najčešći tok za web aplikacije je authorization code tok. Evo šta se dešava kada korisnik poveže svoj Google kalendar s aplikacijom za zakazivanje:
- Klik. Korisnik klikne „Poveži Google kalendar.”
- Preusmjeravanje provajderu. Aplikacija šalje pretraživač na Google s njenim client ID-jem, opsezima koje traži (čitanje događaja iz kalendara) i redirect URI-jem na koji Google treba da vrati korisnika.
- Prijava i saglasnost. Korisnik se prijavljuje na Google (ako već nije) i vidi ekran saglasnosti s popisom onoga što aplikacija traži. Klikne Allow.
- Nazad s kodom. Google preusmjerava pretraživač na redirect URI aplikacije s kratkim, jednokratnim authorization code.
- Razmjena na serveru. Serverska aplikacija šalje taj kod, zajedno s client secretom, direktno Googleu i dobija access token (i često refresh token).
- Korištenje API-ja. Server zove Google Calendar API s access tokenom i dobija događaje korisnika.
Callback 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 tačka dizajna: razmjena tokena se odvija između servera, pa client secret i tokeni nikada ne moraju prolaziti kroz pretraživač.
OAuth naspram OpenID Connecta naspram vaše prijave
| Na šta odgovara | Primjer | |
|---|---|---|
| OAuth 2.0 | „Šta ova aplikacija smije raditi u ime korisnika?” (autorizacija) | Čitanje korisnikovog kalendara |
| OpenID Connect (OIDC) | „Ko je ovaj korisnik?” (autentifikacija), izgrađen na OAuth-u | „Prijava preko Googlea” koja vraća potvrđenu e-poštu |
| Vaša sopstvena prijava | „Je li ovo tačna lozinka za ovaj nalog?” | E-pošta i lozinka (heširana) sačuvane u vašoj bazi |
Mnoge aplikacije kombinuju ove načine: prijava e-poštom i lozinkom, plus „Prijava preko Googlea” putem OIDC-a, plus zasebne OAuth veze s drugim servisima.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Provajder / autorizacioni server | Servis na kojem se korisnik prijavljuje i daje pristup — Google, Microsoft, GitHub. |
| Klijent | Vaša aplikacija, registrovana kod provajdera. |
| Client ID | Javni identifikator vaše aplikacije kod provajdera. |
| Client secret | Privatna lozinka vaše aplikacije kod provajdera. Samo na serveru. |
| Opseg (scope) | Konkretna dozvola, poput „čitanje kalendara” ili „pregled adrese e-pošte”. |
| Ekran saglasnosti | Stranica na kojoj korisnik vidi i odobrava tražene opsege. |
| Redirect URI / callback URL | Mjesto na koje provajder vraća korisnika. Mora biti unaprijed registrovan i tačno se poklapati. |
| Access token | Kratkotrajna vjerodajnica za pozivanje API-ja. |
| Refresh token | Dugotrajnija vjerodajnica za dobijanje novih access tokena. Čuvajte ga kao lozinku. |
| ID token | U OIDC-u, potpisani token koji opisuje ko je korisnik. |
| PKCE | Dodatna provjera („proof key”) koja sprječava da presretnuti kod bude iskorišten. Preporučuje se za sve klijente. |
| state | Nasumična vrijednost koja štiti tok od lažnih zahtjeva. |
Česte zablude
- „OAuth je sistem za prijavu.” Običan OAuth dodjeljuje pristup; OpenID Connect se bavi identitetom. Korištenje golog access tokena kao dokaza ko je neko dovelo je do stvarnih sigurnosnih grešaka.
- „Aplikacija dobija moju lozinku.” Nikada. U tome je poenta.
- „Traženje više opsega je bezopasno.” Korisnici su oprezniji prema širokim zahtjevima, a provajderi poput Googlea mogu zahtijevati pregled aplikacije za osjetljive ili ograničene opsege. Tražite samo ono što vam treba.
- „Client secret može ići u frontend.” Sve u kodu pretraživača je javno. Čuvajte ga u tajnama na serveru.
- „Radi u testiranju, pa će raditi i u produkciji.” Provajderi često ograničavaju neverifikovane aplikacije — na primjer, na navedene test korisnike — a redirect URI za vašu live domenu mora se registrovati zasebno.
- „Tokeni traju zauvijek.” Access tokeni brzo isteknu, a korisnici mogu opozvati pristup. Vaša aplikacija mora dobro obraditi oboje.
Šta pitati AI graditelja
- „Dodaj ‘Prijava preko Googlea’ koristeći OpenID Connect s dobro održavanom bibliotekom za autentifikaciju — nemoj ručno pisati OAuth tok.”
- „Koristi authorization code tok s PKCE-om i provjeri
stateparametar.” - „Čitaj client ID i client secret iz varijabli okruženja na serveru.”
- „Traži samo opsege koji su nam potrebni: pristup kalendaru samo za čitanje.”
- „Reci mi svaku redirect URL adresu koju treba registrovati u konzoli provajdera: za pregled, objavljenu adresu i moju prilagođenu domenu.”
- „Čuvaj refresh tokene šifrovane u bazi i obradi istekle ili opozvane tokene tako da korisnik ponovo poveže nalog.”
- „Neka korisnici mogu prekinuti integraciju na stranici svojih postavki.”
OAuth i Mythex
Mythex nema ugrađenu prijavu za krajnje korisnike aplikacija koje pravite; njegova dokumentacija opisuje pristup „donesite svoje” — birate biblioteku za autentifikaciju ili hostovanog provajdera, čuvate njene ključeve kao tajne projekta, a agent piše kod. Recept za dodavanje autentifikacije ima početni upit za to. OAuth ćete sresti i u samom Mythexu: možete se prijaviti s Google nalogom, povezivanje GitHuba za sinhronizaciju repozitorija koristi GitHub OAuth, a AI klijenti koji se povezuju na Mythex preko MCP-a prolaze kroz stranicu za saglasnost OAuth-a. Za više pogledajte šta je autentifikacija i šta je dvofaktorska autentifikacija.
Pitanja
Šta je OAuth jednostavnim riječima?
OAuth je standardan način da korisnik dozvoli jednoj aplikaciji pristup svom nalogu na drugom servisu — kao kada aplikacija za zakazivanje čita njegov Google kalendar — bez davanja lozinke toj aplikaciji. Korisnik odobri određene dozvole, a aplikacija dobija token koji može koristiti samo za njih.
Je li OAuth isto što i „Prijava preko Googlea”?
„Prijava preko Googlea” je zasnovana na OAuth 2.0 i OpenID Connectu, sloju iznad OAuth-a koji dodaje standardan način da aplikacija sazna ko je korisnik. Sam OAuth služi za dodjelu pristupa; OpenID Connect je ono što ga pretvara u prijavu.
Šta 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 dozvole (opsege) koje je korisnik odobrio. Refresh token, ako je izdat, omogućava aplikaciji da dobije nove access tokene bez ponovnog pitanja korisnika.
Šta znači redirect_uri_mismatch?
Znači da se callback URL koji je vaša aplikacija poslala tokom prijave ne poklapa tačno s onim registrovanim u konzoli za programere provajdera. Dodajte tač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 kada se pravilno implementira: koristi se authorization code tok s PKCE-om, tačne URL adrese za preusmjeravanje, state parametar, a klijentska tajna i tokeni čuvaju se na serveru. Većina problema dolazi od prečica pri implementaciji, zato se preporučuje korištenje dobro održavane biblioteke.