Spring Security 6 og JWT-autentisering · leksjon

Oppsett av ressursserver

Konfigurer en Spring Boot-applikasjon som en OAuth2-ressursserver for å beskytte API-endepunktene.

Leksjon 1 av 412 trinn

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

Opprette 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 SecurityFilterChain for å aktivere JWT-basert Resource Server-sikkerhet.
  • Du har lært hvordan du angir JWT-kilden (for eksempel jwk-set-uri) i application.properties.

Deretter skal vi se nærmere på hvordan Resource Server dekoderer og validerer disse JWT-ene.

Gratis å komme i gang

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

  1. Oppsett av ressursserver
  2. Dekoding og validering av JWT-tokens
  3. Håndheving av scopes og claims
  4. Tilordning av JWT-claims til Spring-authorities
← Tilbake til Spring Security 6 og JWT-autentisering