写点什么

Spring Security 5.0.0 正式发布

  • 2017-12-18
  • 本文字数:1526 字

    阅读完需:约 5 分钟

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

Spring Security 诞生于 2004 年,当时叫作 Acegi,现在由 Pivotal 工程师 Robert Winch 领导开发,Robert 是 _Spring Security_ 和 _Spring 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 {
@Override
protected MethodSecurityExpressionHandler createExpressionHandler() {
// ... create and return custom MethodSecurityExpressionHandler ...
return expressionHandler;
}
}

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

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

查看英文原文 Spring Security 5.0.0 Released

2017-12-18 18:004214
用户头像

发布了 322 篇内容, 共 151.3 次阅读, 收获喜欢 148 次。

关注

评论

发布
暂无评论
发现更多内容

Java程序员涨薪必备的性能调优知识点,收好了

三十而立

Java

机器学习算法(一): 基于逻辑回归的分类预测

汀丶人工智能

数据挖掘 机器学习 数据分析 逻辑回归

尚硅谷Java真题详解教程发布

小谷哥

我眼中的优秀PM

BY林子

团队管理 项目管理

HummerRisk 使用教程:资源态势

HummerCloud

延伸测试边界,银行测试团队转型建议

BY林子

软件测试 敏捷测试 测试转型

PyTorch 深度学习实战 | 基于ResNet的花卉图片分类

TiAmo

数据集 PyTorch

媒体赞誉丨九科信息入选“第一新声”2022高成长新锐企业榜、RPA高成长企业榜,并受邀参加“2022年高科技高成长年度峰会”

九科Ninetech

得物社区计数系统设计与实现

得物技术

性能优化 重构 稳定性

硬核!阿里出品2023版Java架构师面试指南,涵盖Java所有核心技能

三十而立

Java java面试

综合系统清理优化工具:MacCleaner PRO中文激活版

真大的脸盆

Mac Mac 软件 mac系统清理优化软件 清理工具 清理优化

Java并发夺命23问

程序员大彬

Java Java并发 java面试

云原生引擎单元测试实践

京东科技开发者

云原生 单元测试 代码覆盖

App Store 新定价机制 - 2023年最全版

37手游iOS技术运营团队

ios iap In App Purchase App Store Connect API app store

架构实战营第10期毕业设计-秒杀系统

Geek_4db2d5

场景重塑:乐播投屏搭载无影架构,打造“超级投屏空间”

云布道师

无影

SVN管理工具:Cornerstone 4 激活版

真大的脸盆

svn Mac Mac 软件 SVN客户端

【程序员日记】---当“微服务”遇到了“电饼铛“

京东科技开发者

架构 微服务 系统架构 开发 企业号 3 月 PK 榜

三月征文活动结果已出炉,快来看看有没有你

InfoQ写作社区官方

热门活动 ChatGPT

面试处处碰壁?不慌,Java核心面试文档.PDF助你披荆斩棘

三十而立

GPT-4免费无限制使用教程

南城FE

人工智能 AI 前端 ChatGPT

9 个可以快速掌握的 Java 性能调优技巧,必须掌握

三十而立

Java

"我眼中的ChatGPT"征文获奖作品合集

InfoQ写作社区官方

技术专题合集 热门活动 ChatGPT

谷歌架构师分享gRPC与云原生应用开发Go和Java为例文档

程序知音

Java 架构 云原生 编程语言 后端

如何构建内部开发者门户:企业参考指南

SEAL安全

企业号 3 月 PK 榜 开发者体验 内部开发者门户

论文分享丨Holistic Evaluation of Language Models

华为云开发者联盟

人工智能 华为云 论文 华为云开发者联盟 企业号 3 月 PK 榜

一种基于实时大数据的图指标解决方案

京东科技开发者

大数据 运维 系统架构 开发 图指标

户外广告屏为什么会坏?

Dylan

LED 户外LED显示屏

4种API性能恶化根因分析

华为云开发者联盟

开发 API 华为云 华为云开发者联盟 企业号 3 月 PK 榜

Spring Security 5.0.0正式发布_Java_Victor Grazi_InfoQ精选文章