Spring Security
架构概览
Spring Security
虽然历史悠久,但是从来没有像今天这样收到开发者这多多的关注。究其原因还是因为分布式架构的盛行。作为Spring
家族中的一员,在和Spring
家族中的其它产品如Spring
、Spring Boot
、Spring Cloud
等进行整合是,Spring Security
拥有众多同类型框架无可比拟的优势。
1.Spring Security
简介
Java
企业级开发生态丰富,无论想做哪方面的功能,都有众多的框架和工具可供选择,以至于SUN
公司在早年不得不制定了很多开发规范,这些规范在今天依然影响着开发者,安全领域也是如此。不同于其它领域的是,在Java
企业级开发中,安全管理方面的框架非常少,一般来说主要有三种方案:
Shiro
Spring Security
- 开发者自己实现
Shiro
本身是一个老牌的安全管理框架,有着众多的优点,例如轻量级、简单、易于集成、可以在Java SE
环境中使用等。不过,在当今分布式架构盛行的时代,Shiro
要适应微服务这种模式就显得有点力不从心了,在微服务面前,Shiro
也无法充分展现自己的优势。
也有开发者选择自己实现安全管理,这一部分人不在少数。但是一个系统的安全,不仅仅局限于登录和权限控制,还需要考虑到各种各样可能存在的网络攻击以及防御策略。从安全角度出发,开发者自己实现安全管理也并非一件容易的事情,只有大公司才有足够的人力、物力去支持这件事情。
Spring Security
作为Spring
家族的一员,在和Spring
家族的其它成员如Spring
、Spring Boot
、Spring Cloud
等进行整合时,具有其它框架无可比拟的优势,同时对OAuth2
有着良好的支持,再加上Spring Cloud
对Spring Security
的不断加持,如退出Spring Cloud Security
,让Spring Security
不知不觉中成为微服务项目的首选安全管理方案。
陈年旧事
Spring Security
最早叫Acegi Security
,这个名称并不代表它和Spring
没有关系,它依然是为Spring
家族成员提供安全支持。Acegi Security
基于Spring
,可以帮助Spring
构建的项目建立丰富的角色与权限管理系统。Acegi Security
虽然强大,但是最为开发者诟病的则是它臃肿繁琐的配置,这一问题最终也遗传给了Spring Security
。
Scegi Security
最终被并入Spring Security
项目中,并于2008
年4
月发布了合并后的第一个版本Spring Security 2.0.0
。目前Spring Security
的最新版本以及到了5.7.1
。
与Shiro
相比,Spring Security
重量级并且配置繁琐。直至今天,依然有很多开发者以此为理由而拒绝了解Spring Security
。其实,自从Spring Boot
框架推出后,就彻底颠覆了传统的Java EE
开发,Spring Boot
的自动装配让很多事情都变得非常容易,包括Spring Security
的配置。在Spring Boot
项目中,开发者只需要引入一个依赖,不需要任何额外的配置,项目中所有接口就会被自动保护起来。在Spring Cloud
中,很多涉及安全管理的问题,也就是一个Spring Security
依赖两行配置就能轻松搞定,在和Spring
家族的产品一起使用时,Spring Security
的优势就非常明显了。