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.
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.comperäisin oleva komentosarja ei voi suoraan lähettää AJAX-pyyntöä kohteeseenapi.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,HEADtaiPOST. - Käytössä on vain tiettyjä sallittuja otsakkeita (esimerkiksi
Accept,Accept-Language,Content-LanguagejaContent-Type). Content-Type-otsakkeen arvo on jokin seuraavista:application/x-www-form-urlencoded,multipart/form-datataitext/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,DELETEtai 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ä, kutenhttps://my-app.com.Access-Control-Allow-Methods:Luettelee resurssille sallitut HTTP-metodit (esimerkiksiGET, POST, PUT, DELETE).Access-Control-Allow-Headers:Ilmoittaa, mitkä HTTP-otsakkeet (esimerkiksiAuthorization, 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 /userinfotaiPOST /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 (esimerkiksihttps://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.
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
- Suostumus ja käyttäjäkokemus
- Cross-Origin Resource Sharing (CORS)
- Front-channel- ja back-channel-uloskirjautuminen
- Lähettäjään sidotut tunnisteet mTLS:llä