Spring Security 5.0.0正式发布

Spring Security 5.0.0 版本已由 Pivotal 正式发布,这是自 2015 年以来的第一个重大版本更新。此版本主要包含对 OAuth2.0 的支持、Spring WebFlux 支持以及现代化的密码存储等功能。此外,该版本还引入了反应式安全特性,并且只需最低限度地支持 JDK 8。

Pivotal正式发布Spring Security 5.0.0,是2015年3月发布4.0.0版本以来的第一个大版本。

\\

Spring Security诞生于2004年,当时叫作Acegi,现在由Pivotal工程师Robert Winch领导开发,Robert是Spring SecuritySpring Security 3.1的合著者。5.0.0版本包含了400多项改进和问题修复,包括支持OAuth 2.0、支持Spring WebFlux、可以使用Reactor的StepVerifier进行测试。

\\

InfoQ就Spring Security 5.0.0版本的发布和未来计划问题采访了Robert Winch。

\\

InfoQ:新版本的更新站点看起来很稳定。你能概括一下这一版本的内容吗?

\\
Winch:Spring Security 5.0.0的主要亮点在于它只需要最小化的JDK 8、反应式安全特性、OAuth 2.0(OIDC)和现代密码存储。
\\

InfoQ:你们是怎么想到现代密码存储这个主意的?又是如何实现的?

\\
Winch:在Spring Security 5.0.0之前,密码是明文保存,十分不安全。因为这一次发布的是大版本,所以我们决定使用更安全的密码存储方式。 我们有幸与密码存储专家John Steven合作,他是OWASP密码存储手册的主要作者。Spring Security现在默认提供的是最新的密码存储方式。当然,我们也可以使用其他方式来存储密码。
\\

InfoQ:Spring让我印象深刻的地方在于,它总是能够急我们之所急,为我们提供我们缺失的功能。你们是如何决定推出哪些特性的?

\\
Winch:我们关注社区进展,为呼声较高的问题制定解决方案。结果就是要使用最小化的JDK 8,并通过Reactor项目来支持反应式编程。
\\

InfoQ:你们打算加快Spring Security的发布速度吗?就像Juergen Hoeller所说的那样,在更短的时间周期内交付已经准备好的特性?

\\
Winch:是的。Spring Security尝试跟上Spring框架的脚步,确保为Spring框架提供安全保护。
\\

InfoQ:下一个版本的计划是什么?

\\
Winch:下一版本,我们计划把精力集中在完善反应式和OAuth上面。我们也会提供一些工具用于迁移现有的密码。我们也希望能够发布初始版本的OAuth资源服务器。
\\

现在让我们来看看增强的方法级别的安全(示例来自Spring Security网站)。

\\

可以使用@EnableGlobalMethodSecurity来启用基于注解的安全,只要这个类也使用了@Configuration。例如:

\\
\@Configuration\@EnableGlobalMethodSecurity(securedEnabled = true)\public class MethodSecurityConfig {\// ...\}
\\

然后就可以实现方法级别的安全:

\\
\public interface BankService {\\@Secured(\"IS_AUTHENTICATED_ANONYMOUSLY\")\public Account readAccount(Long id);\\@Secured(\"IS_AUTHENTICATED_ANONYMOUSLY\")\public Account[] findAccounts();\\@Secured(\"ROLE_TELLER\")\public Account post(Account account, double amount);\}
\\

有时候可能需要比GlobalMethodSecurity更灵活的方式,那么可以通过扩展GlobalMethodSecurityConfiguration来实现自定义安全策略,并在这个类上面加上@EnableGlobalMethodSecurity:

\\
\@EnableGlobalMethodSecurity(prePostEnabled = true)\public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {\\t@Override\\tprotected MethodSecurityExpressionHandler createExpressionHandler() {\\t\t// ... create and return custom MethodSecurityExpressionHandler ...\\t\treturn expressionHandler;\\t}\}
\\

Reactor项目的反应式流有一个特性,它支持将等待中的线程分配给新的任务作业,这就给实现ThreadLocal类型映射带来了新的挑战。Reactor为此提供了Context API,它是一种反应式的ThreadLocal map。

\\

在5.0.0版本里,可以通过ReactiveSecurityContextHolder.getContext()方法访问反应式Context,并在方法调用过程中使用token(以及其他应用程序相关数据)。

\\

查看英文原文Spring Security 5.0.0 Released

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值