Shiro和Spring Security是Java中常用的两种安全认证框架,安全认证主要包括认证授权鉴权两部分。
认证指应用程序验证一个用户信息的过程,应用程序需要确认当前的用户是否是合法的用户,用户会向应用程序提供两部分数据:身份信息和凭据,当凭据匹配应用程序记录的当前身份信息对应的凭据时,认为是合法用户。
授权鉴权指访问控制,即控制用户对应用程序中资源的访问。通常通过角色与权限来控制访问。先赋予用户以对应的角色与权限,再在访问资源时对用户的角色与权限进行检查,根据检查结果决定是否能够访问。

shiro

shiro是Apache下的一个安全认证框架
shiro将日常安全认证的功能抽取出来形成独立的模块,它的主要架构如下图:

subject主体指当前与应用程序交互的对象,这个对象可以是用户,也可以是任何一个与应用程序交互的抽象概念。在shiro中,我们可以在需要的地方获取当前subject对象,通过操作subject对象完成认证和授权鉴权。
securityManager安全管理器是所有功能的执行者,它管理着所有的subject。我们操作subject对象时,实际上是由安全管理器来执行的。
realm是shiro与连接安全数据的连接器,可以认为是针对安全数据的DAO。当安全管理器需要认证或者授权时,通过realm获取对应的信息,完成认证和授权。
在使用shiro时,我们需要先配置realm,准备好安全数据,再配置securityManager关联realm。之后就可以在需要的地方获取当前的subject对象,调用相关方法完成认证和授权鉴权。

spring security

spring security是spring生态链中的一款安全认证框架
spring security的实现主要依赖于spring提供的DelegatingFilterProxy,DelegatingFilterProxy允许将spring中注入的bean加入到servlet容器的过滤链中

spring security基于spring,通过向spring中注入各种过滤器bean完成对用户的认证和授权鉴权,当请求触发对应的过滤器时,执行对应的逻辑,当认证或鉴权失败时,由对应的异常处理器处理。此外,spring security通过UserDetailService来获取安全数据。
在使用spring整合spring security时,我们主要关注各个关键过滤器和异常处理器的配置,例如过滤的规则、未认证、认证失败、鉴权失败等,同时构建UserDetailService实现类提供安全数据,基本的安全认证功能即可生效。


shiro与spring security最大的区别是shiro为一个独立的模块,使用灵活,但会造成侵入式的设计;而spring security依赖于spring的过滤器代理机制,与spring绑定,不够灵活,但不是侵入式的。此外,shiro与spring security都支持密码加密,shiro支持会话管理,spring security提供对常见漏洞的保护(例如CSRF)

Shiro和Spring Security的简单对比相关推荐

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

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

  2. Shiro和Spring Security对比

    原文地址:Shiro和Spring Security对比_shiro和springsecurity对比_liyuejin的博客-CSDN博客 一.Shiro简介 Apache Shiro是Java的一 ...

  3. 使用Spring Security进行简单身份验证

    朋友不允许朋友写用户身份验证. 厌倦了管理自己的用户? 立即尝试Okta的API和Java SDK. 在几分钟之内即可对任何应用程序中的用户进行身份验证,管理和保护. 身份验证对于除了最基本的Web应 ...

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

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

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

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

  6. SpringBoot 整合Spring Security(简单版)

    1 写在前面 关于spring security的介绍,网上一大堆,这里就不介绍了,这里直接使用springboot开始整合 2 整个流程 spring security授权和认证的流程大致和shir ...

  7. Spring Security最简单全面教程(带Demo)

    一.Spring Security简介 Spring Security是为基于Spring的应用程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决方案,能够在web请求级别和方法调用级别处理 ...

  8. Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式1

    0. 前言 之前帐号认证用过自己写的进行匹配,现在要学会使用标准了.准备了解和使用这个OAuth2.0协议. 1. 配置 1.1 配置pom.xml 有些可能会用不到,我把我项目中用到的所有包都贴出来 ...

  9. Spring Security + JWT简单配置

    本人使用版本为 springboot 2.7.1 ,jdk17 项目结构文件如图所示: 每个文件的介绍 1,pom.xml的依赖: 2,CorsFilter:由于项目采用前后端分离,则涉及到跨域问题, ...

最新文章

  1. KahanSummation算法
  2. 四张图揭秘中国AI人才现状
  3. 【数学与算法】支持向量机、线性判别 详细数学原理
  4. java webpack_webpack将对象暴露为全局
  5. kafka中的groupid
  6. 信息竞赛进阶指南--中缀表达式转后缀表达式并求值(模板)
  7. 如何改变X:\Users\XXX的用户名称
  8. PHP中的正则表达式函数preg_
  9. ElasticSearch API文档查看
  10. 异常:The supplied data appears to be in the Office 2007+ XML
  11. getX,getRawX,getWidth,getTranslationX等的区别
  12. 深度学习之VGG19模型简介
  13. 教你如何清除计算机病毒
  14. ubuntu16.04系统下配置caffe的GPU环境,训练mobileNet-SSD并在EAIDK-310嵌入式上推理
  15. 【软件】[Qt\C++] 冒泡、希尔、堆排、基数、快排 5种排序Gui界面带对比——使用Qt实现
  16. hdu 5148 树形dp,分组背包
  17. SQL Server错误代码大全及解释(留着备用)
  18. 腾讯云简单使用-Python
  19. html网页运行出现404错误,网页无法进入404错误是什么情况?怎么办? 爱问知识人...
  20. 便携式计算机是笔记本电脑吗,便携式笔记本电脑推荐

热门文章

  1. 基于LSB的信息隐藏
  2. 教你一招永久去除WPS广告
  3. 微软官方知识:了解 Office 二进制文件格式
  4. Android源码配置默认输入法
  5. 解决高版本MATLAB robotics toolbox在plot/teach时报错问题
  6. Win10 笔记本 解决屏幕忽明忽暗,自动降低亮度问题
  7. python大数据可视化坐标轴的定制与绘制3D图表及统计地图
  8. POJ3349-Snowflake Snow Snowflakes
  9. Mybatis初学一个问题困扰一下午 The error may exist in com/.........
  10. 二叉树的自下而上、从右到左的层次遍历算法实现