Spring Security 6 og JWT-godkendelse · Lektion

Opsætning af resource server

Konfigurer en Spring Boot-applikation som en OAuth2 Resource Server for at beskytte dens API-endpoints.

Lektion 1 af 412 trin

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/certs

Oprettelse 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 SecurityFilterChain for at aktivere Resource Server-sikkerhed baseret på JWT.
  • Vi har lært, hvordan JWT-kilden (f.eks. jwk-set-uri) angives i application.properties.

Derefter går vi mere i dybden med, hvordan Resource Server afkoder og validerer disse JWT'er.

Gratis at komme i gang

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

  1. Opsætning af resource server
  2. Dekodning og validering af JWT-tokens
  3. Håndhævelse af scopes og claims
  4. Tilknytning af JWT-claims til Spring Authorities
← Tilbage til Spring Security 6 og JWT-godkendelse