Keselamatan Spring dan Pengesahan JWT · Pelajaran

Persediaan Pelayan Sumber

Konfigurasikan aplikasi Spring Boot sebagai Pelayan Sumber OAuth2 untuk melindungi titik akhir API-nya.

Pelajaran 1 daripada 412 langkah

Persediaan Pelayan Sumber ialah pelajaran Keselamatan Spring dan Pengesahan JWT percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Keselamatan Spring dan Pengesahan JWT, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Keselamatan Spring dan Pengesahan JWT merangkumi sejumlah 4 pelajaran.

Apakah Pelayan Sumber?

Selamat datang ke konfigurasi Pelayan Sumber OAuth2 Spring Security! Ini ialah komponen penting dalam aplikasi moden yang selamat.

  • Pelayan Sumber mengehos sumber yang dilindungi, seperti titik akhir API anda.
  • Ia menerima token akses daripada klien dan mengesahkannya.
  • Jika token sah, ia memberikan akses kepada sumber yang diminta.

Anggaplah ia sebagai pengawal keselamatan di kelab yang memeriksa tiket (token akses) sebelum membenarkan sesiapa masuk.

Peranan dalam Aliran OAuth2

Dalam aliran OAuth2, Pelayan Sumber bekerjasama rapat dengan Pelayan Kebenaran.

  • Klien terlebih dahulu mendapatkan token akses daripada Pelayan Kebenaran.
  • Kemudian, klien menghantar token ini kepada Pelayan Sumber apabila meminta sumber yang dilindungi.
  • Pelayan Sumber tidak mengeluarkan token; ia hanya mengesahkannya.

Pemisahan tanggungjawab ini menjadikan aplikasi anda lebih selamat dan mudah diskalakan.

Kebergantungan Penting

Untuk menukar aplikasi Spring Boot anda menjadi Pelayan Sumber OAuth2, anda memerlukan kebergantungan tertentu.

Kebergantungan utama ialah spring-boot-starter-oauth2-resource-server. Pemula ini membawa masuk semua komponen Spring Security yang diperlukan untuk mengendalikan token akses OAuth2.

Ia memudahkan proses persediaan dengan menyediakan konfigurasi automatik untuk senario biasa.

Menambah Kebergantungan

Mari tambahkan kebergantungan yang diperlukan ke dalam projek anda, iaitu pom.xml (untuk pengguna Maven) atau build.gradle (untuk pengguna Gradle).

Bagi Maven, letakkannya di dalam blok <dependencies> ini:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
</dependency>

Mengaktifkan Keselamatan Pelayan Sumber

Dengan kebergantungan tersedia, kita perlu mengkonfigurasi Spring Security. Dalam Spring Security 6, hal ini biasanya dilakukan menggunakan bean SecurityFilterChain.

Konfigurasi ini memberitahu Spring Security supaya menganggap permintaan masuk mungkin mengandungi token akses OAuth2.

Rantaian Penapis Keselamatan Asas

Berikut ialah konfigurasi Java minimum untuk mengaktifkan Pelayan Sumber:

Bahagian oauth2ResourceServer().jwt() memberitahu Spring Security supaya menjangkakan JWT (Token Web JSON) sebagai token akses.

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();
  }
}

Mengkonfigurasi Sumber JWT

Untuk mengesahkan JWT, Pelayan Sumber perlu mengetahui tempat mendapatkan kunci awam atau cara memeriksa token.

Anda mengkonfigurasikannya dalam fail application.properties atau application.yml. Cara yang paling biasa ialah menyediakan URI Set JWK atau URI Pengeluar.

  • URI Set JWK (jwk-set-uri): Menunjukkan titik akhir tempat Pelayan Kebenaran menerbitkan kunci awamnya (Set Kunci Web JSON).
  • URI Pengeluar (issuer-uri): Menunjukkan URL asas Pelayan Kebenaran, yang daripadanya URI Set JWK boleh ditemui.

Menetapkan URI Set JWK

Mari tambahkan jwk-set-uri pada application.properties kita. URI ini disediakan oleh Pelayan Keizinan anda.

Gantikan http://auth-server/realms/master/protocol/openid-connect/certs dengan URI sebenar daripada Pelayan Keizinan anda.

spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://auth-server/realms/master/protocol/openid-connect/certs

Mencipta Titik Akhir Terlindung

Sekarang, mari cipta titik akhir REST ringkas yang akan dilindungi oleh Pelayan Sumber kita. Hanya permintaan dengan token akses yang sah dapat mencapai titik akhir ini.

Kita akan menggunakan @RestController asas untuk tujuan ini.

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!";
  }
}

Menggabungkan Semuanya

Berikut ialah aplikasi Spring Boot lengkap yang boleh dijalankan, menunjukkan persediaan Pelayan Sumber minimum dengan titik akhir yang dilindungi. Ingat untuk mengemas kini jwk-set-uri dalam application.properties!

Apabila anda menjalankannya, cuba akses /api/hello tanpa token (anda akan menerima 401 Tidak Dibenarkan).

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!";
    }
  }
}

Semakan Tujuan Pelayan Sumber

Antara berikut, yang manakah paling tepat menerangkan peranan utama Pelayan Sumber OAuth2?

Imbas Kembali: Persediaan Pelayan Sumber

Syabas! Anda telah mempelajari asas menyediakan Pelayan Sumber OAuth2.

  • Kita memahami bahawa Pelayan Sumber melindungi API dengan mengesahkan token akses.
  • Kita menambahkan kebergantungan spring-boot-starter-oauth2-resource-server.
  • Kita mengkonfigurasi SecurityFilterChain untuk mendayakan keselamatan Pelayan Sumber berasaskan JWT.
  • Kita mempelajari cara menentukan sumber JWT (contohnya, jwk-set-uri) dalam application.properties.

Seterusnya, kita akan meneliti dengan lebih mendalam cara Pelayan Sumber menyahkod dan mengesahkan JWT ini.

Percuma untuk bermula

Pelajari Java dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Persediaan Pelayan Sumber” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Keselamatan Spring dan Pengesahan JWT, termasuk “Persediaan Pelayan Sumber”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Keselamatan Spring dan Pengesahan JWT merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Persediaan Pelayan Sumber”?

Konfigurasikan aplikasi Spring Boot sebagai Pelayan Sumber OAuth2 untuk melindungi titik akhir API-nya. Anda berlatih Keselamatan Spring dan Pengesahan JWT menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Keselamatan Spring dan Pengesahan JWT?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Keselamatan Spring dan Pengesahan JWT di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Persediaan Pelayan Sumber” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Keselamatan Spring dan Pengesahan JWT ini?

Ya. Setiap pelajaran Keselamatan Spring dan Pengesahan JWT menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Persediaan Pelayan Sumber
  2. Menyahkod dan Mengesahkan JWT
  3. Penguatkuasaan Skop dan Tuntutan
  4. Memetakan Tuntutan JWT kepada Pihak Berkuasa Spring
← Kembali ke Keselamatan Spring dan Pengesahan JWT