Oppsett av ressursserver
Konfigurer en Spring Boot-applikasjon som en OAuth2-ressursserver for å beskytte API-endepunktene.
Oppsett av ressursserver er en gratis leksjon i Spring Security 6 og JWT-autentisering på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Spring Security 6 og JWT-autentisering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Spring Security 6 og JWT-autentisering inneholder totalt 4 leksjoner.
Hva er en ressursserver?
Velkommen til konfigurasjon av en Spring Security OAuth2-ressursserver! Dette er en viktig komponent i moderne sikre applikasjoner.
- En ressursserver er vert for beskyttede ressurser, som API-endepunktene Deres.
- Den mottar tilgangstokener fra klienter og validerer dem.
- Hvis et token er gyldig, gir den tilgang til den forespurte ressursen.
Tenk på den som en dørvakt på en klubb som kontrollerer billetter (tilgangstokener) før noen slippes inn.
Rollen i OAuth2-flyten
I OAuth2-flyten samarbeider ressursserveren tett med en autorisasjonsserver.
- Klienten henter først et tilgangstoken fra autorisasjonsserveren.
- Deretter sender klienten dette tokenet til ressursserveren når den ber om en beskyttet ressurs.
- Ressursserveren utsteder ikke tokener; den validerer dem bare.
Denne separasjonen av ansvar gjør applikasjonen sikrere og mer skalerbar.
Nødvendige avhengigheter
For å gjøre Spring Boot-applikasjonen om til en OAuth2-ressursserver trenger De en bestemt avhengighet.
Den viktigste avhengigheten er spring-boot-starter-oauth2-resource-server. Denne starteren inkluderer alle nødvendige Spring Security-komponenter for håndtering av OAuth2-tilgangstokener.
Den forenkler konfigurasjonen ved å tilby automatisk konfigurasjon for vanlige scenarier.
Legge til avhengigheten
La oss legge til den nødvendige avhengigheten i prosjektets pom.xml (for Maven-brukere) eller build.gradle (for Gradle-brukere).
For Maven plasserer De denne i blokken <dependencies>:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>Aktivere sikkerhet for ressursserveren
Når avhengigheten er på plass, må vi konfigurere Spring Security. I Spring Security 6 gjøres dette vanligvis ved hjelp av en SecurityFilterChain-bønne.
Denne konfigurasjonen forteller Spring Security at innkommende forespørsler kan inneholde et OAuth2-tilgangstoken.
Grunnleggende sikkerhetsfilterkjede
Her er en minimal Java-konfigurasjon for å aktivere ressursserveren:
Elementet oauth2ResourceServer().jwt() forteller Spring Security at den skal forvente JWT-er (JSON Web Tokens) som tilgangstokener.
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorize -> authorize
.anyRequest().authenticated()
)
.oauth2ResourceServer(oauth2 -> oauth2.jwt());
return http.build();
}
}Konfigurere JWT-kilden
For å validere JWT-er må ressursserveren vite hvor den finner de offentlige nøklene, eller hvordan tokenet skal introspeksjoneres.
Dette konfigurerer De i filen application.properties eller application.yml. Den vanligste metoden er å angi JWK Set URI eller Issuer URI.
- JWK Set URI (
jwk-set-uri): Angir et endepunkt der autorisasjonsserveren publiserer de offentlige nøklene sine (JSON Web Key Set). - Issuer URI (
issuer-uri): Angir basis-URL-en til autorisasjonsserveren, som JWK Set URI kan oppdages fra.
Angi JWK Set URI
La oss legge til jwk-set-uri i application.properties. Denne URI-en leveres av Authorization Server.
Bytt ut http://auth-server/realms/master/protocol/openid-connect/certs med den faktiske URI-en fra Authorization Server.
spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://auth-server/realms/master/protocol/openid-connect/certsOpprette et beskyttet endepunkt
La oss nå opprette et enkelt REST-endepunkt som Resource Server skal beskytte. Bare forespørsler med et gyldig access token får tilgang til dette endepunktet.
Vi bruker en enkel @RestController til dette.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ProtectedController {
@GetMapping("/api/hello")
public String hello() {
return "Hello, secured world!";
}
}Sette alt sammen
Her er en komplett, kjørbar Spring Boot-applikasjon som viser et minimalt Resource Server-oppsett med et beskyttet endepunkt. Husk å oppdatere jwk-set-uri i application.properties!
Når du kjører applikasjonen, kan du prøve å åpne /api/hello uten et token (du får 401 Unauthorized).
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
public class ResourceServerApplication {
public static void main(String[] args) {
SpringApplication.run(ResourceServerApplication.class, args);
}
@Configuration
public static class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorize -> authorize
.anyRequest().authenticated()
)
.oauth2ResourceServer(oauth2 -> oauth2.jwt());
return http.build();
}
}
@RestController
public static class ProtectedController {
@GetMapping("/api/hello")
public String hello() {
return "Hello, secured world!";
}
}
}Kontroll av Resource Server-formålet
Hvilket av følgende beskriver best hovedrollen til en OAuth2 Resource Server?
Oppsummering: Oppsett av Resource Server
Godt jobbet! Du har lært det grunnleggende om å sette opp en OAuth2 Resource Server.
- Du har lært at en Resource Server beskytter API-er ved å validere access tokens.
- Du har lagt til avhengigheten
spring-boot-starter-oauth2-resource-server. - Du har konfigurert en
SecurityFilterChainfor å aktivere JWT-basert Resource Server-sikkerhet. - Du har lært hvordan du angir JWT-kilden (for eksempel
jwk-set-uri) iapplication.properties.
Deretter skal vi se nærmere på hvordan Resource Server dekoderer og validerer disse JWT-ene.
Lær deg Java med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Oppsett av ressursserver» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Spring Security 6 og JWT-autentisering, inkludert «Oppsett av ressursserver», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Spring Security 6 og JWT-autentisering inneholder totalt 4 leksjoner.
Hva lærer jeg i «Oppsett av ressursserver»?
Konfigurer en Spring Boot-applikasjon som en OAuth2-ressursserver for å beskytte API-endepunktene. Du øver på Spring Security 6 og JWT-autentisering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Spring Security 6 og JWT-autentisering?
Ingen tidligere erfaring er nødvendig. Spring Security 6 og JWT-autentisering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Oppsett av ressursserver»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Spring Security 6 og JWT-autentisering-leksjonen?
Ja. Alle Spring Security 6 og JWT-autentisering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Oppsett av ressursserver
- Dekoding og validering av JWT-tokens
- Håndheving av scopes og claims
- Tilordning av JWT-claims til Spring-authorities