Oppaat

Mitä on OAuth? "Kirjaudu Google-tilillä" ja valtuutettu käyttö selitettynä

OAuth on avoin standardi, jonka avulla käyttäjä antaa yhdelle sovellukselle rajoitetun pääsyn tiliinsä toisessa palvelussa antamatta salasanaansa. Kun napsautat "Yhdistä Google-kalenteri" ja näet ruudun, jossa kysytään "Saako tämä sovellus nähdä tapahtumasi?", kyseessä on OAuth. Sovellus saa tunnuksen juuri siihen, mitä hyväksyit, ja voit peruuttaa sen milloin tahansa. Sama tekniikka, johon on lisätty OpenID Connect -kerros, toimii "Kirjaudu Google-tilillä" -painikkeen ja vastaavien takana.

Miksi OAuth on tärkeää tekoälyllä rakennettaessa

OAuth tulee esiin kahdessa yleisessä tilanteessa, kun rakennat sovellusta:

  1. Sosiaalinen kirjautuminen. Haluat käyttäjien kirjautuvan "Kirjaudu Google-tilillä" (tai Applella, Microsoftilla, GitHubilla) sen sijaan, että luovat yhden salasanan lisää. Katso miten kirjautuminen lisätään sovellukseen.
  2. Yhdistäminen käyttäjien tileihin muissa palveluissa. Sovelluksesi tarvitsee lukea käyttäjän kalenteria, julkaista hänen sosiaalisen median tilille, hakea tiedostoja pilvitallennuksesta tai synkronoida kirjanpitotietoja.

Molemmissa tapauksissa tekoälyrakentaja voi kirjoittaa koodin, mutta jotkin vaiheet vaativat sinua: kehittäjäsovelluksen luominen palveluntarjoajalle, client ID:n ja client secret:in hankkiminen, takaisinkutsu-URL-osoitteiden rekisteröinti ja joidenkin oikeuksien hyväksyttäminen palveluntarjoajan tarkastuksessa. OAuthin toiminnan ymmärtäminen tekee näistä vaiheista ja niiden virheistä paljon vähemmän mystisiä. Kirjautumisen kokonaiskuvaa varten katso mitä todennus on.

Arkinen vertaus

Ajattele hotellin avainkorttia. Sisäänkirjautuessa vastaanotto varmistaa, kuka olet, ja antaa sinulle kortin, joka avaa huoneesi ja kuntosalin, mutta ei muita huoneita tai henkilökunnan tiloja. Kortti ei sisällä passiasi. Jos kortti katoaa, vastaanotto mitätöi sen ja antaa uuden.

  • Vastaanotto on valtuutuspalvelin (Googlen kirjautumissivu).
  • Henkilöllisyystarkistus on sinun kirjautumisesi Googleen.
  • Avainkortti on käyttötunnus.
  • "Huone ja kuntosali vain" ovat hyväksymäsi oikeudet (scopes).
  • Uloskirjautuminen on tunnuksen vanheneminen tai pääsyn peruuttaminen.

Sovellus, jota käytät, ei koskaan näe Google-salasanaasi, vain avainkortin.

Miten OAuth toimii vaihe vaiheelta

Yleisin virta verkkosovelluksissa on valtuutuskoodivirta (authorization code flow). Tässä tapahtuu, kun käyttäjä yhdistää Google-kalenterinsa aikataulutussovellukseen:

  1. Napsautus. Käyttäjä klikkaa "Yhdistä Google-kalenteri".
  2. Uudelleenohjaus palveluntarjoajalle. Sovellus lähettää selaimen Googleen sen client ID:n, pyytämiensä oikeuksien (lue kalenteritapahtumat) ja uudelleenohjaus-URI:n, johon Google palauttaa käyttäjän.
  3. Kirjautuminen ja suostumus. Käyttäjä kirjautuu Googleen (jos ei jo ole) ja näkee suostumusnäytön, jolla luetellaan, mitä sovellus pyytää. Hän klikkaa Salli.
  4. Takaisin koodin kanssa. Google ohjaa selaimen takaisin sovelluksen uudelleenohjaus-URI:in lyhytaikaisella, kertakäyttöisellä valtuutuskoodilla.
  5. Vaihto palvelimella. Sovelluksen palvelin lähettää koodin ja client secretin suoraan Googleen ja saa käyttötunnuksen (ja usein päivitystunnuksen).
  6. API:n käyttö. Palvelin kutsuu Google Calendarin rajapintaa käyttötunnuksella ja hakee käyttäjän tapahtumat.

