Kaj je OAuth? »Prijava z Googlom« in posredovan dostop, razloženo
OAuth je odprt standard, ki uporabniku omogoča, da eni aplikaciji dovoli omejen dostop do njegovega računa pri drugi storitvi, ne da bi ji izročil geslo. Ko kliknete »Poveži Google koledar« in se prikaže zaslon z vprašanjem »Ali naj ta aplikacija vidi vaše dogodke?«, gre za OAuth. Aplikacija dobi žeton točno za to, kar ste odobrili, in ga lahko kadarkoli prekličete. Isti mehanizem, z dodatno plastjo OpenID Connect, poganja »Prijavi se z Googlom« in podobne gumbe.
Zakaj je OAuth pomemben pri gradnji z AI
OAuth se pri gradnji aplikacije pojavi v dveh pogostih primerih:
- Družbena prijava. Želite, da se uporabniki prijavijo z »Google« (ali Apple, Microsoft, GitHub) namesto da ustvarijo še eno geslo. Glejte kako dodati prijavo v svojo aplikacijo.
- Povezovanje z računi uporabnikov pri drugih storitvah. Vaša aplikacija mora brati koledar uporabnika, objavljati na njegovem družbenem računu, prenašati datoteke iz oblaka ali sinhronizirati podatke računovodstva.
V obeh primerih lahko kodo napiše vaš graditelj z AI, nekatere korake pa lahko opravite samo vi: ustvarite razvijalsko aplikacijo pri ponudniku, pridobite ID odjemalca in skrivnost odjemalca, registrirate povratne URL-je in pri nekaterih dovoljenjih opravite pregled ponudnika. Če razumete, kako deluje OAuth, so ti koraki — in napake, ki jih povzročajo — veliko manj skrivnostni. Za širšo sliko prijave glejte kaj je avtentikacija.
Vsakdanja primerjava
Pomislite na kartico za hotelsko sobo. Ob prijavi recepcija preveri, kdo ste, nato vam da kartico, ki odpre vašo sobo in fitnes, ne pa drugih sob ali delovnih prostorov osebja, in preneha delovati ob odjavi. Kartica ne vsebuje vašega potnega lista. Če jo izgubite, jo recepcija prekliče in izda novo.
- Recepcija je strežnik za avtorizacijo (stran za prijavo Googla).
- Preverjanje vaše osebne izkaznice je vaša prijava v Google.
- Kartica je žeton za dostop.
- »Samo soba in fitnes« so področja, ki ste jih odobrili.
- Odjava je iztek žetona ali vaš preklic dostopa.
Aplikacija, ki jo uporabljate, nikoli ne vidi vašega gesla za Google, vidi samo kartico.
Kako OAuth deluje, korak za korakom
Najpogostejši tok za spletne aplikacije je tok z avtorizacijsko kodo. Tako se zgodi, ko uporabnik poveže svoj Google koledar s storitvijo za razporejanje:
- Klik. Uporabnik klikne »Poveži Google koledar«.
- Preusmeritev k ponudniku. Aplikacija pošlje brskalnik na Google z ID-jem odjemalca, področji, ki jih želi (branje dogodkov v koledarju), in URI za preusmeritev, kamor naj Google vrne uporabnika.
- Prijava in soglasje. Uporabnik se prijavi v Google (če še ni) in vidi zaslon za soglasje s seznamom, kaj aplikacija zahteva. Klikne Dovoli.
- Nazaj s kodo. Google brskalnik preusmeri na URI za preusmeritev aplikacije z kratkotrajno, enkratno avtorizacijsko kodo.
- Zamenjava na strežniku. Strežnik aplikacije pošlje to kodo in svojo skrivnost odjemalca neposredno Googlu ter prejme žeton za dostop (in pogosto osveževalni žeton).
- Uporaba API-ja. Strežnik pokliče API Google koledarja z žetonom za dostop in pridobi uporabnikove dogodke.
Povratni klic v 4. koraku izgleda približno tako:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
Odgovor z žetonom v 5. koraku pa je JSON podobne oblike:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
Pomembna zasnovna točka: zamenjava žetona poteka med strežnikoma, zato skrivnost odjemalca in žetoni nikoli ne potrebujejo poti skozi brskalnik.
OAuth proti OpenID Connect proti lastni prijavi
| Na kaj odgovarja | Primer | |
|---|---|---|
| OAuth 2.0 | »Kaj sme ta aplikacija storiti v imenu uporabnika?« (avtorizacija) | Branje uporabnikovega koledarja |
| OpenID Connect (OIDC) | »Kdo je ta uporabnik?« (avtentikacija), zgrajen na OAuthu | »Prijava z Googlom«, ki vrne preverjen e-poštni naslov |
| Lastna prijava | »Ali je to pravo geslo za ta račun?« | E-poštni naslov in geslo, shranjeno (zgoščeno) v vaši bazi |
Mnoge aplikacije kombinirajo več načinov: prijava z e-poštnim naslovom in geslom, »Prijava z Googlom« prek OIDC-ja ter ločene OAuth povezave z drugimi storitvami.
Ključni pojmi
| Pojem | Pomen |
|---|---|
| Ponudnik / strežnik za avtorizacijo | Storitev, kjer se uporabnik prijavi in dodeli dostop — Google, Microsoft, GitHub. |
| Odjemalec | Vaša aplikacija, registrirana pri ponudniku. |
| ID odjemalca | Javni identifikator vaše aplikacije pri ponudniku. |
| Skrivnost odjemalca | Vaše zasebno geslo za aplikacijo pri ponudniku. Samo na strežniku. |
| Področje (scope) | Določeno dovoljenje, na primer »branje koledarja« ali »ogled e-poštnega naslova«. |
| Zaslon za soglasje | Stran, kjer uporabnik vidi in odobri zahtevana področja. |
| URI za preusmeritev / povratni URL | Kam ponudnik pošlje uporabnika nazaj. Mora biti vnaprej registriran in se natančno ujemati. |
| Žeton za dostop | Kratkotrajna poverilnica za klicanje API-ja. |
| Osveževalni žeton | Dolgotrajnejša poverilnica za pridobivanje novih žetonov za dostop. Hranite jo kot geslo. |
| ID žeton | V OIDC-ju podpisan žeton, ki opisuje, kdo je uporabnik. |
| PKCE | Dodatno preverjanje (»dokaz ključa«), ki prepreči, da bi prestrežene kode uporabili. Priporočeno za vse odjemalce. |
| state | Naključna vrednost, ki ščiti tok pred ponarejenimi zahtevki. |
Pogoste zmote
- »OAuth je sistem za prijavo.« Navaden OAuth dodeljuje dostop; OpenID Connect ureja identiteto. Uporaba golega žetona za dostop kot dokaza, kdo je nekdo, je že povzročila resnične varnostne napake.
- »Aplikacija dobi moje geslo.« Nikoli. To je bistvo.
- »Zahtevanje več področij je neškodljivo.« Uporabniki so previdnejši pri širokih zahtevah, ponudniki, kot je Google, pa lahko za občutljiva ali omejena področja zahtevajo pregled aplikacije. Zahtevajte samo to, kar potrebujete.
- »ID odjemalca lahko daš v frontend.« Vse v kodi brskalnika je javno. Skrivnost hranite med skrivnostmi na strežniku.
- »Deluje v testiranju, bo torej delovalo v produkciji.« Ponudniki pogosto omejijo neoverjene aplikacije — na primer na seznam testnih uporabnikov —, povratni URL za vašo živo domeno pa mora biti registriran ločeno.
- »Žetoni veljajo za vedno.« Žetoni za dostop hitro potečejo, uporabniki pa lahko dostop kadarkoli prekličejo. Vaša aplikacija mora obe stvari obvladati lepo.
Kaj zahtevati od svojega graditelja z AI
- »Dodaj »Prijava z Googlom« z uporabo OpenID Connect in dobro vzdrževane knjižnice za avtentikacijo — ne piši toka OAuth sam.«
- »Uporabi tok z avtorizacijsko kodo s PKCE in preveri parameter
state.« - »ID odjemalca in skrivnost odjemalca naj se berejo iz okoljskih spremenljivk na strežniku.«
- »Zahtevaj samo področja, ki jih potrebujemo: samo branje koledarja.«
- »Povej mi vse povratne URL-je, ki jih moram registrirati v konzoli ponudnika — za predogled, za objavljeni URL in za mojo domeno po meri.«
- »Osveževalne žetone shrani šifrirane v bazi podatkov, za žetone, ki so potekli ali bili preklicani, pa naj uporabnik ponovno poveže račun.«
- »Naj lahko uporabniki povezavo prekinejo v svoji nastavitveni strani.«
OAuth v Mythexu
Mythex nima vgrajene prijave za končne uporabnike aplikacij, ki jih gradite; njegova dokumentacija opisuje pristop »prinesi svojo« — izberete knjižnico za avtentikacijo ali gostiteljsko storitev, njene ključe shranite kot skrivnosti projekta, agent pa napiše kodo. Priročnik dodajanje avtentikacije ima začetni poziv za to. Z OAuthom se boste srečali tudi v samem Mythexu: prijavite se lahko z Googlom, povezava GitHuba za sinhronizacijo repozitorija uporablja OAuth GitHuba, AI odjemalci, ki se povezujejo z Mythexom prek MCP-ja, pa gredo skozi stran za soglasje OAuth. Za več glejte kaj je avtentikacija in kaj je dvostopenjska avtentikacija.
Vprašanja
Kaj je OAuth na preprost način?
OAuth je standardni način, da uporabnik ene aplikaciji dovoli dostop do svojega računa v drugi storitvi — na primer aplikaciji za razporejanje, da bere njegov Google koledar — brez, da ji izroči svoje geslo. Uporabnik odobri določena dovoljenja, aplikacija pa dobi žeton, ki ga lahko uporabi samo za te.
Ali je OAuth enak »Prijavi se z Googlom«?
»Prijava z Googlom« temelji na OAuth 2.0 in OpenID Connect, plasti nad OAuthom, ki doda standarden način, kako aplikaciji povedati, kdo je uporabnik. Sam OAuth gre za dodeljevanje dostopa; OpenID Connect pa to spremeni v prijavo.
Kaj je žeton za dostop OAuth?
Žeton za dostop je poverilnica, ki jo aplikacija pošlje API-ju storitve, da dokaže, da ji je bil dostop odobren. Ponavadi je kratkotrajen in omejen na dovoljenja (področja), ki jih je uporabnik odobril. Osveževalni žeton, če je izdan, aplikaciji omogoča pridobitev novih žetonov za dostop, ne da bi uporabnika spet vprašala.
Kaj pomeni redirect_uri_mismatch?
Pomeni, da se povratni URL, ki ga je vaša aplikacija poslala med prijavo, ne ujema natančno z enim, registriranim v razvijalski konzoli ponudnika. Dodajte točen URL — vključno s https, domeno, potjo in morebitno končno poševnico — za vsak naslov, na katerem teče vaša aplikacija.
Ali je OAuth varen?
OAuth 2.0 je zelo razširjen in varen, če je pravilno implementiran: uporablja tok z avtorizacijsko kodo s PKCE, natančne URL-je za preusmeritev, parameter state, skrivnost odjemalca in žetone pa hrani na strežniku. Večina težav izhaja iz bližnjic pri implementaciji, zato je priporočljiva dobro vzdrževana knjižnica.