`

Shiro和Spring Security对比

 
阅读更多

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

Shiro架构与功能介绍
1.认证与授权相关基本概念

两个基本的概念

安全实体:系统需要保护的具体对象数据

权限:系统相关的功能操作,例如基本的CRUD

Authentication:身份认证/登录,验证用户是不是拥有相应的身份;

Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;

Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;

Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

Web Support:Web支持,可以非常容易的集成到Web环境;

Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;

Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;

Testing:提供测试支持;

Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;

Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。


2.Shiro四大核心功能:Authentication,Authorization,Cryptography,Session Management

 

Shiro架构

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 关系密切,用来获取用户信息的。
  • Java安全框架Shiro和Spring Security对比

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学习文档

    在IT安全领域,Apache Shiro和Spring Security是两个非常重要的框架,它们主要用于应用程序的安全管理,包括身份验证、授权、会话管理和加密等。本学习文档集合了这两个框架的相关知识,旨在帮助开发者深入理解和...

    Spring Security和Shiro的相同点与不同点整理

    Spring Security和Apache Shiro都是Java领域中广泛使用的安全框架,它们为应用程序提供了强大的身份验证、授权和会话管理功能。虽然两者在很多方面有相似之处,但也有各自的特点和适用场景。 **相同点:** 1. **...

    SpringSecurity从小白到大神.md

    #### Shiro 和 Spring Security 对比分析 为了更全面地了解 Spring Security 的优势与不足,我们将其与 Apache Shiro 进行对比。 **Shiro 特点:** 1. **易于理解的 API** - Shiro 提供了一套简单直观的 Java API...

    spring boot+mybatis+shiro+spring security权限管理视频(网盘地址)

    springMVC+Mybatis+shiro+spring security框架视频教程

    SpringBoot、SpringBoot&Shiro;、SpringCloud、SpringSecurity&SpringSecurityOAuth2;

    循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Cloud、Spring Security & Spring Security OAuth2,博客Spring系列源码

    shiro+spring的Demo

    《Shiro与Spring整合实战详解》 在Java Web开发领域,Apache Shiro和Spring框架的结合使用...在实际开发中,可以根据具体需求进行调整,例如添加自定义的认证和授权策略,或者利用Spring Security进一步增强安全性。

    Spring Security.pdf

    在选择Shiro和Spring Security时,如果项目较小,并且没有使用Spring框架,那么可以考虑使用Shiro。而当项目使用Spring作为基础框架时,配合Spring Security进行权限管理会更加方便。 在搭建开发环境方面,需要准备...

    springcloud脚手架:(扩展:整合微信小程序博客,权限Shiro替换为spring security.zip

    【知识点二】:Shiro与Spring Security对比 Shiro是一个轻量级的安全框架,适合快速开发,提供了身份认证、授权和会话管理等功能。然而,对于复杂的权限控制需求,Shiro的功能相对较弱。相比之下,Spring Security是...

    spring+springmvc+mybatis+shiro+springsecurity+lucene+bootstrap+maven+restful

    Maven项目构建: SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap 源码详细地址:...

    SpringSecurity.zip

    ​ Spring Security:spring家族一员。是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转...

    shiro+spring集成

    Apache Shiro 和 Spring 的集成是企业级 Java 应用中常见的安全框架组合,它们共同为应用程序提供用户认证、授权和会话管理等功能。Shiro 是一个轻量级的安全框架,而 Spring 则是一个全面的后端开发框架。下面将...

    SpringBoot2.7整合SpringSecurity+Jwt+Redis+MySQL+MyBatis完整项目代码

    在这个项目中,Spring Security负责身份验证和授权,为API提供安全访问控制。用户登录后,Spring Security会生成一个JWT令牌,用于后续请求的身份验证。 3. **JWT**: JWT是一种轻量级的身份认证和授权机制,通常...

    springsecurity,shiro

    Spring Security和Apache Shiro都是Java领域内的主流安全框架,它们提供了一整套解决方案来保护应用程序免受未经授权的访问和攻击。让我们详细探讨这两个框架的核心概念、功能以及它们如何帮助开发者实现安全性。 ...

    Java企业级权限系统,Spring Security,Apache Shiro,Spring MVC,RBAC模型

    Java企业级权限系统,可供学习Spring Security权限框架、 Apache Shiro权限框架、Spring MVC、 RBAC模型、模块开发等等,内有详细视频教程,由于上传大小限制,可联系免费获取!

    Spring Security实现RBAC权限管理_RBAC_spring_spring security_springclou

    在企业应用中,认证和授权是非常重要的一部分内容,业界最出名的两个框架就是大名鼎鼎的 Shiro和Spring Security。由于Spring Boot非常的流行,选择Spring Security做认证和授权的 人越来越多,今天我们就来看看用...

    shiro+SpringMVC+Spring+mybatis+maven 整合项目最新

    Shiro和Spring Security可以提供强大的安全防护,SpringMVC处理Web请求,Spring作为整体框架协调各个部分,而MyBatis则负责数据的存取。Maven则在整个开发流程中扮演着“胶水”的角色,确保所有组件协同工作。这种...

    基于SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue的前后端商城系统源码

    yshop基于当前流行技术组合的前后端分离商城系统: SpringBoot2+MybatisPlus+SpringSecurity+jwt+redis+Vue的前后端分离的商城系统, 包含分类、sku、运费模板、素材库、小程序直播、拼团、砍价、商户管理、 秒杀、...

    2016 page220 Spring Security Essentials - Nanda Nachimuthu.pdf )

    Spring Security提供了与其他安全框架(如Apache Shiro、Jasig CAS)的集成支持,为开发者提供了更多的选择和灵活性。 总之,Spring Security作为一个全面的安全解决方案,为Java企业级应用提供了非常丰富的安全...

    Shiro整合Spring

    比如,定义了 Spring MVC 的拦截器,或者包含 Shiro Filter 的配置,以及如何将 Shiro 的认证和授权信息与 Spring Security 结合使用的细节。 4. **实战应用**:在实际开发中,我们可能会定义自定义的 Realm 类,...

    Spring Boot+Apache Shiro+Spring MVC+MyBatis+Quartz+Druid DEMO

    这是一个基于Spring Boot、Apache Shiro、Spring MVC、MyBatis、Quartz和Druid的数据源管理框架的示例项目,名为"renren-security"。这个DEMO提供了完整的权限管理和任务调度解决方案,下面是这些技术栈的核心知识点...

Global site tag (gtag.js) - Google Analytics