Vaiheen 4 takaisinkutsu näyttää suunnilleen tältä:

https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9

Ja vaiheen 5 tunnusvastaus on JSONia tämän kaltainen:

{
  "access_token": "ya29.a0Af...",
  "expires_in": 3599,
  "refresh_token": "1//0gL...",
  "scope": "https://www.googleapis.com/auth/calendar.readonly",
  "token_type": "Bearer"
}

Tärkeä suunnitteluperiaate: tunnuksen vaihto tapahtuu palvelimelta palvelimelle, joten client secret ja tunnukset eivät koskaan kulje selaimen kautta.

OAuth vs OpenID Connect vs oma kirjautuminen

Mihin se vastaaEsimerkki
OAuth 2.0"Mitä tämä sovellus saa tehdä käyttäjän puolesta?" (valtuutus)Lukea käyttäjän kalenteria
OpenID Connect (OIDC)"Kuka tämä käyttäjä on?" (todennus), rakennettu OAuthin päälle"Kirjaudu Google-tilillä" palauttaa vahvistetun sähköpostin
Oma kirjautuminen"Onko tämä oikea salasana tälle tilille?"Sähköposti ja salasana (tiivisteenä) tietokannassasi

Monet sovellukset yhdistävät nämä: sähköposti-salasana-kirjautumisen, "Kirjaudu Google-tilillä" -kirjautumisen OIDC:n kautta ja erilliset OAuth-yhteydet muihin palveluihin.

Keskeiset termit

TermiMerkitys
Palveluntarjoaja / valtuutuspalvelinPalvelu, johon käyttäjä kirjautuu ja jossa hän myöntää pääsyn: Google, Microsoft, GitHub.
Asiakas (client)Sinun sovelluksesi palveluntarjoajalle rekisteröitynä.
Client IDSovelluksesi julkinen tunniste palveluntarjoajalla.
Client secretSovelluksesi yksityinen salasana palveluntarjoajalle. Vain palvelimella.
Scope (oikeus)Yksittäinen lupa, kuten "lue kalenteri" tai "näe sähköpostiosoite".
SuostumusnäyttöSivu, jolla käyttäjä näkee ja hyväksyy pyydetyt oikeudet.
Uudelleenohjaus-URI / takaisinkutsu-URLOsoite, johon palveluntarjoaja palauttaa käyttäjän. Pitää rekisteröidä etukäteen ja vastata tarkasti.
Käyttötunnus (access token)Lyhytaikainen tunniste rajapinnan kutsumiseen.
Päivitystunnus (refresh token)Pitkäikäisempi tunniste uusien käyttötunnusten hakemiseen. Tallenna se kuten salasana.
ID-tunnus (ID token)OIDC:ssä allekirjoitettu tunniste, joka kuvaa, kuka käyttäjä on.
PKCELisätarkistus ("proof key"), joka estää siepattujen koodien käytön. Suositellaan kaikille asiakkaille.
stateSatunnainen arvo, joka suojaa virtaa väärennettyjä pyyntöjä vastaan.

Yleisiä väärinkäsityksiä

  • "OAuth on kirjautumisjärjestelmä." Pelkkä OAuth myöntää pääsyn; OpenID Connect hoitaa henkilöllisyyden. Pelkän käyttötunnuksen käyttäminen todisteena siitä, kuka joku on, on aiheuttanut oikeita tietoturvavirheitä.
  • "Sovellus saa salasanani." Ei saa. Juuri se on tarkoitus.
  • "Lisäoikeuksien pyytäminen on vaaratonta." Käyttäjät epäilevät laajoja pyyntöjä, ja palveluntarjoajat kuten Google voivat vaatia sovelluksen tarkastuksen arkaluonteisille tai rajoitetuille oikeuksille. Pyydä vain tarvitsemasi.
  • "Client secret voi olla frontendissä." Kaikki selainkoodissa on julkista. Pidä se palvelinpuolen salaisuuksina.
  • "Se toimii testauksessa, joten toimii tuotannossa." Palveluntarjoajat rajoittavat usein vahvistamattomia sovelluksia, esimerkiksi listattuihin testikäyttäjiin, ja live-verkkotunnuksesi uudelleenohjausosoite on rekisteröitävä erikseen.
  • "Tunnukset ovat voimassa ikuisesti." Käyttötunnukset vanhenevat nopeasti, ja käyttäjät voivat peruuttaa pääsyn. Sovelluksesi täytyy käsitellä molemmat sulavasti.

