在前几期中,我们从 Spring 核心到 Spring Boot,再到 Spring Cloud,逐步探索了 Spring 生态的底层原理。作为企业级应用的关键组件,Spring Security 提供了全面的安全解决方案,包括认证(Authentication)和授权(Authorization)。本篇将深入 Spring Security 的源码,剖析其核心机制与实现细节。
1. Spring Security 的核心概念
在进入源码之前,先明确几个关键概念:
- 认证(Authentication):验证用户身份(如用户名密码登录)。
- 授权(Authorization):决定用户是否有权限访问资源。
- SecurityContext:存储当前用户的认证信息。
- Filter Chain:拦截请求,执行安全逻辑。
Spring Security 的核心是基于 Servlet Filter 的拦截机制,与 Spring MVC 无缝集成。
2. Spring Security 的基本配置
一个简单的 Spring Boot 项目启用 Spring Security:
java">@SpringBootApplication
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/public/**").permitAll().anyRequest().authenticated().and().formLogin().and().logout();}@Overrideprotected void configure(AuthenticationManagerBuilder auth) throws Exception {auth.inMemoryAuthentication().withUser("admin").password("{noop}123456").roles("ADMIN");}
}
@EnableWebSecurity
启用安全配置。WebSecurityConfigurerAdapter
定义认证和授权规则。