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

Spring Security 5.0.0正式发布相关推荐

  1. 单点登录(shiro与Spring Security OAuth 2.0的集成)

    单点登录(shiro与Spring Security OAuth 2.0的集成) shiro项目采用ruoyi,OAuth采用pig 若依:https://gitee.com/y_project/Ru ...

  2. Spring Security——OAuth 2.0 Client自动配置源代码分析

    基本概念 OAuth2.0:OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0). OAuth 2.0关注客户端开发者的简易性.要么通过组织在资源 ...

  3. Spring Security——OAuth 2.0登录——Google,GitHub,Facebook和Okta

    基本概念 OAuth 2.0登录:OAuth 2.0登录功能为应用程序提供了使用户能够通过使用其在OAuth 2.0提供程序(例如GitHub)或OpenID Connect 1.0提供程序(例如Go ...

  4. 芋道 spring security oauth2 入门_Spring官方宣布:新的Spring OAuth2.0授权服务器已经来了

    1. 前言 记不记得之前发过一篇文章Spring 官方发起Spring Authorization Server 项目.该项目是由Spring Security主导的一个社区驱动的.独立的孵化项目.由 ...

  5. oidc auth2.0_使用Spring Security 5.0和OIDC轻松构建身份验证

    oidc auth2.0 "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和 ...

  6. 使用Spring Security 5.0和OIDC轻松构建身份验证

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. Spri ...

  7. Spring Security系列(11)- Security5.0版本Oauth2开放平台环境搭建

    前言 上篇文档,我们了解了OAuth2.0的相关知识,接下来我们搭建一个自己的Oauth2开放平台. 从流程图中,可以看到,后台需要搭建一个认证服务器,负责用户登录.第三方授权等功能,还需要搭建自己的 ...

  8. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至: https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc ...

  9. Spring Boot OAuth 2.0 客户端

    在上一篇<OAuth 2.0 授权码请求>中我们已经可以获取到access_token了,本节将使用客户端来访问远程资源 配置资源服务器 授权服务器负责生成并发放访问令牌(access_t ...

  10. java oauth2登录以及权限_Spring Cloud集成Security OAuth 2.0权限鉴权验证示例

    Spring Cloud集成Security OAuth 2.0权限鉴权验证示例 一.背景说明 目前市场上微服务之间涉及到相互调用的问题,在这个过程中为了验证安全性,需要采用鉴权方式进行管理.目前主流 ...

最新文章

  1. 基于OpenCV提取特定区域
  2. 服务器推送系统安装,搭建PXE服务器,推送安装linux系统
  3. 严格模式 华为_华为千元机虽然好,但是千万别乱选,这三款才是内行人的最爱...
  4. 解决android扫描二维码时,用户禁止权限报错问题
  5. 扩展BootstrapTable的treegrid功能
  6. C#面试题(String和StringBuilder区别)
  7. Sequelize 大于_间接效应值大于1是正常的吗?Q群答疑20200405
  8. 搭建Linux虚拟机并编写简单程序
  9. 自由手写体字帖pdf_20款漂亮的手写字体,可供下载
  10. java tracert_超强的Tracert工具(WinMTR)
  11. 高一计算机算法教案,高中信息技术 算法及其实现 教案
  12. indexOf的用法
  13. 刮刮卡 vue canvas
  14. LinuxMint 桌面美化
  15. 时间序列预测框架--Darts--快速开始(下)
  16. Android 设置来电铃声、通知铃声、闹钟铃声中的坑
  17. wps office 2010 Wps文字文档保存及自动保存方法介绍
  18. 世界第一台计算机是多少位,世界上第一台计算机的字长是多少位?
  19. cct省计算机等级有用吗,省计算机二级有用吗
  20. 046 中值定理之型三(ξ与a,b不可分离;凑微法);型四(ξ η多个中值之case1:找三点 两次拉格朗日)

热门文章

  1. 为什么dubbo使用ZkClient作为zookeeper的客户端
  2. EXTJS Date 的转换格式化字符
  3. [zz]ASP.net中新建Web网站与新建Web应用程序的区别
  4. 普惠科技助力智能升级 天猫精灵新品直指家庭IoT生态
  5. JS弹窗确认Ajax封装方法
  6. 自定义View之组合式
  7. oracle中的多表连接
  8. linux 子shell
  9. Qt Displaying Window教程中无法解析的外部符号错误解决办法
  10. 数据治理管理平台功能模块与特性