Mitä pyytää tekoälysovellusrakentajalta

  • "Lisää 'Kirjaudu Google-tilillä' OpenID Connectilla hyvin ylläpidetyllä todennuskirjastolla. Älä kirjoita OAuth-virtaa käsin."
  • "Käytä valtuutuskoodivirtaa PKCE:n kanssa ja tarkista state-parametri."
  • "Lue client ID ja client secret palvelimen ympäristömuuttujista."
  • "Pyydä vain tarvitsemamme oikeudet: vain luku -pääsy kalenteriin."
  • "Kerro, mitkä kaikki uudelleenohjaus-URL:t minun pitää rekisteröidä palveluntarjoajan konsoliin: esikatselulle, julkaistulle URL-osoitteelle ja omalle verkkotunnukselleni."
  • "Tallenna päivitystunnukset salattuina tietokantaan, ja kun tunnus on vanhentunut tai peruutettu, pyydä käyttäjää yhdistämään uudelleen."
  • "Anna käyttäjien katkaista integraatio asetussivultaan."

OAuth ja Mythex

Mythexissa ei ole sisäänrakennettua loppukäyttäjän kirjautumista rakentamillesi sovelluksille. Dokumentaatiossa kuvataan "tuo oma" -lähestymistapa: valitset todennuskirjaston tai hallitun palveluntarjoajan, tallennat sen avaimet projektin salaisuuksiin, ja agentti kirjoittaa koodin. Lisää todennus -resepti sisältää aloituskehotteen tähän. Törmäät OAuthiin myös Mythexissä itsessään: voit kirjautua Google-tilillä, GitHubin yhdistäminen repositorion synkronointiin käyttää GitHub-OAuthia, ja tekoälyasiakkaat, jotka yhdistyvät Mythexiin MCP:n kautta, kulkevat OAuth-suostumussivun läpi. Lisää aiheesta: mitä todennus on ja mitä kaksivaiheinen todennus on.

Kysymykset

Mitä OAuth on yksinkertaisesti sanottuna?

OAuth on vakiotapa, jolla käyttäjä antaa yhdelle sovellukselle pääsyn omaan tiliinsä toisessa palvelussa, kuten sallii aikataulutussovelluksen lukea Google-kalenteriaan, antamatta sovellukselle salasanaansa. Käyttäjä hyväksyy tietyt oikeudet, ja sovellus saa tunnuksen, jota voi käyttää vain niihin.

Onko OAuth sama asia kuin "Kirjaudu Google-tilillä"?

"Kirjaudu Google-tilillä" perustuu OAuth 2.0:aan ja OpenID Connectiin. OpenID Connect on OAuthin päällä oleva kerros, joka lisää vakiotavan kertoa sovellukselle, kuka käyttäjä on. OAuth itsessään koskee pääsyn myöntämistä, ja OpenID Connect tekee siitä kirjautumisen.

Mikä on OAuth-käyttötunnus (access token)?

Käyttötunnus on tunniste, jonka sovellus lähettää palvelun rajapintaan todistaakseen, että sille on myönnetty pääsy. Se on yleensä lyhytaikainen ja rajattu käyttäjän hyväksymiin oikeuksiin (scopes). Päivitystunnus (refresh token), jos sellainen on myönnetty, antaa sovelluksen hakea uusia käyttötunnuksia kysymättä käyttäjältä uudelleen.

Mitä redirect_uri_mismatch tarkoittaa?

Se tarkoittaa, että kirjautumisen aikana sovelluksesi lähettämä takaisinkutsu-URL ei täsmää täsmälleen palveluntarjoajan kehittäjäkonsoliin rekisteröityyn osoitteeseen. Lisää tarkka URL, mukaan lukien https, verkkotunnus, polku ja mahdollinen loppuviiva, jokaista osoitetta varten, jossa sovelluksesi toimii.

Onko OAuth turvallinen?

OAuth 2.0 on laajasti käytetty ja turvallinen, kun se toteutetaan oikein: käyttämällä valtuutuskoodivirtaa PKCE:n kanssa, tarkkoja uudelleenohjausosoitteita, state-parametria ja pitämällä asiakassalaisuus ja tunnukset palvelimella. Useimmat ongelmat syntyvät toteutuksen oikaisuista, minkä vuoksi hyvin ylläpidetyn kirjaston käyttöä suositellaan.

Mythex · Pricing · Rakenna mitä tahansa tekoälyllä · Verkkosivu- ja sovellusmallipohjat · Mythex vertailussa · Tekoälysovellusten rakentamisen sanasto · Ilmaiset työkalut tekoälysovellusten rakentamiseen · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)