写点什么

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

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

关注

评论

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

极狐GitLab14.0正式面世!

极狐GitLab

手写Spring,定义标记类型Aware接口,实现感知容器对象

小傅哥

Java spring 小傅哥 aware

在线正则表达式测试,正则替换工具

入门小站

工具

浪潮云荣获“2021中国智能运维领导厂商”奖项

阿里巴巴6月新作:“Java辟邪剑谱”,看完必让你直呼好家伙!

Java架构师迁哥

攻击方式学习之- 拒绝服务(DOS/DDOS/DRDOS)

网络安全学海

网络安全 信息安全 渗透测试

数字化的三大本质

CECBC

区块链服务网络全球首发 将极大降低政务、金融、能源等领域区块链应用成本

CECBC

JavaScript 学习(十二)--- String对象中的模式匹配方法

空城机

JavaScript 大前端 6月日更

你公司里有不能碰的红线吗?

石云升

法律 职场经验 6月日更

Rust从0到1-函数式编程-闭包

rust 函数式编程 闭包 functional closures

云算力矿机挖矿系统搭建,Bzz节点挖矿APP源码

5分钟速读之Rust权威指南(三十一)线程通信

wzx

rust

常用 Git 命令总结

编程三昧

git 大前端 工具

数据治理

奔向架构师

大数据 数据架构 数据治理

精致女孩的护牙小心机,藏在这瓶冰泉漱口水里

Geek_50a546

服务频繁出现100毫秒的延迟,原因是什么?

BUG侦探

运维 开发

纯CSS实现随机翻牌效果之steps 妙用

devpoint

CSS css3 6月日更

项目管理复杂多变,如何成为一个好的项目经理?

万事ONES

项目管理 研发管理 ONES 开发管理

2021年最危险的七大攻击技术,我不信你不知道

网络安全学海

程序员 网络安全 信息安全 漏洞扫描 攻击技术

vivo商城促销系统架构设计与实践-概览篇

vivo互联网技术

架构 服务器 商城项目

AQS知多少

卢卡多多

AQS 6月日更 锁分析

跳槽要不要找猎头

SwiftDD

面试

从设计模式看如何提升程序员的工程素养

学无止境的阿奔

Linux 后端 设计模式 C/C++ 服务器

带老弟做个实时排行榜

程序员鱼皮

Java c++ 大前端 后端 项目实战

Linux之more命令

入门小站

Linux

带你掌握C++中三种类成员初始化方式

华为云开发者联盟

c++ 初始化 类成员初始化 声明时初始化 初始化列表

电池战争:“新石油”与中欧分野

脑极体

深度学习在推荐系统中的应用(二十一)

Databri_AI

深度学习 算法 推荐系统

架构实战营 - 模块 7- 作业

请弄脏我的身体

架构实战营

Redis - Cluster - 分布式存储

旺仔大菜包

redis

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