Spring Boot Security 是 Spring 框架的一個模組,用於實現應用程序的安全性。它提供了一種簡單而強大的方式來保護您的應用程序免受未授權訪問、身份盗用、信息洩露等安全威脅。Spring Boot Security 建立在 Spring Security 基礎之上,並進一步簡化了配置和使用。
Spring Boot Security 支持多種身份驗證機制,包括基本身份驗證、表單身份驗證、OAuth2、JWT(JSON Web Tokens)等。
Spring Boot Security 使您能夠定義細粒度的授權規則,確保只有具有適當權限的用戶可以訪問應用程序的特定部分或功能。
Spring Boot Security 通過使用安全過濾器來處理對請求的驗證和授權。這些過濾器可以按照特定的順序來定義,以實現多層次的安全性。
典型的過濾器包括身份驗證過濾器(Authentication Filter)和授權過濾器(Authorization Filter)。
您可以輕鬆擴展 Spring Boot Security,以滿足您的自定義需求。這可以包括自定義身份驗證提供者、自定義授權邏輯、自定義登錄頁面等。
您可以設置安全事件監聽器,以監視和響應安全事件,如登錄成功、登出等。
Spring Boot Security 能夠輕松集成第三方安全性機制,如 OAuth2 和 OpenID Connect,以實現單點登錄(Single Sign-On,SSO)和授權流程。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
創建一個SecurityConfig 配置檔
@Configuration
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.csrf(AbstractHttpConfigurer::disable) //禁止CSRF(跨站請求偽造)保護。
.authorizeHttpRequests((authorize) -> authorize //對所有訪問HTTP端點的HttpServletRequest進行限制
.requestMatchers(
"/error/**",
"/hello"
).permitAll() //指定上述匹配規則中的路徑,允許所有用戶訪問,即不需要進行身份驗證。
.anyRequest().authenticated() //其他尚未匹配到的路徑都需要身份驗證
);
return http.build();
}
}
以上程式碼禁用了 CSRF 保護,並定義了哪些請求需要身份驗證,哪些請求允許所有用戶訪問。這只是一個簡單的配置示例,我將 /error/** , /hello 設定為不須身份驗證就可以進行訪問,當我訪問專案中其他API路徑就會被Security擋住回傳403
/error 用於處理錯誤和異常情況
/error/** 表示與/error開頭匹配之路徑
訪問/hello API路徑
訪問其他API路徑