• oauth
  • epäsuora virtaus
  • valtuutuskoodi
  • PKCE

Epäsuora virtaus vs. Valtuutuskoodin virtaus: Miksi epäsuora virtaus on kuollut?

Miksi OAuth 2.0:ssa on olemassa "Valtuutuskoodin virtaus", kun meillä on jo "Epäsuora virtaus"? Tutustutaanpa näiden kahden myöntötyypin yksityiskohtiin ja selvitetään, miksi sinun tulisi välttää epäsuoran virtauksen käyttöä.

Darcy Ye
Darcy Ye
Developer

Valtuutuskoodin virtaus ja Epäsuora virtaus ovat kaksi yleisimmin käytettyä myöntötyyppiä OAuth 2.0:ssa, mahdollistaen turvallisen ja tehokkaan käyttäjävaltuutuksen verkkosovelluksille. Molemmat virtaukset toteuttavat valtuutusprosessin, joka sallii käyttäjien antaa pääsyn sovelluksille ilman, että heidän tunnistetietojaan paljastetaan suoraan. Epäsuora virtaus kehitettiin alun perin selainten rajoitusten vuoksi, mutta modernien verkkoteknologioiden myötä valtuutuskoodin virtaus on tullut kehittäjien suosimaksi valinnaksi sen parannettujen turvaominaisuuksien vuoksi.

Tässä artikkelissa tutkimme näiden kahden myöntötyypin eroja ja selitämme, miksi sinun pitäisi välttää epäsuoran virtauksen käyttöä valtuutuskoodin virtauksen sijaan.

Mikä on OAuth 2.0?

Ennen kuin syvennymme näiden kahden myöntötyypin yksityiskohtiin, ymmärretään ensin, mikä OAuth 2.0 on ja miksi se on olennainen nykyaikaisille verkkosovelluksille.

Kun puhutaan OAuthista, viittaamme yleensä OAuth 2.0:aan, joka tunnetaan nimellä "Avoin Valtuutus", on vakiintunut protokolla, joka mahdollistaa verkkosivustojen tai sovellusten hyödyntää resursseja muiden verkkopalveluiden kautta käyttäjän puolesta. Se korvasi OAuth 1.0:n vuonna 2012 ja on siitä lähtien tullut yleisesti hyväksytyksi standardiksi digitaalivaltuutuksessa. OAuth 2.0 on suunniteltu tarjoamaan hallittua pääsyä käyttäjille, antaen asiakassovelluksille erityiset oikeudet käyttää resursseja, jotka edustavat käyttäjää, ilman että käyttäjän kirjautumistietoja paljastetaan.

Vaikka ensisijaisesti käytetty verkko-ympäristöissä, OAuth 2.0:n kehys laajenee myös erilaisiin asiakasmuotoihin. Tähän sisältyy selaimeen perustuvat sovellukset, palvelinpuolen verkkosovellukset, natiivit tai mobiilisovellukset ja jopa toisiinsa kytketyt laitteet, yksityiskohtaisesti käsittelen valtuutetun pääsyn hallinnan lähestymistapaa näillä alustoilla. Se esittelee käsitteen "myöntötyypit" määrittelemään valtuutusprosessin asiakassovelluksen, käyttäjän ja valtuutuspalvelimen välillä. Näitä myöntötyyppejä käytetään määrittämään, kuinka asiakassovellus voi hankkia pääsytunnuksen käsitelläkseen käyttäjän resursseja. Yleisimmät myöntötyypit OAuth 2.0:ssa ovat:

  • Valtuutuskoodi: Ihanteellinen kaikille sovelluslajeille, etenkin palvelinpuolen verkkosovelluksille, joissa asiakassovellus voi vaihtaa valtuustunnuksen pääsytunnukseen ja hallita tunnuksia turvallisesti.
  • Epäsuora: Yksinkertaistettu virtaus, suunniteltu selaimeen perustuville sovelluksille ilman turvallista palvelinkomponenttia. Se luotiin toimittamaan tunnuksia nopeasti asiakassovelluksille. Nyt se on kuitenkin suurimmaksi osaksi vanhentunut turvahuolien vuoksi.
  • Resurssin omistajan käyttäjätunnus ja salasana: Tämä tyyppi sallii asiakassovelluksen pyytää ja vastaanottaa pääsytunnuksen suoraan käyttäjätunnuksilla (käyttäjänimi ja salasana). Koska asiakassovelluksella on suora pääsy käyttäjätunnuksiin, tämä myöntötyyppi katsotaan myös vanhentuneeksi ja sitä tulisi välttää kaikissa tilanteissa.
  • Asiakkaan tunnukset: Käytetään koneesta koneeseen -viestintään, jossa sovellus itse on asiakas. Se sisältää sovelluksen todennuksen valtuutuspalvelimelle ja pääsytunnuksen pyytämisen sen omien resurssien tai toisen palvelun resurssien käsittelemiseksi.

