OAuth2 ja OpenID Connect perusteellisesti · Oppitunti

Cross-Origin Resource Sharing (CORS)

Ymmärtäkää CORS-käytännöt OAuth2:n ja OIDC:n yhteydessä, erityisesti kun yksisivuiset sovellukset käyttävät suojattuja resursseja.

Oppitunti 2/411 vaihetta

Cross-Origin Resource Sharing (CORS) on ilmainen OAuth2 ja OpenID Connect perusteellisesti-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu OAuth2 ja OpenID Connect perusteellisesti-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. OAuth2 ja OpenID Connect perusteellisesti-kurssilla on yhteensä 4 oppituntia.

CORS ja turvalliset verkkosovellukset

Tervetuloa! Tutustumme tänään Cross-Origin Resource Sharingiin (CORS), joka on nykyaikaisten verkkosovellusten keskeinen turvallisuusominaisuus.

CORS:n avulla selaimet voivat käsitellä turvallisesti asiakkaan puolella toimivan sovelluksen, kuten Single-Page Applicationin (SPA), ja API-palvelimen välisiä pyyntöjä, kun ne sijaitsevat eri verkkotunnuksissa.

Tämä on erityisen tärkeää, kun SPA käyttää OAuth2:ta tai OpenID Connectia suojattujen resurssien käyttämiseen.

Saman alkuperän käytäntö

Ymmärtääksemme CORS:n meidän on ensin perehdyttävä Same-Origin Policy (SOP) -käytäntöön.

  • SOP on selaimen keskeinen tietoturvaominaisuus.
  • Se estää verkkosivuja lähettämästä pyyntöjä muuhun verkkotunnukseen kuin siihen, josta sivu ladattiin.
  • Esimerkiksi kohteesta app.example.com peräisin oleva komentosarja ei voi suoraan lähettää AJAX-pyyntöä kohteeseen api.anothersite.com.

Tämä suojaa käyttäjiä haitallisilta komentosarjoilta, jotka yrittävät varastaa tietoja muista sivustoista, joihin käyttäjä on kirjautunut.

Miksi CORS:ia tarvitaan

SOP parantaa tietoturvaa, mutta se aiheuttaa ongelmia nykyaikaisissa web-arkkitehtuureissa.

Monien sovellusten, erityisesti SPA-sovellusten, on haettava tietoja eri verkkotunnuksessa tai portissa sijaitsevista rajapinnoista. Esimerkiksi:

  • SPA-sovelluksesi sijaitsee osoitteessa https://my-app.com
  • API:si sijaitsee osoitteessa https://api.my-app.com
  • OAuth2 Authorization Server -palvelimesi sijaitsee osoitteessa https://auth.my-app.com

CORS tarjoaa hallitun tavan lieventää SOP-käytännön rajoituksia, jolloin eri alkuperien väliset pyynnöt ovat mahdollisia tietoturvan säilyessä.

Yksinkertaiset CORS-pyynnöt

Selaimet luokittelevat jotkin eri alkuperien väliset pyynnöt "yksinkertaisiksi". Ne eivät käynnistä erillistä esipyyntöä.

Pyyntö on yksinkertainen, jos kaikki seuraavat ehdot täyttyvät:

  • Metodi on GET, HEAD tai POST.
  • Käytössä on vain tiettyjä sallittuja otsakkeita (esimerkiksi Accept, Accept-Language, Content-Language ja Content-Type).
  • Content-Type-otsakkeen arvo on jokin seuraavista: application/x-www-form-urlencoded, multipart/form-data tai text/plain.

Jos pyyntö on yksinkertainen, selain lähettää sen suoraan ja palvelin sisällyttää vastaukseensa CORS-otsakkeet.

Monimutkaisten pyyntöjen esipyyntö

Useimmat nykyaikaisten SPA-sovellusten pyynnöt, erityisesti OAuth2-tunnuksiin liittyvät pyynnöt, eivät ole yksinkertaisia.

"Monimutkainen" pyyntö edellyttää, että selain lähettää ennen varsinaista pyyntöä "esipyynnön" eli OPTIONS-pyynnön:

  • Metodit: PUT, DELETE tai mukautetut metodit.
  • Otsakkeet: Mukautetut otsakkeet, kuten käyttöoikeustunnusten Authorization.
  • Content-Type: application/json (rajapinnoissa yleinen).

Palvelimen on vastattava tähän OPTIONS-pyyntöön asianmukaisilla CORS-otsakkeilla ja ilmoitettava, sallitaanko varsinainen pyyntö.

Keskeiset CORS-vastausotsakkeet

Palvelin ilmoittaa CORS-käytäntönsä tietyillä HTTP-vastausotsakkeilla:

  • Access-Control-Allow-Origin: Määrittää, mitkä alkuperät saavat käyttää resurssia. Arvona voi olla * (jokerimerkki, jonka käyttöä ei tietoturvasyistä yleensä suositella) tai tietty alkuperä, kuten https://my-app.com.
  • Access-Control-Allow-Methods: Luettelee resurssille sallitut HTTP-metodit (esimerkiksi GET, POST, PUT, DELETE).
  • Access-Control-Allow-Headers: Ilmoittaa, mitkä HTTP-otsakkeet (esimerkiksi Authorization, Content-Type) ovat sallittuja varsinaisessa pyynnössä.

