写点什么

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:004420
用户头像

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

关注

评论

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

现在好用的低代码平台有哪些?JNPF算一个

互联网工科生

低代码 JNPF

华为云CodeArts Snap荣获信通院优秀大模型案例及两项荣誉证书

人工智能 软件开发 华为云

4个大语言模型训练中的典型开源数据集

华为云开发者联盟

人工智能 华为云 开源数据集 华为云开发者联盟 大语言模型

图像处理-Java-TIFF转换JPG

alexgaoyh

Java 图像处理 格式转换 jpg tif

【天涯神贴】最全合集,重温下经典

Geek_bbbdb0

天涯神贴

观测云产品更新 | 告警策略、智能监控、场景图表、查看器等

观测云

智能监控 可视化图表

库存智慧:数字化管理下的服装企业如何实现库存的精准优化

第七在线

聊聊ClickHouse MergeTree引擎的固定/自适应索引粒度

京东科技开发者

质量保障:成本和价值的思考

老张

软件测试 研发效能 质量保障

SpringBoot 整合多数据源的事务问题

不在线第一只蜗牛

数据库 spring Spring Boot 开发语言

以 AI 升级自我 | Kyligence 荣获多个奖项及榜单认可

Kyligence

数据分析 组织运营

深入了解如何对IPA包进行有效的混淆处理

JAVA应用CPU跳点自动DUMP工具 | 京东物流技术团队

京东科技开发者

Express简单使用及部署在vercel

派大星

node.js Express

集成电子商务平台:如何通过API获取实时商品数据

Noah

Java Chassis 3技术解密:与Spring Cloud的互操作

Java 华为云

跨平台销售策略:通过API同步不同市场的商品数据

Noah

引领AI创意教育新浪潮,瑞云AIGC实训平台解决方案来了

3DCAT实时渲染

AIGC实训教学

IPQ9574: The core strength of WiFi 7 technology, leading the future of wireless communications

wallysSK

在ComfyUI中如何制作高质量白底图

原力在线

AI AIGC AI 绘图 白底图 电商场景

NFTScan 正式上线 Mantle NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT NFT\ NFTScan

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