Mikä on epäsuora virtaus?

Epäsuora virtaus on yksinkertaistettu OAuth 2.0 -virtaus, jossa pääsytunnus toimitetaan suoraan asiakkaalle ohjaavan URI:n kautta, ilman lisävaihetta valtuutuskoodin vaihtamiseksi tunnukseen. Se suunniteltiin alun perin verkkosovelluksille, jotka eivät voineet tehdä palvelinpuolen pyyntöjä tunnuspäätteelle selainrajoitusten vuoksi.

Miten epäsuora virtaus toimii?

  1. Käyttäjä napsauttaa painiketta tai linkkiä asiakassovelluksessa aloittaakseen todennusprosessin.
  2. Asiakassovellus ohjaa käyttäjän valtuutuspalvelimelle todennettavaksi, mukaan lukien haluttu käyttöoikeus.
  3. Valtuutuspalvelin kehottaa käyttäjää kirjautumaan sisään ja antaa luvan asiakassovellukselle.
  4. Onnistuneen todennuksen ja valtuutuksen jälkeen valtuutuspalvelin ohjaa käyttäjän selaimen takaisin asiakkaan määrittelemään uudelleenohjaus-URI:in, jossa pääsytunnus sisältyy URL-fragmenttiin.
  5. Asiakassovellus purkaa pääsytunnuksen URL-fragmentista ja käyttää sitä resursseihin pääsyksi resurssipalvelimella.

Turvariskit epäsuorassa virtauksessa

Epäsuorassa virtauksessa on useita tietoturvahaavoittuvuuksia:

  • Tunnuksen paljastuminen: Pääsytunnus palautetaan suoraan asiakkaalle URL-fragmentissa, minkä voi helposti kaapata pahantahtoinen osapuoli. Tämä altistaa pääsytunnuksen mahdolliselle varkaudelle ja väärinkäytölle.
  • CSRF-hyökkäykset: Epäsuora virtaus on alttiina Cross-Site Request Forgery (CSRF) -hyökkäyksille, joissa pahantahtoiset verkkosivustot voivat huijata käyttäjiä myöntämään luvattoman pääsyn heidän tileihinsä.

Näiden turvallisuusongelmien vuoksi epäsuoraa virtausta ei enää suositella nykyaikaisille verkkosovelluksille. Oikeammin valtuutuskoodin virtaus käyttäen PKCE:tä (Todistusavain koodin vaihdolle) on suositeltu valinta turvalliseen käyttäjävaltuutukseen.

Mikä on valtuutuskoodin virtaus?

Valtuutuskoodin virtaus on sen sijaan turvallisempi OAuth 2.0 -virtaus, joka erottaa valtuutusprosessin kahdeksi vaiheeksi: asiakassovellus ensin saa valtuutuskoodin valtuutuspalvelimelta, sitten vaihtaa koodin pääsytunnukseen. Tämä virtaus suunniteltiin alun perin palvelinpuolen verkkosovelluksille, jotka voivat turvallisesti tallentaa asiakasrekisteröinnit ja hallita pääsytunnuksia. PKCE-laajennuksen käyttöönoton myötä, valtuutuskoodin virtausta voidaan nyt käyttää myös selaimeen perustuvissa sovelluksissa.