Nämä otsakkeet ovat välttämättömiä, jotta selain voi sallia eri alkuperien välisen pyynnön.

CORS ja tunnistetiedot

Access-Control-Allow-Credentials-otsake on toinen tärkeä CORS-otsake.

Kun sen arvoksi asetetaan true, se ilmoittaa selaimelle, että palvelin sallii evästeiden, HTTP-todennuksen tai asiakaspuolen SSL-varmenteiden sisällyttämisen eri alkuperien väliseen pyyntöön.

OAuth2/OIDC:ssä käyttöoikeustunnukset lähetetään yleensä Authorization-otsakkeessa, ei evästeinä. Jos käytätte kuitenkin istuntoevästeitä todennukseen tai identiteetin hallintaan tunnusten rinnalla, tämä otsake on olennainen.

CORS OAuth2/OIDC-virroissa

CORS on olennainen useissa OAuth2/OIDC:n vaiheissa:

  • Tunnuksen vaihto: SPA-sovelluksen on ehkä vaihdettava valtuutuskoodi käyttöoikeustunnukseen Authorization Serverin token-päätepisteessä. Tämä on eri alkuperien välinen POST-pyyntö.
  • API:n käyttö: Kun SPA-sovelluksella on käyttöoikeustunnus, se käyttää sitä kutsuessaan Resource Serverin API:a (esimerkiksi GET /userinfo tai POST /orders). Tämäkin on eri alkuperien välinen pyyntö.

Authorization Server ja Resource Server on määritettävä oikein, jotta ne sallivat nämä pyynnöt SPA-sovelluksen alkuperästä.

CORS:n parhaat käytännöt

Varmistakaa turvalliset OAuth2/OIDC-toteutukset CORS:n kanssa seuraavasti:

  • Täsmälliset alkuperät: Määrittäkää Access-Control-Allow-Origin-otsakkeessa aina täsmälliset alkuperät (esimerkiksi https://my-app.com), älkääkä käyttäkö tuotannossa arvoa *.
  • Rajoittakaa metodit ja otsakkeet: Sallikaa vain ne HTTP-metodit ja otsakkeet, joita asiakassovellukset todella tarvitsevat.
  • Määrittäkää palvelimet: Varmistakaa, että Authorization Server ja Resource Server on määritetty lähettämään tarvittavat CORS-otsakkeet.
  • Käsitelkää esipyynnöt: Varmistakaa, että palvelin pystyy vastaamaan OPTIONS-pyyntöihin esipyyntöjen tarkistamista varten.

Virheellisesti määritetty CORS voi aiheuttaa tietoturva-aukkoja ja mahdollistaa luvattoman käytön.

CORS-määrityksen tarkistus

SPA-sovelluksen osoitteessa https://my-app.com on lähetettävä API:lle osoitteessa https://api.my-app.com/data POST-pyyntö, jossa on Authorization-otsake ja Content-Type: application/json. Mitkä CORS-vastausotsakkeet API-palvelimen tulisi sisällyttää, jotta pyyntö sallitaan?

Kertaus: CORS ja tietoturva

Olette oppineet Cross-Origin Resource Sharingista (CORS) ja sen tärkeästä roolista nykyaikaisten web-sovellusten suojaamisessa, erityisesti OAuth2:ta ja OpenID Connectia hyödyntävissä sovelluksissa.

  • CORS lieventää selaimen Same-Origin Policy -käytännön rajoituksia.
  • Se mahdollistaa turvallisen viestinnän eri alkuperien välillä.
  • OAuth2-tunnuksia käytettäessä esipyynnöt ovat tavallisia "monimutkaisissa" API-kutsuissa.
  • CORS-otsakkeiden asianmukainen palvelinpuolen määritys (Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers) on ratkaisevan tärkeää.

Noudattakaa aina parhaita käytäntöjä, jotta suojatut resurssinne eivät paljastu virheellisten määritysten vuoksi.

Aloita maksutta

Opi OAuth2 ja OpenID Connect perusteellisesti tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Cross-Origin Resource Sharing (CORS)” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa OAuth2 ja OpenID Connect perusteellisesti-oppimispolun 3 oppituntia, myös oppitunnin “Cross-Origin Resource Sharing (CORS)”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. OAuth2 ja OpenID Connect perusteellisesti-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Cross-Origin Resource Sharing (CORS)”?

Ymmärtäkää CORS-käytännöt OAuth2:n ja OIDC:n yhteydessä, erityisesti kun yksisivuiset sovellukset käyttävät suojattuja resursseja. Harjoittelet OAuth2 ja OpenID Connect perusteellisesti-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni OAuth2 ja OpenID Connect perusteellisesti-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin OAuth2 ja OpenID Connect perusteellisesti-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Cross-Origin Resource Sharing (CORS)”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä OAuth2 ja OpenID Connect perusteellisesti-oppitunnilla?

Kyllä. Jokainen OAuth2 ja OpenID Connect perusteellisesti-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Suostumus ja käyttäjäkokemus
  2. Cross-Origin Resource Sharing (CORS)
  3. Front-channel- ja back-channel-uloskirjautuminen
  4. Lähettäjään sidotut tunnisteet mTLS:llä
← Takaisin: OAuth2 ja OpenID Connect perusteellisesti