Shiro和Spring Security对比

一、Shiro简介

1.什么是Shiro?

Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份 认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。

2.Shiro 的特点

Shiro 是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加 密。如下是它所具有的特点:

  • 易于理解的 Java Security API;
  • 简单的身份认证(登录),支持多种数据源(LDAP,JDBC 等);
  • 对角色的简单的签权(访问控制),也支持细粒度的鉴权;
  • 支持一级缓存,以提升应用程序的性能;
  • 内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;
  • 异构客户端会话访问;
  • 非常简单的加密 API;
  • 不跟任何的框架或者容器捆绑,可以独立运行。

 3.核心组件

 流程如下:

  1. Shiro把用户的数据封装成标识token,token一般封装着用户名,密码等信息
  2. 使用Subject门面获取到封装着用户的数据的标识token
  3. Subject把标识token交给SecurityManager,在SecurityManager安全中心中,SecurityManager 把标识token委托给认证器Authenticator进行身份验证。认证器的作用一般是用来指定如何验证,它规定本次认证用到哪些Realm
  4. 认证器Authenticator将传入的标识token,与数据源Realm对比,验证token是否合法

二、 Spring Security简介

1.什么是Spring Security?

Spring Security是一个功能强大且高度可定制的,主要负责为Java程序提供声明式的身份验证和访问控制的安全框架。其前身是Acegi Security,后来被收纳为Spring的一个子项目,并更名为了Spring Security。Spring Security的底层主要是基于 Spring AOP 和 Servlet 过滤器来实现安全控制,它提供了全面的安全解决方案,同时授权粒度可以在Web请求级和方法调用级来处理身份确认和授权。

2.Spring Security功能

  • 认证: 解决 "你是谁" 的问题-->解决的是系统中是否有这个“用户”(用户/设备/系统)的问题,也就是我们常说的“登录”。
  • 授权: 权限控制/鉴别,解决的是系统中某个用户能够访问哪些资源,即“你能干什么”的问题。Spring Security 支持基于 URL 的请求授权、方法访问授权、对象访问授权。
  • 防护攻击: 防止身份伪造等各种攻击手段。
  • 加密功能: 对密码进行加密、匹配等。
  • 会话功能: 对Session进行管理。
  • RememberMe功能: 实现“记住我”功能,并可以实现token令牌持久化。

三、Spring Security 与 Shiro对比 

1. Spring Security优点

Spring Security基于Spring开发,所以Spring Security与Spring更契合;

Spring Security功能比Shiro更加强大,尤其是在安全防护方面;

Spring Security社区资源比Shiro更加丰富;

Spring Boot/Spring Cloud环境中,更容易集成Spring Security;

Spring Security 具备良好的扩展性,可以满足自定义的要求;

Spring Security对 OAuth2框架支持很好,而Shiro则对 OAuth2 支持不够。

2. Spring Security缺点

Shiro是一个轻量、简单、易于集成的老牌安全框架,而且使用流程简单清晰;反观Spring Security,则属于是重量级、配置繁琐、学习使用门槛高的安全框架。

Shiro依赖性低,不需要任何框架和容器,可以独立运行,而Spring Security需要依赖Spring容器。

3. 现在常见的安全技术栈

在目前的Java体系中,我们在进行关于安全方面的开发时,到底该选择Shiro还是Spring Security哪个框架呢?其实我们可以进行如下搭配:

  • SSM + Shiro
  • Spring Boot/Spring Cloud + Spring Security

就目前而言,Shiro 最大的问题在于和 Spring 家族的产品进行整合时较为不便。在Spring Boot 推出的很长一段时间里,Shiro 都没有提供相应的 starter,后来虽然有一个 shiro-spring-boot-web-starter 出来,但配置并没有简化多少。所以在 Spring Boot/Spring Cloud 技术栈的微服务项目中,Shiro 几乎不存在优势。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值