Spring Security学习:04.Spring Security 4.1 的新特性

本文介绍了Spring Security 4.1的主要新特性,包括Java配置的改进,如UserDetailService和AuthenticationProvider的简化配置,以及HttpSecurity的过滤器链管理。此外,还提及了Web应用安全的提升,如Content Security Policy (CSP)和HTTP Public Key Pinning (HPKP),以及Authorization和Testing方面的增强。同时,文章提供了获取项目源码的方法,以便于开发者深入学习和调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例代码

因为 Spring Security 是一个开源项目,我们强烈建议你check out github上的代码。你将可以看到所有的案例应用以及如何使用最新的 Spring Security API来构建应用。在进行调试的时候,有源码也是非常有帮助的。异常栈的追踪不再是黑盒,你可以直接定位引起问题的那一行代码来查看到底发生了什么。对于一个项目而言,源代码是其终极文档,而且通常是发现事情是如何进行的最简单的地方。

要获得这个项目的源码,使用如下的git命令

git clone https://github.com/spring-projects/spring-security.git

这将会为你提供在本机上访问项目完整历史(包含所有正式发行版和分支)的途径。

Java配置改进

  • 简化UserDetailService的Java配置
  • 简化AuthenticationProvider的Java配置
  • 可通过LogoutConfigurer根据不同情况配置使用不同的LogoutSuccessHandler
  • 可通过SessionManagementConfigurer配置InvalidSessionStrategy 
  • 可通过HttpSecurity.addFilterAt在过滤器链的指定位置上添加一个Filter

Web应用的安全改进

  • 内容安全策略(Content Security Policy (CSP))
  • HTTP公钥固定扩展(HTTP Public Key Pinning (HPKP)
  • CookieCsrfTokenRepository提供对AngularJS的简单的CSRF集成
  • 添加ForwardAuthenticationFailureHandler 和ForwardAuthenticationSuccessHandler
  • AuthenticationPrincipal支持通过表达式属性来转换Authentication.getPrincipal()的返回对象(例如处理一个不可变的自定义用户对象)。

授权提升(Authorization Improvements )

  • Path Variables in Web Security Expressions
  • Method Security Meta Annotations

Crypto模块提升

  • 通过SCryptPasswordEncoder支持SCrypt
  • 通过Pbkdf2PasswordEncoder支持PBKDF2
  • 为使用AES/CBC/PKCS5Padding和AES/GCM/NoPadding算法的BouncyCastle提供新的BytesEncryptor实现。

测试提升

  • @WithAnonymousUser

@WithUserDetails 允许指定UserDetailsService  Bean的名称

  • Test Meta Annotations

通过SecurityMockMvcResultMatchers.withAuthorities模拟一个GrantedAuthority 列表的能力

一般性提升

重新组织案例项目

issues移植到GitHub上。

免费学习视频欢迎关注云图智联:https://e.yuntuzhilian.com/ 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值