Hvað er OAuth? „Sign in with Google“ og framseldur aðgangur útskýrt
OAuth er opinn staðall sem gerir notanda kleift að veita einu appi takmarkaðan aðgang að reikningi sínum hjá annarri þjónustu, án þess að afhenda lykilorðið sitt. Þegar þú smellir á „Connect Google Calendar“ og sérð skjá sem spyr „Leyfa þessu appi að sjá viðburði þína?“, þá er það OAuth. Appið fær auðkenni fyrir nákvæmlega það sem þú samþykktir, og þú getur afturkallað það hvenær sem er. Sama kerfi, með auka lagi sem heitir OpenID Connect, knýr „Sign in with Google“ og sambærilega hnappa.
Af hverju OAuth skiptir máli þegar þú smíðar með gervigreind
OAuth birtist í tveimur algengum aðstæðum þegar þú smíðar app:
- Félagsleg innskráning. Þú vilt að notendur þínir geti „Sign in with Google“ (eða Apple, Microsoft, GitHub) í stað þess að búa til enn eitt lykilorð. Sjá hvernig þú bætir innskráningu við appið þitt.
- Tenging við reikninga notenda hjá annarri þjónustu. Appið þitt þarf að lesa dagatal notanda, birta á samfélagsmiðlareikningi hans, sækja skrár úr skýjadrifi hans eða samstilla bókhaldsgögn hans.
Í báðum tilvikum getur AI-smiðurinn skrifað kóðann, en sum skref geta aðeins þú gert: búa til þróunarforrit hjá þjónustuaðilanum, fá client ID og client secret, skrá baksímtalsslóðir og, fyrir sumar heimildir, standast yfirferð þjónustuaðilans. Að vita hvernig OAuth virkar gerir þessi skref, og villurnar sem þau valda, minna dularfull. Fyrir stærri myndina af innskráningu, sjá hvað er auðkenning.
Hliðstæða úr daglegu lífi
Hugsaðu um herbergislykil á hóteli. Við innritun staðfestir móttakan hver þú ert og gefur þér kort sem opnar herbergið þitt og líkamsræktina, ekki hin herbergin, ekki starfsmannasvæðin, og hættir að virka við útskráningu. Kortið inniheldur ekki vegabréfið þitt. Ef þú týnir því lætur móttakan ógilda það og gefur þér nýtt.
- Móttakan er auðkenningarþjónninn (innskráningarsíða Google).
- Persónuskilríkjaathugunin er þú að skrá þig inn hjá Google.
- Herbergiskortið er aðgangsauðkennið.
- „Herbergið og líkamsræktin, ekkert annað“ eru heimildirnar (scopes) sem þú samþykktir.
- Útskráningin er þegar auðkennið rennur út, eða þú afturkallar aðganginn.
Appið sem þú notar sér aldrei Google-lykilorðið þitt, aðeins kortið.
Hvernig OAuth virkar, skref fyrir skref
Algengasta flæðið fyrir vefforrit er auðkenniskóðaflæðið (authorization code flow). Hér er það sem gerist þegar notandi tengir Google-dagatalið sitt við skipulagsapp:
- Smellur. Notandinn smellir á „Connect Google Calendar“.
- Endurbeint til þjónustuaðilans. Appið sendir vafrann til Google með client ID sínu, heimildunum sem það vill (lesa viðburði í dagatali) og endurbeiningarslóðinni (redirect URI) sem Google á að senda notandann aftur á.
- Innskráning og samþykki. Notandinn skráir sig inn hjá Google (ef hann er það ekki þegar) og sér samþykkisskjá þar sem fram kemur hvað appið biður um. Hann smellir á Allow.
- Til baka með kóða. Google beinir vafranum á endurbeiningarslóð appsins með stuttum, einnota auðkenniskóða (authorization code).
- Skiptist á kóða á þjóninum. Þjónn appsins sendir þann kóða, ásamt client secret, beint til Google og fær aðgangsauðkenni (access token) og oft endurnýjunarauðkenni (refresh token).
- Notar API-ið. Þjónninn kallar á Google Calendar API með aðgangsauðkenninu og fær viðburði notandans.
Baksímtalið í skrefi 4 lítur út eitthvað á þessa leið:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
Og auðkennissvarið í skrefi 5 er JSON á borð við:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
Mikilvægt hönnunaratriði: skiptin á auðkenninu fara fram þjónn-til-þjóns, þannig að biðlaraleyndarmálið og auðkennin þurfa aldrei að fara í gegnum vafrann.
OAuth vs OpenID Connect vs þín eigin innskráning
| Hvað það svarar | Dæmi | |
|---|---|---|
| OAuth 2.0 | „Hvað má þetta app gera fyrir hönd notandans?“ (heimild) | Lesa dagatal notanda |
| OpenID Connect (OIDC) | „Hver er þessi notandi?“ (auðkenning), byggt á OAuth | „Sign in with Google“ skilar staðfestu netfangi |
| Þín eigin innskráning | „Er þetta rétt lykilorð fyrir þennan reikning?“ | Netfang og lykilorð geymt (dulkóðað) í gagnagrunninum þínum |
Mörg öpp sameina þetta: innskráning með netfangi og lykilorði, auk „Sign in with Google“ í gegnum OIDC, auk aðskildra OAuth-tenginga við aðra þjónustu.
Lykilhugtök
| Hugtak | Merking |
|---|---|
| Þjónustuaðili / auðkenningarþjónn | Þjónustan sem notandinn skráir sig inn hjá og veitir aðgang í gegnum, til dæmis Google, Microsoft eða GitHub. |
| Biðlari (client) | Appið þitt, eins og það er skráð hjá þjónustuaðilanum. |
| Client ID | Opinbert auðkenni appsins þíns hjá þjónustuaðilanum. |
| Client secret | Einkalykilorð appsins þíns hjá þjónustuaðilanum. Aðeins á þjóni. |
| Scope (heimild) | Ákveðin heimild, eins og „lesa dagatal“ eða „sjá netfang“. |
| Samþykkisskjár | Síðan þar sem notandinn sér og samþykkir heimildirnar sem beðið er um. |
| Endurbeiningarslóð / baksímtalsslóð | Þangað sem þjónustuaðilinn sendir notandann aftur. Verður að vera skráð fyrirfram og passa nákvæmlega. |
| Aðgangsauðkenni (access token) | Skammlíft skilríki til að kalla á API. |
| Endurnýjunarauðkenni (refresh token) | Langlíft skilríki til að fá ný aðgangsauðkenni. Geymdu það eins og lykilorð. |
| ID token | Í OIDC, undirritað auðkenni sem lýsir því hver notandinn er. |
| PKCE | Auka athugun („proof key“) sem kemur í veg fyrir að stolnir kóðar séu notaðir. Mælt með fyrir alla biðlara. |
| state | Slembigildi sem verndar flæðið gegn fölsuðum beiðnum. |
Algengar ranghugmyndir
- „OAuth er innskráningarkerfi.“ Venjulegt OAuth veitir aðgang; OpenID Connect sér um auðkenni. Að nota bert aðgangsauðkenni sem sönnun um hver einhver er hefur valdið raunverulegum öryggisgöllum.
- „Appið fær lykilorðið mitt.“ Það gerir það aldrei. Það er tilgangurinn.
- „Það er skaðlaust að biðja um fleiri heimildir.“ Notendur eru tortryggnari gagnvart víðtækum beiðnum, og þjónustuaðilar eins og Google geta krafist yfirferðar appsins fyrir viðkvæmar eða takmarkaðar heimildir. Biddu aðeins um það sem þú þarft.
- „Biðlaraleyndarmálið má fara í framendann.“ Allt í kóða vafrans er opinbert. Haltu því í leyndarmálum á þjóni.
- „Ef þetta virkar í prófun virkar það í framleiðslu.“ Þjónustuaðilar takmarka oft óstaðfest öpp, til dæmis við skráða prófunarnotendur, og endurbeiningarslóðin fyrir lifandi lénið þitt þarf að vera skráð sérstaklega.
- „Auðkenni endast að eilífu.“ Aðgangsauðkenni renna hratt út, og notendur geta afturkallað aðgang. Appið þitt þarf að takast á við bæði.
Hvað á að biðja AI-smiðinn um
- „Bættu við „Sign in with Google“ með OpenID Connect og vel viðhaldnu auðkenningarbókasafni. Ekki útfæra OAuth-flæðið sjálf/ur.“
- „Notaðu auðkenniskóðaflæðið með PKCE og athugaðu
state-breytuna.“ - „Lestu client ID og client secret úr umhverfisbreytum á þjóninum.“
- „Biddu aðeins um þær heimildir sem við þurfum: aðeins lesaðgang að dagatali.“
- „Segðu mér hvaða endurbeiningarslóðir ég þarf að skrá í stjórnborði þjónustuaðilans: fyrir forskoðunina, birtu slóðina og sérlénið mitt.“
- „Geymdu endurnýjunarauðkenni dulkóðuð í gagnagrunninum og meðhöndlaðu útrunnin eða afturkölluð auðkenni með því að biðja notandann að tengjast aftur.“
- „Leyfðu notendum að aftengja samþættinguna á stillingasíðunni sinni.“
OAuth og Mythex
Mythex er ekki með innbyggða innskráningu fyrir endanotendur í þeim öppum sem þú smíðar; skjöl þess lýsa nálgun þar sem þú kemur með þína eigin: þú velur auðkenningarbókasafn eða hýsta þjónustu, geymir lyklana sem verkefnaleyndarmál, og umboðsmaðurinn skrifar kóðann. Uppskriftin um að bæta við auðkenningu hefur upphafsbeiðni í þetta. Þú rekst líka á OAuth í Mythex sjálfu: þú getur skráð þig inn með Google, tenging við GitHub fyrir samstillingu geymslu notar GitHub OAuth, og gervigreindarforrit sem tengjast Mythex um MCP fara í gegnum samþykkisskjá OAuth. Fyrir frekari upplýsingar, sjá hvað er auðkenning og hvað er tveggja þátta auðkenning.
Spurningar
Hvað er OAuth í einföldu máli?
OAuth er staðlaður máti fyrir notanda til að leyfa einu appi að fá takmarkaðan aðgang að reikningi sínum hjá annarri þjónustu, eins og þegar skipulagsapp fær að lesa Google-dagatalið hans, án þess að gefa því lykilorðið. Notandinn samþykkir tilteknar heimildir og appið fær auðkenni (token) sem það getur notað fyrir þær einar.
Er OAuth það sama og „Sign in with Google“?
„Sign in with Google“ byggir á OAuth 2.0 auk OpenID Connect, lags ofan á OAuth sem bætir við staðlaðri leið til að segja appinu hver notandinn er. OAuth eitt og sér snýst um að veita aðgang; OpenID Connect er það sem gerir úr því innskráningu.
Hvað er OAuth-aðgangsauðkenni?
Aðgangsauðkenni er skilríki sem appið sendir á API þjónustu til að sanna að það hafi fengið aðgang. Það er yfirleitt skammlíft og takmarkað við þær heimildir (scopes) sem notandinn samþykkti. Endurnýjunarauðkenni (refresh token), ef það er gefið út, gerir appinu kleift að fá ný aðgangsauðkenni án þess að spyrja notandann aftur.
Hvað þýðir redirect_uri_mismatch?
Það þýðir að slóðin sem appið þitt sendi sem baksímtalsslóð í innskráningunni passar ekki nákvæmlega við slóð sem er skráð í þróunarvettvangi þjónustuaðilans. Bættu við nákvæmlega slóðinni, þar með talið https, léninu, slóðinni og hvort skástrik er í lokin, fyrir hvert heimilisfang sem appið þitt keyrir á.
Er OAuth öruggt?
OAuth 2.0 er mikið notað og öruggt þegar það er útfært rétt: með auðkenniskóðaflæði (authorization code flow) og PKCE, nákvæmum endurbeiningarslóðum, state-breytu, og með því að halda biðlaraleyndarmálinu og auðkenninu á þjóninum. Flest vandamál koma af flýtileiðum í útfærslu, þess vegna er mælt með vel viðhaldnu bókasafni.