Spring Security 教程(04)、Spring Security 4 新特性

Spring Security 4 的主要改进

4-new-features 配图
4-new-features 配图
4-new-features 配图

Spring Security 4 相比 3.x 版本带来了多项重要改进,主要集中在配置简化、安全性增强和 API 一致性上。

1. 默认 CSRF 防护启用

Spring Security 4 默认启用 CSRF(跨站请求伪造)防护。这意味着所有状态改变的操作(POST、PUT、DELETE)都需要携带 CSRF Token。

这个改动保护了大量未意识到 CSRF 风险的应用。如果你使用的是 Spring MVC,Spring Security 会自动注入 CSRF Token 到表单中。

2. 默认安全过滤器链启用

Spring Security 4 默认对所有请求启用安全过滤器链。在 3.x 中,你需要显式配置 <http auto-config="true"/> 才能启用默认安全过滤器。4.x 中这个配置成为默认行为。

3. 密码编码器选择

Spring Security 4 推荐 BCrypt 作为默认密码编码器,它内置了盐值生成和成本因子可调的特性,比 MD5/SHA1 安全得多。

1
2
3
4
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

4. HTTP 方法限制

Spring Security 4 增加了对 HTTP 方法级别的安全配置支持。你可以只允许特定的 HTTP 方法访问某个 URL。

1
2
3
http.authorizeRequests()
.requestMatchers(HttpMethod.DELETE, "/api/users/**").hasRole("ADMIN")
.requestMatchers(HttpMethod.GET, "/api/users/**").authenticated();

5. OAuth 2.0 支持增强

Spring Security 4 大幅增强了 OAuth 2.0 的支持,包括 Resource Server 和 OAuth 2.0 Client 的配置。这使得构建基于 OAuth 2.0 的微服务架构变得更加容易。

6. 命名空间配置改进

Spring Security 4 改进了 XML 命名空间配置,新增了 use-expressions 属性、access 属性等新特性,让配置更加灵活。

7. Session Fixation 保护

Spring Security 4 默认启用 Session Fixation 攻击防护。认证成功后,系统会生成新的 Session ID,防止攻击者利用已有的 Session。

8. 更细粒度的 URL 匹配

Spring Security 4 引入了 requestMatchers() 方法,支持基于 Ant 模式、正则表达式、HTTP 方法的更灵活的 URL 匹配。

9. 改进的测试支持

Spring Security 4 改进了测试 API,新增了 WithMockUser、WithUserDetails 等注解,让安全测试更加简单直观。

10. 向后兼容性

尽管有很多改进,Spring Security 4 尽量保持了与 3.x 的向后兼容性。大多数 3.x 的配置在 4.x 中可以直接使用,只有少数配置需要微调。