Spring Security
簡介
Spring Security 是一個強大的、高度可定制的認證和訪問控制框架,是保護基於Spring的應用的標準選擇。它提供了一整套的安全性保障措施,以保護應用程序免受常見的安全威脅。
核心特性
認證 (Authentication)
使用者身份驗證
支持多種身份驗證機制,如表單登錄、LDAP、基於記憶體的身份驗證、JSON Web Token (JWT) 等。
密碼加密
提供了多種密碼編碼器,如BCryptPasswordEncoder、Pbkdf2PasswordEncoder等,以安全地存儲密碼。
授權 (Authorization)
訪問控制
基於角色和權限的訪問控制,可以細粒度地控制訪問權限。
方法級安全性
通過注解或AOP可以對特定的方法調用進行安全性檢查。
CSRF保護
跨站請求偽造(CSRF)保護:默認啟用的CSRF保護,用於防止CSRF攻擊。
跨域資源共享 (CORS)
CORS 支持:配置CORS以允許或限制跨域請求。
Session 管理
Session 定制:提供了對Session策略的豐富定制,包括Session固定保護、Session超時等。
基礎範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/", "/home").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .permitAll() .and() .logout() .permitAll(); }
@Autowired public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth .inMemoryAuthentication() .withUser("user").password(passwordEncoder().encode("password")).roles("USER") .and() .withUser("admin").password(passwordEncoder().encode("admin")).roles("USER", "ADMIN"); }
@Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
|