Miten valtuutuskoodin virtaus toimii yksityisille asiakkaille palvelinpuolen komponentilla?

  1. Käyttäjä napsauttaa painiketta tai linkkiä asiakassovelluksessa aloittaakseen todennusprosessin.
  2. Asiakassovellus ohjaa käyttäjän valtuutuspalvelimelle todennettavaksi halutun käyttöoikeuden kanssa.
  3. Valtuutuspalvelin kehottaa käyttäjää kirjautumaan sisään ja antamaan luvan asiakassovellukselle.
  4. Onnistuneen todennuksen ja valtuutuksen jälkeen valtuutuspalvelin palauttaa valtuutuskoodin asiakkaalle.
  5. Asiakassovellus vaihtaa valtuutuskoodin pääsytunnukseen tekemällä palvelimen välittämän pyynnön tunnuspäätteelle käyttäen asiakasrekisteröintejään.
  6. Valtuutuspalvelin validoi valtuutuskoodin ja asiakasrekisteröinnit ja palauttaa pääsytunnuksen asiakkaalle.
  7. Asiakassovellus käyttää pääsytunnusta pääsyyn käyttäjän resurssiin resurssipalvelimella.

Miten valtuutuskoodin virtaus toimii julkisille asiakkaille PKCE:n kanssa?

  1. Käyttäjä napsauttaa painiketta tai linkkiä asiakassovelluksessa aloittaakseen todennusprosessin.
  2. Asiakassovellus luo koodin varmistajan ja koodin haasteen.
  3. Asiakassovellus ohjaa käyttäjän valtuutuspalvelimelle todennusta varten koodin haasteen kanssa.
  4. Valtuutuspalvelin tallentaa koodin haasteen myöhempää vahvistusta varten.
  5. Käyttäjä todennetaan ja myöntää pääsyn asiakassovellukselle.
  6. Valtuutuspalvelin palauttaa valtuutuskoodin asiakkaalle.
  7. Asiakassovellus vaihtaa valtuutuskoodin pääsytunnukseen tekemällä palvelimen välittämän pyynnön tunnuspäätteelle koodin varmistajan avulla.
  8. Valtuutuspalvelin validoi valtuutuskoodin ja koodin varmistajan tallennettua koodin haastetta vastaan.
  9. Valtuutuspalvelin palauttaa pääsytunnuksen asiakkaalle.
  10. Asiakassovellus käyttää pääsytunnusta pääsyyn käyttäjän resurssiin resurssipalvelimella.

Lue lisää PKCE-virtauksesta.

Epäsuora virtaus vs. Valtuutuskoodin virtaus

NäkökohtaValtuutuskoodin virtausEpäsuora virtaus
Pääsytunnuksen toimitusPääsytunnus toimitetaan asiakkaalle turvallisen pyynnön kauttaPääsytunnus toimitetaan suoraan asiakkaalle URL-fragmentissä
TurvallisuustasoKorkea (tunnuksia ei paljasteta selaimessa)Matala (tunnuksia paljastetaan selaimessa)
KäyttötapaPalvelinpuolen verkkosovellukset ja selaimeen perustuvat sovellukset (PKCE:n kanssa)Selaimeen perustuvat sovellukset vain
Nykyinen käyttöSuositellaan kaikille sovellustyypeilleEi suositella, ja sitä tulisi välttää

Voiko valtuutuskoodin virtaus poistaa epäsuoran virtauksen turvallisuusongelmat?

Vastaus on KYLLÄ:

Valtuutuskoodin virtaus lisää lisävaiheen vaihtaa valtuutuskoodin pääsytunnukseen, mikä merkittävästi vähentää tunnuksen paljastumisen riskiä.

  • Yksityisille asiakkaille, joilla on turvallinen palvelinpuolen komponentti, asiakassovellus voi vaihtaa valtuutuskoodin turvallisesti pääsytunnukseen käyttäen sen asiakasrekisteröintejä.
  • Julkisille asiakkaille ilman turvallista palvelinpuolen komponenttia, PKCE-laajennus voidaan käyttää suojaamaan valtuutuskoodin vaihtoprosessia.

Jos käytät tällä hetkellä epäsuoraa virtausta liiketoiminnassasi, siirtyminen valtuutuskoodin virtaukseen PKCE:n kanssa voi tarjota parempaa turvallisuutta sekä sinulle että käyttäjillesi. Ymmärrämme, että siirtyminen ja identiteettijärjestelmän hallinta voi olla hankalaa ja kallista, mutta parannettujen turvallisuuden ja vaatimustenmukaisuuden edut ovat vaivan arvoisia.