原文地址:Shiro和Spring Security对比_shiro和springsecurity对比_liyuejin的博客-CSDN博客

一、Shiro简介

Apache Shiro是Java的一个安全框架。目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Security,可能没有Spring Security做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的Shiro就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。

二、Shiro架构与功能介绍

2.1 认证与授权相关基本概念

两个基本的概念

  • 安全实体:系统需要保护的具体对象数据
  • 权限:系统相关的功能操作,例如基本的CRUD
  • Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
  • Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
  • Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
  • Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
  • Web Support:Web支持,可以非常容易的集成到Web环境;
  • Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
  • Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
  • Testing:提供测试支持;
  • Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
  • Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

2.2 Shiro四大核心功能:

Authentication,Authorization,Cryptography,Session Management

Shiro架构

2.3 Shiro三个核心组件:Subject, SecurityManager 和 Realms.

Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;

SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他组件进行交互,如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器;

Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。

三、Spring Security简介

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。它是一个轻量级的安全框架,它确保基于Spring的应用程序提供身份验证和授权支持。它与Spring MVC有很好地集成,并配备了流行的安全算法实现捆绑在一起。安全主要包括两个操作“认证”与“验证”(有时候也会叫做权限控制)。“认证”是为用户建立一个其声明的角色的过程,这个角色可以一个用户、一个设备或者一个系统。“验证”指的是一个用户在你的应用中能够执行某个操作。在到达授权判断之前,角色已经在身份认证过程中建立了。

它的设计是基于框架内大范围的依赖的,可以被划分为以下几块。

  • Web/Http 安全:这是最复杂的部分。通过建立 filter 和相关的 service bean 来实现框架的认证机制。当访问受保护的 URL 时会将用户引入登录界面或者是错误提示界面。

  • 业务对象或者方法的安全:控制方法访问权限的。

  • AuthenticationManager:处理来自于框架其他部分的认证请求。

  • AccessDecisionManager:为 Web 或方法的安全提供访问决策。会注册一个默认的,但是我们也可以通过普通 bean 注册的方式使用自定义的 AccessDecisionManager。

  • AuthenticationProvider:AuthenticationManager 是通过它来认证用户的。

  • UserDetailsService:跟 AuthenticationProvider 关系密切,用来获取用户信息的。

四、Shiro和Spring Security比较

  1. Shiro比Spring更容易使用,实现和最重要的理解

  2. Spring Security更加知名的唯一原因是因为品牌名称

  3. “Spring”以简单而闻名,但讽刺的是很多人发现安装Spring Security很难

  4. 然而,Spring Security却有更好的社区支持

  5. Apache Shiro在Spring Security处理密码学方面有一个额外的模块

  6. Spring-security 对spring 结合较好,如果项目用的springmvc ,使用起来很方便。但是如果项目中没有用到spring,那就不要考虑它了。

  7. Shiro 功能强大、且 简单、灵活。是Apache 下的项目比较可靠,且不跟任何的框架或者容器绑定,可以独立运行

Shiro和Spring Security对比相关推荐

  1. Shiro和Spring Security的简单对比

    Shiro和Spring Security是Java中常用的两种安全认证框架,安全认证主要包括认证和授权鉴权两部分. 认证指应用程序验证一个用户信息的过程,应用程序需要确认当前的用户是否是合法的用户, ...

  2. security框架工作笔记001--- Shiro和Spring Security对比_智慧城市项目中选型用Spring Security

    JAVA技术交流QQ群:170933152 Shiro简介 Apache Shiro是Java的一个安全框架.目前,使用Apache Shiro的人越来越多,因为它相当简单,对比Spring Secu ...

  3. 【开发技术】2万字分析shiro、spring security两大安全框架,spring session,OAuth2 入门级教程

    SpringBoot 内容管理 Shiro 创建demo 用户[用户包括token ,角色,权限] :fist_oncoming: Shiro配置 配置5个基本对象 + 3额外对象 路径匹配有先后 : ...

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

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

  5. Apache Shiro和Spring Security的详细对比

    参考资料: 1)Apache Shiro Apache Shiro:http://shiro.apache.org/ 在Web项目中应用 Apache Shiro:http://www.ibm.com ...

  6. Springboot + Spring Security 实现前后端分离登录认证及权限控制

    Spring Security简介 Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展 ...

  7. Spring Security 和 Shiro 该如何选择?

    来源 | https://blog.csdn.net/weixin_38405253/article/details/115301113 要知道Shiro和Spring Security该如何选择,首 ...

  8. 在 SpringBoot 项目中,Spring Security 和 Shiro 该如何选择?

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 要知道Shiro和Sprin ...

  9. 【200期】面试官问:Spring Security 和 Shiro 该如何选择?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方有惊喜,留言必回,有问必答! 每天 08:15 更新文章,每天进步一点点... ...

最新文章

  1. HDU - 6305 RMQ Similar Sequence(笛卡尔树)
  2. Theano2.1.1-基础知识之准备工作
  3. java垃圾回收根对象_Java垃圾回收怎么理解?
  4. vccode运行调试python_VSCODE安装以及使用Python运行调试代码的简单记录
  5. php图片长宽处理,PHP重置JPG图片尺寸的函数
  6. 强制删除正在运行的文件_win10系统上怎么强制删除文件
  7. pic1路AD转换c语言,pic单片机的ad转换(实例解析)
  8. 在线服务器和客户端聊天,实验三、客户端和服务器能实现简单的聊天功能
  9. NVisionXR_iOS教程十二 —— 多图识别
  10. Java中的静态方法和单例模式比较
  11. 深入浅出Fetch-API【转】
  12. SRAM,SDRAM,网卡
  13. Java基础-刘意经典版DAY1
  14. 数理统计学:世纪末的回顾与展望(陈希孺)
  15. adobe bridge cs6怎么卸载_怎么取消adobe bridge cs6 更新
  16. libmodbus使用
  17. 迪文屏K600+ 数据库的读写操作
  18. 虚拟服务器 emule,emule服务器
  19. Spring注解开发配置
  20. 【zookeeper】Apache curator优点介绍

热门文章

  1. Linux搭建ElasticSearch(ES)集群并设置密码登录
  2. 【华为OD机试B卷,GO题解独家】最佳植树距离、种树
  3. 错误代码:0x80070490
  4. 岳云鹏被骗?买128G手机实际只有112G
  5. 异常处理---Throwable
  6. u 打造便携式linux 盘_UNetbootin制作U盘Linux
  7. gis坐标|如何将excel中的坐标导入gis
  8. (可下载)《中国城市数字经济发展报告》发布,北上深成第1梯队
  9. Cocos 知乎官方账号已开通!
  10. GeneXus学习记录——创建KB(KnowledgeBase/知识库)