1 概要
- Spring是非常流行和成功的Java应用开发框架,Spring Security正是Spring家族中的成员。Spring Security基于Spring框架,提供了一套Web应用安全性的完整解决方案。
- 正如你可能知道的关于安全方面的两个主要区域是"认证"和"授权",一般来说,Web应用的安全性包括认证和授权两个部分,这两点也是Spring Security重要的核心功能。
- 1️⃣用户认证:验证某个用户是否为系统中的合法主体,也就是说用户能够访问该系统。用户认证一般要求用户提供用户名和密码。系统通过校验用户名和密码来完成认证过程。通俗的说就是系统认为用户能够登录。
- 2️⃣用户授权:验证某个用户是否有权限执行某个操作。在一个系统中,不同用户所具有的权限是不同的。比如对一个文件来说,有的用户只能进行读取,而有的用户可以进行修改。一般来说,系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。通俗的说就是系统判断用户是否有权限去做某些事情。
2 历史
-
Spring Security 开始于 2003 年年底,““spring 的 acegi 安全系统”。 起因是 Spring开发者邮件列表中的一个问题,有人提问是否考虑提供一个基于 spring 的安全实现。
-
Spring Security 以“The Acegi Secutity System for Spring” 的名字始于 2013 年晚些时候。一个问题提交到 Spring 开发者的邮件列表,询问是否已经有考虑一个机遇 Spring的安全性社区实现。那时候 Spring 的社区相对较小(相对现在)。实际上 Spring 自己在
2013 年只是一个存在于 ScourseForge 的项目,这个问题的回答是一个值得研究的领域,虽然目前时间的缺乏组织了我们对它的探索。 -
在早些时候,这个项目没有任何自己的验证模块,身份验证过程依赖于容器管理的安全性和 Acegi 安全性。而不是专注于授权。开始的时候这很适合,但是越来越多的用户请求额外的容器支持。容器特定的认证领域接口的基本限制变得清晰。还有一个相关的问题增加新的容器的路径,这是最终用户的困惑和错误配置的常见问题。
-
Acegi 安全特定的认证服务介绍。大约一年后, Acegi 安全正式成为了 Spring 框架的子项目。 1.0.0 最终版本是出版于 2006 -在超过两年半的大量生产的软件项目和数以百计的改进和积极利用社区的贡献。
-
Acegi 安全 2007 年底正式成为了 Spring 组合项目,更名为"Spring Security"。
3 同款产品对比
3.1 Spring Security
-
通过提供完整可扩展的认证和授权支持保护我们的应用程序。
-
Spring Security的特点:
-
1️⃣和Spring的无缝整合。
-
2️⃣全面的权限控制。
-
3️⃣专门为Web开发而设计。
- 旧版本不能脱离web环境使用。
- 新版本对整个框架进行了分层抽取,分成了核心模块和Web模块。单独引入核心模块就可以脱离Web环境。
-
4️⃣重量级。
3.2 Shiro
-
Shiro是Apache旗下的轻量级权限控制框架。
-
Shiro的特点:
-
1️⃣轻量级。Shiro主张的理念是把复杂的事情变简单。针对对性能有更高要求的互联网应用有更好的表现。
-
2️⃣通用性。
- 好处:不局限于Web环境,可以脱离Web环境使用。
- 缺陷:在Web环境下一些特定的需求,需要手动编写代码控制。
3.3 总结
-
Spring Security是Spring家族中的一个安全管理框架,实际上,在Spring Boot出现之前,Spring Security就已经发展了很多年了,但是使用的并不多,安全管理这个领域,一直是Shiro的天下。
-
相对于Shiro,在SSM中整合Spring Security都是比较麻烦的操作,所以,Spring Security的功能虽然比Shiro强大,但是使用反而没有Shiro多。
-
自动有了Spring Boot之后,Spring Boot对于Spring Security提供了自动化配置方案,可以使用更少的配置来使用Spring Security。
-
因此,一般来说,常见的安全管理技术栈的组合是这样的。
- SSM + Shiro。
- Spring Boot/Spring Cloud + Spring Security。
-
以上只是一个推荐的组合而已,如果单纯从技术上来说,无论怎么组合,都是可以运行的。