Šta je OAuth? „Prijavi se preko Google-a“ i delegirani pristup
OAuth je otvoreni standard koji korisniku omogućava da jednoj aplikaciji dâ ograničen pristup svom nalogu na drugoj usluzi, 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 samo za ono što ste odobrili, i to možete da opozovete u bilo kom trenutku. Ista mehanika, uz dodatni sloj pod nazivom OpenID Connect, pokreće „Prijavi se preko Google-a“ i slična dugmad.
Zašto je OAuth važan kada pravite aplikacije uz AI
OAuth se javlja u dve česte situacije kada pravite aplikaciju:
- Društvena prijava. Želite da se korisnici prijavljuju preko Google-a (ili Apple-a, Microsoft-a, GitHub-a) umesto da prave još jednu lozinku. Pogledajte kako dodati prijavu u aplikaciju.
- Povezivanje sa nalozima korisnika na drugim uslugama. Vaša aplikacija treba da čita kalendar korisnika, objavljuje na njegovom društvenom nalogu, preuzima fajlove iz njegovog cloud diska ili sinhronizuje podatke računovodstva.
U oba slučaja AI alat može da napiše kod, ali neke korake može da uradi samo vi: pravljenje aplikacije za developere kod provajdera, dobijanje client ID-a i client secret-a, registrovanje povratnih adresa i, za neke dozvole, prolazak kroz proveru provajdera. Kada razumete 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. Pri prijavi, recepcija potvrdi ko ste, a zatim vam daje karticu koja otvara vašu sobu i teretanu, a ne druge sobe ni prostorije za osoblje, i prestaje da radi pri odjavi. Kartica ne sadrži vaš pasoš. Ako je izgubite, recepcija je poništava i izdaje novu.
- Recepcija je server za autorizaciju (Google-ova stranica za prijavu).
- Provera vašeg identiteta je vaša prijava na Google.
- Kartica za sobu je access token.
- „Samo soba i teretana“ su opsezi (scopes) koje ste odobrili.
- Odjava je isticanje tokena ili opoziv pristupa od vaše strane.
Aplikacija koju koristite nikada ne vidi vašu Google lozinku, samo karticu.
Kako OAuth radi, korak po korak
Najčešći tok za veb aplikacije je authorization code flow. Evo šta se dešava kada korisnik poveže svoj Google kalendar sa aplikacijom za zakazivanje:
- Klik. Korisnik klikne „Poveži Google kalendar“.
- Preusmeravanje ka provajderu. Aplikacija šalje pregledač na Google sa svojim client ID-jem, opsezima koje traži (čitanje događaja iz kalendara) i redirect URI-jem, adresom na koju Google treba da vrati korisnika.
- Prijava i saglasnost. Korisnik se prijavljuje na Google (ako već nije) i vidi ekran saglasnosti sa spiskom onoga što aplikacija traži. Klikne Dozvoli.
- Povratak sa kodom. Google preusmerava pregledač na redirect URI aplikacije, uz kratkotrajni, jednokratni authorization code.
- Razmena na serveru. Serverska strana aplikacije šalje taj kod, zajedno sa client secret-om, direktno Google-u i dobija access token (i često refresh token).
- Korišćenje API-ja. Server poziva Google Calendar API sa access tokenom i dobija događaje korisnika.
Povratni poziv u koraku 4 izgleda otprilike ovako:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
A odgovor sa tokenom u koraku 5 je JSON ovakav:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
Važna odluka u dizajnu: razmena tokena se odvija između servera, pa client secret i tokeni nikada ne moraju da prolaze kroz pregledač.
OAuth vs OpenID Connect vs vaša sopstvena prijava
| Na šta odgovara | Primer | |
|---|---|---|
| OAuth 2.0 | „Šta ova aplikacija sme da radi u ime korisnika?“ (autorizacija) | Čitanje korisničkog kalendara |
| OpenID Connect (OIDC) | „Ko je ovaj korisnik?“ (autentifikacija), zasnovano na OAuth-u | „Prijavi se preko Google-a“ vraća proverenu mejl adresu |
| Vaša sopstvena prijava | „Da li je ovo tačna lozinka za ovaj nalog?“ | Mejl i lozinka sačuvani (heširani) u vašoj bazi |
Mnoge aplikacije kombinuju ih: prijava mejlom i lozinkom, plus „Prijavi se preko Google-a“ preko OIDC-a, plus posebne OAuth veze sa drugim uslugama.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Provajder / server za autorizaciju | Usluga na kojoj se korisnik prijavljuje i odobrava pristup, na primer Google, Microsoft ili 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) | Određena dozvola, poput „čitanje kalendara“ ili „pregled mejl adrese“. |
| Ekran saglasnosti | Stranica na kojoj korisnik vidi i odobrava tražene opsege. |
| Redirect URI / povratna adresa | Gde provajder vraća korisnika. Mora biti unapred registrovana i tačno se poklapati. |
| Access token | Kratkotrajni kredencijal za pozivanje API-ja. |
| Refresh token | Dugotrajniji kredencijal za dobijanje novih access tokena. Čuvajte ga kao lozinku. |
| ID token | U OIDC-u, potpisan token koji opisuje ko je korisnik. |
| PKCE | Dodatna provera („proof key“) koja sprečava zloupotrebu presretnutog koda. Preporučuje se za sve klijente. |
| state | Nasumična vrednost koja štiti tok od lažnih zahteva. |
Česte zablude
- „OAuth je sistem za prijavu.“ Običan OAuth odobrava pristup; identitetom se bavi OpenID Connect. Korišćenje samog access tokena kao dokaza ko je neko izazvalo je stvarne bezbednosne greške.
- „Aplikacija dobija moju lozinku.“ Nikada. U tome je poenta.
- „Traženje više opsega je bezopasno.“ Korisnici su oprezniji prema širokim zahtevima, a provajderi poput Google-a mogu da traže pregled aplikacije za osetljive ili ograničene opsege. Tražite samo ono što vam treba.
- „Client secret može da ide u frontend.“ Sve što je u kodu pregledača je javno. Čuvajte ga među tajnama na serveru.
- „Radi u testiranju, radiće i u produkciji.“ Provajderi često ograničavaju neverifikovane aplikacije, na primer na navedene test korisnike, a povratnu adresu za vaš živi domen morate registrovati zasebno.
- „Tokeni traju zauvek.“ Access tokeni brzo ističu, a korisnici mogu da opozovu pristup. Vaša aplikacija mora to da podnese bez problema.
Šta tražiti od AI alata za aplikacije
- „Dodaj ‚Prijavi se preko Google-a‘ koristeći OpenID Connect sa dobro održavanom bibliotekom za autentifikaciju, ne pišemo OAuth tok ručno.“
- „Koristi authorization code tok sa PKCE-om i proveri parametar
state.“ - „Čitaj client ID i client secret iz promenljivih okruženja na serveru.“
- „Traži samo opsege koji su nam potrebni: samo čitanje kalendara.“
- „Reci mi koje sve povratne adrese treba da registrujem u konzoli provajdera, za pregled, objavljeni URL i moj prilagođeni domen.“
- „Čuvaj refresh tokene šifrovane u bazi, a istekle ili opozvane tokene obradi tako što ćeš tražiti od korisnika da ponovo poveže nalog.“
- „Neka korisnici mogu da prekinu vezu sa integracijom sa stranice podešavanja.“
OAuth i Mythex
Mythex nema ugrađenu prijavu za krajnje korisnike aplikacija koje pravite; dokumentacija opisuje pristup „donesi sopstveno“: birate biblioteku za autentifikaciju ili hostovanog provajdera, njegove ključeve čuvate kao tajne projekta, a agent piše kod. Recept za dodavanje autentifikacije ima početni prompt za to. OAuth ćete sresti i u samom Mythex-u: možete se prijaviti preko Google-a, povezivanje GitHub-a za sinhronizaciju repozitorijuma koristi GitHub OAuth, a AI klijenti koji se povezuju sa Mythex-om preko MCP-a prolaze kroz stranicu za saglasnost. Za više pogledajte šta je autentifikacija i šta je dvofaktorska autentifikacija.
Pitanja
Šta je OAuth jednostavnim rečima?
OAuth je standardan način da korisnik dozvoli jednoj aplikaciji da pristupi njegovom nalogu na drugoj usluzi, kao kada aplikacija za zakazivanje čita njegov Google kalendar, bez davanja lozinke. Korisnik odobrava određene dozvole, a aplikacija dobija token koji može da koristi samo za njih.
Da li je OAuth isto što i „Prijavi se preko Google-a“?
„Prijavi se preko Google-a“ je zasnovano na OAuth 2.0 i OpenID Connect-u, sloju iznad OAuth-a koji dodaje standardan način da se kaže ko je korisnik. Sam OAuth služi za odobravanje pristupa; OpenID Connect ga pretvara u prijavu.
Šta je OAuth access token?
Access token je kredencijal koji aplikacija šalje API-ju usluge kako bi dokazala da je dobila pristup. Obično kratko važi i ograničen je 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 povratna adresa koju je vaša aplikacija poslala tokom prijave ne poklapa tačno sa jednom registrovanom u konzoli za programere provajdera. Dodajte tačnu adresu, uključujući https, domen, putanju i eventualnu završnu kosu crtu, za svaku adresu na kojoj aplikacija radi.
Da li je OAuth bezbedan?
OAuth 2.0 je široko korišćen i bezbedan kada se pravilno implementira: koristi se authorization code tok sa PKCE-om, tačne povratne adrese, parametar state, a client secret i tokeni ostaju na serveru. Većina problema nastaje zbog prečica u implementaciji, zato se preporučuje dobro održavana biblioteka.