JWT-todennus ja käyttöoikeuksien hallinta
Toteuttakaa JWT-pohjainen todennus ja käyttöoikeuksien hallinta Spring Cloud Gatewayn sisällä API-pääsyn suojaamiseksi.
JWT-todennus ja käyttöoikeuksien hallinta on ilmainen API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-kurssilla on yhteensä 4 oppituntia.
Ohjelmointirajapinnan yhdyskäytävän suojaaminen
Mikropalveluarkkitehtuurissa ohjelmointirajapintojen suojaaminen on ensiarvoisen tärkeää. Spring Cloud Gateway toimii keskitettynä sisääntulopisteenä, joten se on ihanteellinen paikka turvallisuuskäytäntöjen valvontaan.
Tässä oppitunnissa keskitytään JSON Web Tokenien (JWT) käyttämiseen sekä todentamiseen (kuka tämä käyttäjä on?) että valtuutukseen (mitä tämä käyttäjä voi tehdä?) suoraan Gatewayn sisällä.
JSON Web Tokenien (JWT) esittely
JSON Web Token (JWT) on tiivis ja URL-ystävällinen tapa esittää osapuolten välillä siirrettäviä väittämiä. Sitä käytetään usein todentamiseen ja tietojen vaihtamiseen.
- Tilaton: palvelimen ei tarvitse tallentaa istuntotietoja.
- Itseään täydentävä: sisältää kaikki tarvittavat käyttäjätiedot ja väittämät.
- Skaalautuva: sitä on helppo käyttää useissa palveluissa ilman monimutkaista istuntojen hallintaa.
JWT:n rakenne: otsake, sisältö ja allekirjoitus
JWT koostuu kolmesta pisteillä erotetusta osasta (.), jotka on koodattu Base64Url-muotoon:
- Otsake: määrittää tunnisteen tyypin (JWT) ja allekirjoitusalgoritmin (esimerkiksi HMAC SHA256).
- Sisältö: sisältää väittämät (entiteettiä, kuten käyttäjätunnusta tai rooleja, koskevat lausumat).
- Allekirjoitus: sen avulla tarkistetaan tunnisteen aitous ja varmistetaan, ettei sitä ole muutettu. Se luodaan otsakkeen, sisällön ja salaisen avaimen avulla.
Todentaminen ja valtuutus Gateway-yhdyskäytävässä
On erittäin tärkeää erottaa toisistaan todentaminen (AuthN) ja valtuutus (AuthZ):
- Todentaminen: käyttäjän tai palvelun henkilöllisyyden varmistaminen (esimerkiksi JWT:n allekirjoituksen ja vanhenemisen tarkistaminen).
- Valtuutus: sen määrittäminen, onko todennetulla käyttäjällä tai palvelulla lupa suorittaa tietty toiminto tai käyttää tiettyä resurssia (esimerkiksi käyttäjäroolien tarkistaminen JWT-väittämistä).
Gateway voi käsitellä molemmat ja varmistaa, että vain kelvolliset ja valtuutetut pyynnöt saavuttavat taustapalvelut.
Gatewayn määrittäminen JWT-suojausta varten
JWT-suojauksen integrointia varten Spring Cloud Gateway -projektinne tarvitsee tyypillisesti riippuvuudet spring-cloud-starter-gateway ja spring-boot-starter-security.
Vaikka spring-boot-starter-security tarjoaa kattavan turvallisuuskehyksen, keskitymme JWT:n kelvollisuuden tarkistamiseen manuaalisesti Gateway-suodattimilla havainnollistaaksemme peruskäsitteitä.
JWT:n validointikulku Gateway-yhdyskäytävässä
Kun asiakas lähettää pyynnön JWT:n kanssa, Gateway sieppaa sen. Tyypillinen kulku on seuraava:
- Poimi token: Hae JWT
Authorization-otsakkeesta. - Vahvista token: Tarkista allekirjoitus ja vanheneminen sekä varmista, että token on oikeassa muodossa.
- Poimi claimit: Jäsennä token käyttäjän tietojen ja roolien hakemiseksi.
- Valtuuta pyyntö: Päätä claimien perusteella, voiko pyyntö jatkaa taustapalveluun.
Mukautetun JWT-suodattimen toteuttaminen
Voimme toteuttaa JWT:n vahvistamisen käyttämällä Spring Cloud Gatewayn mukautettua GlobalFilter-suodatinta. Tämä suodatin suoritetaan kaikille saapuville pyynnöille ennen niiden reititystä.
Suodattimessa käsittelette pyynnön otsakkeita, poimitte JWT:n ja suoritatte oman vahvistuslogiikkanne. Jos token on virheellinen, voitte hylätä pyynnön suoraan Gatewaysta.
Esimerkki: yksinkertainen JWT-suodatin
Tässä esimerkissä esitellään Spring Cloud Gateway -sovellus, jossa on GlobalFilter. Se kirjaa Authorization: Bearer -otsakkeen olemassaolon ja simuloi JWT:n vahvistamisen ensimmäistä vaihetta. Suorittakaa sovellus ja kokeilkaa osoitteen /test käyttöä Authorization-otsakkeen kanssa!
package com.example.gateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.http.HttpHeaders;
import reactor.core.publisher.Mono;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
System.out.println("Gateway started! Try accessing /test with 'Authorization' header.");
}
// Configures a dummy route for the filter to act on
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
return builder.routes()
.route("test_route", r -> r.path("/test")
.uri("http://httpbin.org:80/get")) // A public echo service
.build();
}
// Our simplified JWT validation filter
@Bean
public GlobalFilter jwtValidationFilter() {
Logger logger = LoggerFactory.getLogger(GatewayApplication.class);
return (exchange, chain) -> {
HttpHeaders headers = exchange.getRequest().getHeaders();
String authHeader = headers.getFirst(HttpHeaders.AUTHORIZATION);
logger.info("Intercepted request to: {}", exchange.getRequest().getURI());
if (authHeader != null && authHeader.startsWith("Bearer ")) {
String jwt = authHeader.substring(7);
logger.info("Found JWT in header: {}", jwt);
// In a real scenario, full JWT validation happens here.
// For this example, we just log it and proceed.
} else {
logger.warn("No 'Authorization: Bearer' header found.");
}
return chain.filter(exchange); // Continue to the next filter/route
};
}
}Reittien suojaaminen valtuutuksella
Kun JWT on vahvistettu ja sen claimit, kuten käyttäjän roolit tai scopet, on poimittu, voitte käyttää näitä claimeja valtuutukseen. Spring Cloud Gatewayn avulla voitte määrittää valtuutussäännöt suoraan reiteille.
Voisitte esimerkiksi määrittää reitin sallimaan pyynnöt vain, jos todennetulla käyttäjällä on JWT:n payloadissa määritetty rooli 'ADMIN'.
Pikatarkistus: JWT-valtuutus
Kun Gateway on vahvistanut JWT:n, mitkä seuraavista ovat JWT:n käytön keskeisiä hyötyjä APIen todennuksessa ja valtuutuksessa tilattomassa mikropalveluarkkitehtuurissa?
Kertaus: JWT:llä suojattu Gateway
Olette oppineet, miten Spring Cloud Gateway toimii APIen tietoturvan keskeisenä valvontapisteenä. Käsittelimme JWT:iden perusteet, niiden rakenteen ja hyödyt sekä sen, miten ne mahdollistavat tilattoman todennuksen ja valtuutuksen.
Toteuttamalla mukautettuja suodattimia voitte integroida vankan JWT:n vahvistamisen ja hyödyntää claimeja mikropalvelujen käyttöoikeuksien suojaamiseen, jolloin vain valtuutetut pyynnöt saavuttavat taustapalvelun.
Opi API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway) 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 ”JWT-todennus ja käyttöoikeuksien hallinta” ilmainen?
Kyllä – oppitunnin ”JWT-todennus ja käyttöoikeuksien hallinta” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-kurssin, päivitä CoddyKit PROhon. API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”JWT-todennus ja käyttöoikeuksien hallinta”?
Toteuttakaa JWT-pohjainen todennus ja käyttöoikeuksien hallinta Spring Cloud Gatewayn sisällä API-pääsyn suojaamiseksi. Harjoittelet API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”JWT-todennus ja käyttöoikeuksien hallinta”-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ä API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-oppitunnilla?
Kyllä. Jokainen API-yhdyskäytävä ja käänteisvälityspalvelin (Nginx + Spring Cloud Gateway)-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
- JWT-todennus ja käyttöoikeuksien hallinta
- Hajautettu jäljitys Sleuthillä ja Zipkinillä
- Keskitetty määritys Config Serverillä
- Mittareiden julkaiseminen Actuatorilla ja Prometheuksella