JWT-pohjainen tietoturva
Toteuttakaa token-pohjainen todennus JSON Web Tokenien (JWT) avulla tilattomille API-rajapinnoille.
JWT-pohjainen tietoturva on ilmainen Spring Boot 4:n kattava opas-oppitunti CoddyKitissä. Tämä on oppitunti 3/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 Spring Boot 4:n kattava opas-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Spring Boot 4:n kattava opas-kurssilla on yhteensä 4 oppituntia.
Johdatus JWT-pohjaiseen suojaukseen
Tervetuloa Spring Securityn viimeiselle oppitunnille! Tänään tutustumme JSON Web Token -tokeneihin (JWT), jotka ovat suosittu tapa suojata tilattomia rajapintoja.
Perinteisestä istuntopohjaisesta todentamisesta poiketen JWT-tokenit mahdollistavat palvelimen tilattomuuden, joten ne sopivat erinomaisesti mikropalveluihin ja mobiilisovelluksiin.
Mikä JWT on?
JWT on tiivis ja URL-osoitteissa turvallinen tapa esittää kahden osapuolen välillä siirrettäviä väitteitä. JWT:n väitteet koodataan JSON-objektiksi.
- Tiivis: Pieni koko, voidaan lähettää URL-osoitteessa, POST-parametrina tai HTTP-otsakkeessa.
- Itsenäinen: Sisältää kaikki tarvittavat käyttäjätiedot, joten tietokantahakuja ei tarvita jokaiselle pyynnölle.
JWT:n rakenne
JWT koostuu kolmesta pisteillä (.) erotetusta osasta:
- Otsake
- Hyötykuorma
- Allekirjoitus
Se näyttää yleensä tältä: xxxxx.yyyyy.zzzzz
Otsake: algoritmi ja tyyppi
Otsake koostuu yleensä kahdesta osasta: tokenin tyypistä (joka on JWT) ja käytettävästä allekirjoitusalgoritmista (esimerkiksi HS256 tai RS256).
Tämä JSON koodataan Base64Url-muotoon JWT:n ensimmäiseksi osaksi.
{"alg":"HS256","typ":"JWT"}Hyötykuorma: väitteet
Hyötykuorma sisältää ”väitteet” – entiteettiä (yleensä käyttäjää) koskevia ilmoituksia ja muita tietoja. Väitteitä on kolmea tyyppiä:
- Rekisteröidyt väitteet: Vakiomuotoisia, valinnaisia väitteitä (esimerkiksi
issmyöntäjälle,expvanhenemiselle jasubkohteelle). - Julkiset väitteet: Käyttäjien määrittämiä, törmäyksenkestäviä nimiä edellyttäviä väitteitä.
- Yksityiset väitteet: Lähettäjän ja vastaanottajan yhdessä sopimia mukautettuja väitteitä.
Allekirjoitus: luottamus ja eheys
Allekirjoitus luodaan ottamalla koodattu otsake, koodattu hyötykuorma, salainen avain ja otsakkeessa määritetty algoritmi. Se varmistaa, ettei tokenia ole peukaloitu.
Jos joku muuttaa otsaketta tai hyötykuormaa, allekirjoituksen tarkistus epäonnistuu ja token muuttuu virheelliseksi. Salainen avain on pidettävä luottamuksellisena!
JWT-osien luominen (koodi)
Katsotaan, miten otsake ja hyötykuorma koodataan Base64Url-muotoon. Tämän jälkeen allekirjoitus laskettaisiin näiden koodattujen osien ja salaisuuden avulla.
import java.util.Base64;
public class JwtPartsDemo {
public static void main(String[] args) {
String headerJson = "{\"alg\":\"HS256\",\"typ\":\"JWT\"}";
String payloadJson = "{\"sub\":\"coddyUser\",\"iat\":1678886400,\"exp\":1678890000}";
String encodedHeader = Base64.getUrlEncoder().withoutPadding().encodeToString(headerJson.getBytes());
String encodedPayload = Base64.getUrlEncoder().withoutPadding().encodeToString(payloadJson.getBytes());
System.out.println("Encoded Header: " + encodedHeader);
System.out.println("Encoded Payload: " + encodedPayload);
System.out.println("\nJWT format: EncodedHeader.EncodedPayload.Signature");
}
}JWT:n kulku Spring Securityssä
Kun käyttäjä on onnistuneesti todennettu (esimerkiksi kirjautumalla käyttäjänimellä ja salasanalla), palvelin:
- Luo JWT-tokenin.
- Lähettää JWT-tokenin takaisin asiakkaalle.
Seuraavia pyyntöjä varten asiakas:
- Tallentaa JWT-tokenin (esimerkiksi paikalliseen tallennustilaan).
- Liittää JWT-tokenin
Authorization-otsakkeeseen (esimerkiksiBearer YOUR_TOKEN).
Palvelin sieppaa ja vahvistaa tämän tokenin jokaisen suojatun pyynnön yhteydessä.
JWT-tokenien vahvistaminen (käsitteellinen koodi)
Spring Securityn mukautettu suodatin poimisi tokenin, purkaisi sen osat ja ennen kaikkea tarkistaisi allekirjoituksen sekä vahvistaisi väitteet, kuten vanhenemisajan.
import java.util.Base64;
public class JwtValidationDemo {
public static void main(String[] args) {
// A simplified example token (signature part is placeholder)
String jwtToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJjb2RkeVVzZXIiLCJpYXQiOjE2Nzg4ODY0MDAsImV4cCI6MTY3ODg5MDAwMH0.SIGNATURE_PLACEHOLDER";
String[] parts = jwtToken.split("\\.");
if (parts.length == 3) {
String decodedHeader = new String(Base64.getUrlDecoder().decode(parts[0]));
String decodedPayload = new String(Base64.getUrlDecoder().decode(parts[1]));
System.out.println("Decoded Header: " + decodedHeader);
System.out.println("Decoded Payload: " + decodedPayload);
// In a real application, you would:
// 1. Verify the 'SIGNATURE_PLACEHOLDER' using the secret key.
// 2. Parse 'decodedPayload' JSON to check claims like 'exp' (expiration).
if (decodedPayload.contains("\"sub\":\"coddyUser\"")) {
System.out.println("Payload contains expected subject 'coddyUser'.");
}
} else {
System.out.println("Invalid JWT format.");
}
}
}Pikatarkistus: JWT:n osat
Mitä olemme oppineet: mitkä seuraavista ovat siirrettävän JSON Web Tokenin (JWT) vakiomuotoisia osia?
Kertaus: JWT-pohjainen suojaus
Tällä oppitunnilla tutustuimme JWT-pohjaiseen suojaukseen ja sen kolmeen keskeiseen osaan: otsakkeeseen, hyötykuormaan ja allekirjoitukseen.
Opimme, miten JWT-tokenit mahdollistavat tilattoman todentamisen, mikä tekee niistä erittäin skaalautuvia ja sopivia nykyaikaisiin rajapintoihin ja mobiilisovelluksiin. Näimme myös käsitteellisiä koodiesimerkkejä JWT-tokenien luomiseen ja vahvistamiseen.
Tähän päättyy Spring Security -kurssimme! Opit suojaamaan sovelluksia perustason todentamisesta edistyneisiin token-pohjaisiin järjestelmiin.
Opi Java 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
- 21
- Oppitunnit
- 84
Usein kysytyt kysymykset
Onko oppitunti ”JWT-pohjainen tietoturva” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Spring Boot 4:n kattava opas-oppimispolun 3 oppituntia, myös oppitunnin “JWT-pohjainen tietoturva”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Spring Boot 4:n kattava opas-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”JWT-pohjainen tietoturva”?
Toteuttakaa token-pohjainen todennus JSON Web Tokenien (JWT) avulla tilattomille API-rajapinnoille. Harjoittelet Spring Boot 4:n kattava opas-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Spring Boot 4:n kattava opas-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Spring Boot 4:n kattava opas-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”JWT-pohjainen tietoturva”-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ä Spring Boot 4:n kattava opas-oppitunnilla?
Kyllä. Jokainen Spring Boot 4:n kattava opas-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
- Spring Securityn perusteet
- Todennus ja valtuutus
- JWT-pohjainen tietoturva
- OAuth2:n ja sosiaalisen kirjautumisen integrointi