思考与总结:安全框架对比 shiro vs spring-security

如果你还不了解shiro或security,建议查看如下文章: 

安全框架shiro的基础知识_陈海龙的格物之路-CSDN博客通过阅读这篇文章,你可以了解到shiro是什么、shiro的架构、shiro如何支持web环境的安全验证等。https://blog.csdn.net/chl87783255/article/details/120434130SpringSecurity-设计思想_陈海龙的格物之路-CSDN博客系统安全可分为身份认证和授权验证两个部分,spring security提供了这两种能力,本文讲述security的设计思路。https://blog.csdn.net/chl87783255/article/details/120272688

目标

shiro和spring-security都是安全框架,两者有哪些相同点和差异呢?结合自己的了解,在多个维度进行了对比。

使用场景差异

  • security 仅支持web场景
  • shiro 支持web和非web场景

与spring关系差异

  • security 属于spring且是spring提供的一个能力
  • shiro 属于apache,与spring无关,可与spring整合

均提供扩展性

  • 如何获取用户信息、如何获取权限信息等都可自定义 

web场景对比

实现原理有相似之处

  • security filter (aop)
  • shiro filter (aop) 
  • 责任链

request合法性校验差异

  • shiro仅针对url path进行检查,拒绝分号、反斜杆、非ascii码字符
  • security针对header、url path、param等进行检查 

防止攻击的能力差异

  • shiro 没有提供
  • security 针对常见攻击提供支持 

身份认证

  • 均支持,支持自定义login-url,开发者仅需提供获取当事人的方式、密码处理方式
  • 均有提供身份认证成功后置处理扩展点
  • shiro没有提供csrfToken 

授权验证

均支持配置形式

均支持配置形式,但是只适合角色\权限较少的系统。 

在SpringBean的方法上使用授权验证的注解

  • shiro支持(RequiresPermissions\RequiresRoles)
  • security支持(Prexxx\Postxxx)

硬编码方式

  • shiro支持,直接调用subjectAPI。
  • security未提供API,但开发者可自己实现(获取userDetails,验证权限) 

统一进行url授权验证

  • 均为提供现成实现
  • security 可自定义访问控制管理器和投票者
  • shiro没有提供扩展,需要自己写filter或interceptor,其中使用subjectAPI。 

支持权限粒度差异

  • security,支持url粒度、方法粒度、数据粒度。
  • shiro,支持url粒度、方法粒度、数据粒度。 

选型

一切从系统出发:是否使用spring,是否web系统,是否为controller方法维度的权限粒度,是否需要防止网络攻击?

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值