Opsætning af resource server
Konfigurer en Spring Boot-applikation som en OAuth2 Resource Server for at beskytte dens API-endpoints.
Opsætning af resource server er en gratis Spring Security 6 og JWT-godkendelse-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Spring Security 6 og JWT-godkendelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Spring Security 6 og JWT-godkendelse-kurset indeholder 4 lektioner i alt.
Hvad er en Resource Server?
Velkommen til konfiguration af en Spring Security OAuth2-Resource Server! Det er en afgørende komponent i moderne sikre applikationer.
- En Resource Server hoster beskyttede ressourcer, f.eks. dine API-endpoints.
- Den modtager access tokens fra klienter og validerer dem.
- Hvis et token er gyldigt, giver den adgang til den ønskede ressource.
Tænk på den som dørmanden på en klub, der kontrollerer billetter (access tokens), før nogen får adgang.
Rolle i OAuth2-flowet
I OAuth2-flowet arbejder Resource Server sammen med en Authorization Server.
- Clienten henter først et access token fra Authorization Server.
- Derefter sender clienten dette token til Resource Server, når den anmoder om en beskyttet ressource.
- Resource Server udsteder ikke tokens; den validerer dem kun.
Denne adskillelse af ansvar gør din applikation mere sikker og skalerbar.
Nødvendige afhængigheder
Hvis du vil omdanne din Spring Boot-applikation til en OAuth2 Resource Server, skal du bruge en bestemt afhængighed.
Den vigtigste afhængighed er spring-boot-starter-oauth2-resource-server. Denne starter tilføjer alle de nødvendige Spring Security-komponenter til håndtering af OAuth2-access tokens.
Den forenkler opsætningen ved at levere automatisk konfiguration til almindelige scenarier.
Tilføjelse af afhængigheden
Lad os tilføje den nødvendige afhængighed til dit projekts pom.xml (for Maven-brugere) eller build.gradle (for Gradle-brugere).
For Maven skal du placere den i din <dependencies>-blok:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>Aktivering af Resource Server-sikkerhed
Når afhængigheden er på plads, skal vi konfigurere Spring Security. I Spring Security 6 gøres det typisk ved hjælp af en SecurityFilterChain-bean.
Denne konfiguration fortæller Spring Security, at indkommende requests skal behandles, som om de kan indeholde et OAuth2-access token.
Grundlæggende sikkerhedsfilterkæde
Her er en minimal Java-konfiguration til aktivering af Resource Server:
Delene oauth2ResourceServer().jwt() fortæller Spring Security, at den skal forvente JWT'er (JSON Web Tokens) som access tokens.
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();
}
}Konfiguration af JWT-kilde
For at Resource Server kan validere JWT'er, skal den vide, hvor de offentlige nøgler findes, eller hvordan tokenet skal introspekteres.
Du konfigurerer dette i filen application.properties eller application.yml. Den mest almindelige metode er at angive JWK Set URI eller Issuer URI.
- JWK Set URI (
jwk-set-uri): Peger på et endpoint, hvor Authorization Server offentliggør sine offentlige nøgler (JSON Web Key Set). - Issuer URI (
issuer-uri): Peger på Authorization Servers basis-URL, hvorfra JWK Set URI kan findes.
Angivelse af JWK Set URI
Lad os tilføje jwk-set-uri til vores application.properties. Denne URI leveres af din Authorization Server.
Erstat http://auth-server/realms/master/protocol/openid-connect/certs med den faktiske URI fra din Authorization Server.
spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://auth-server/realms/master/protocol/openid-connect/certsOprettelse af et beskyttet slutpunkt
Lad os nu oprette et simpelt REST-slutpunkt, som vores Resource Server skal beskytte. Kun anmodninger med et gyldigt adgangstoken kan nå dette slutpunkt.
Vi bruger en almindelig @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!";
}
}Samling af det hele
Her er en komplet, kørbar Spring Boot-applikation, der viser en minimal opsætning af en Resource Server med et beskyttet slutpunkt. Husk at opdatere jwk-set-uri i application.properties!
Når du kører den, kan du prøve at tilgå /api/hello uden 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!";
}
}
}Kontrol af Resource Servers formål
Hvilket af følgende beskriver bedst den primære rolle for en OAuth2 Resource Server?
Opsummering: Opsætning af Resource Server
Godt klaret! Du har lært det grundlæggende i at opsætte en OAuth2 Resource Server.
- Vi har forstået, at en Resource Server beskytter API'er ved at validere adgangstokens.
- Vi har tilføjet afhængigheden
spring-boot-starter-oauth2-resource-server. - Vi har konfigureret en
SecurityFilterChainfor at aktivere Resource Server-sikkerhed baseret på JWT. - Vi har lært, hvordan JWT-kilden (f.eks.
jwk-set-uri) angives iapplication.properties.
Derefter går vi mere i dybden med, hvordan Resource Server afkoder og validerer disse JWT'er.
Lær Java med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Opsætning af resource server” gratis?
Ja — alle 3 lektioner i læringssporet Spring Security 6 og JWT-godkendelse, inklusive “Opsætning af resource server”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Spring Security 6 og JWT-godkendelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Opsætning af resource server”?
Konfigurer en Spring Boot-applikation som en OAuth2 Resource Server for at beskytte dens API-endpoints. Du øver dig i Spring Security 6 og JWT-godkendelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Spring Security 6 og JWT-godkendelse?
Der kræves ingen tidligere erfaring. Spring Security 6 og JWT-godkendelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Opsætning af resource server”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Spring Security 6 og JWT-godkendelse-lektion?
Ja. Alle Spring Security 6 og JWT-godkendelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Opsætning af resource server
- Dekodning og validering af JWT-tokens
- Håndhævelse af scopes og claims
- Tilknytning af JWT-claims til Spring Authorities