最近在做一个项目,刚好用到了这个安全框架。我之前也木有接触过,也是边做边学。不过这框架还真不错,比起Spring Security那是简单多了。所以推荐给大家!
下面看看这个安全框架吧
一、什么是Shiro
Shiro是一个强大而灵活的开源安全框架,能够非常清晰的处理认证、授权、管理会话以及密码加密。如下是它所具有的特点:
简单的身份认证(登录),支持多种数据源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
对角色的简单的授权控制,支持细粒度的签权;
支持一级缓存,以提升应用程序的性能;
内置的基于 POJO 企业会话管理,适用于 Web 以及非 Web 的环境;
不跟任何的框架或者容器捆绑,可以独立运行。
Spring Security —目前是 Java安全框架领域当之无愧的老大,已经非常成熟了;如果使用 Spring框架,可以首选 Spring Security,但是对于单应用来说,Shiro更显简单方便。
二、Shiro的架构介绍
首先,来了解一下Shiro的三个核心组件:Subject,SecurityManager 和 Realms. 如下图:
Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(DaemonAccount)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。
Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
SecurityManager:它是Shiro框架的核心,这是一个 Façade接口,=Authenticator+ Authorizer +SessionFactory,Shiro通过SecurityManager来管理内部组件,并通过它来提供安全管理的各种服务。
Realm:Realm充当了Shiro与应用安全数据间的“桥梁”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。
所以在配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。Shiro内置了可以连接大量安全数据源的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。
以常用的JdbcRealm 为例,其继承链如下:
Shiro完整架构图:
除前文所讲Subject、SecurityManager、Realm三个核心组件外,Shiro主要组件还包括:
Authenticator :认证
认证就是核实用户身份的过程。对“Whoare you ?”进行核实。通常涉及用户名和密码。
这个组件负责收集principals 和 credentials,并将它们提交给应用系统。如果提交的 credentials 跟应用系统中提供的 credentials吻合,就能够继续访问,否则需要重新提交 principals 和 credentials,或者直接终止访问。
Authorizer :授权
授权实质上就是访问控制。身份份验证通过后,由这个组件控制用户能够访问应用中的哪些内容,比如资源、Web页面等等。
Shiro采用“基于 Realm”的方法,即用户(又称 Subject)、用户组、角色和 permission 的聚合体。
SessionManager:
Shiro为任何应用提供了一个会话编程范式,保证了独立性,对容器没有依赖。所以,对于使用会话的应用开发来说,不必被迫使用Servlet或EJB容器了。或者,如果正在使用这些容器,现在也可以选择在任何层统一一致的使用会话API,取代Servlet或EJB机制。
CacheManager:对Shiro的其他组件提供缓存支持。
了解这个架构图,主要对shiro的整体进行把控
[size=x-large][/size]
- 大小: 38 KB
- 大小: 32.8 KB
- 大小: 144.7 KB
分享到:
相关推荐
在本文中,我们将深入探讨Shiro的整体架构,包括其核心组件、功能和与其他框架的比较。 首先,我们来看看Shiro的三个关键组件: 1. **Subject**:Subject是Shiro中的核心概念,代表了当前参与系统操作的实体,可以...
2、shiro权限框架的核心组件 3、springboot下shiro的使用 4、shiro认证鉴权的缓存机制 5、分布式下使用shrio处理统一会话 6、密码重试次数,并发登录控制 7、前后端分离的鉴权方式 8、...
在“ssm-shiro权限管理(二)”中,我们将深入探讨如何在Shiro的基础上进一步优化登录流程、实现缓存管理和动态权限分配。Shiro是一个强大且易用的Java安全框架,提供了认证、授权、会话管理和加密等功能,为应用...
2、shiro权限框架的核心组件;3、springboot下shiro的使用; 4、shiro认证鉴权的缓存机制;5、分布式下使用shrio处理统一会话;6、密码重试次数,并发登录控制;7、前后端分离的鉴权方式;8、建立分布式统一鉴权系统...
以上知识点是Java私塾《深入浅出学Shiro》系列精品教程的整体课程概览,通过系统学习,可以深入理解Shiro框架的核心开发知识,并循序渐进地掌握其使用方法,从而提升Java应用的安全性。课程还会提供高质量的培训,并...
SpringBoot+Shiro权限管理系统脚手架是一款基于SpringBoot框架和Apache Shiro安全库构建的权限管理基础架构。它提供了一种快速开发企业级权限管理系统的解决方案,适用于中小型项目,帮助开发者快速搭建具有用户登录...
### Shiro作为应用的权限基础:深入解析与实践 #### 整体架构概览 Shiro,作为Java世界中新兴的权限管理框架,以其简洁、灵活且强大的特性,在权限管理和安全控制领域脱颖而出。相较于传统的JAAS(Java ...
### 整体架构和实例 Shiro的教程以实例驱动的方式,逐步介绍了如何使用Shiro完成各种安全相关的任务。包括单个应用的架构设计、模块依赖、以及如何通过配置和编程方式实现安全功能。教程中提供的例子非常实用,覆盖...
SSM+Shiro+Redis 实现的权限系统是一种常见的企业级权限管理解决方案,结合了Spring、SpringMVC、MyBatis三大主流Java框架,并引入Apache Shiro进行安全控制,利用Redis作为缓存来提高系统的性能。下面将详细介绍这...
具体实现时需要考虑项目的整体架构,包括模块划分、依赖关系等。 #### 23.3 模块关系依赖 为了实现上述功能,需要合理设计各模块之间的依赖关系。 #### 23.4 测试 在实现后还需要进行充分的测试,确保系统稳定...
- **部署架构**:描述整体架构设计。 - **项目架构**:各个项目的具体结构和依赖关系。 - **模块关系依赖**:各个模块之间的依赖关系。 - **测试**:测试方案和步骤。 #### 二十四、在线会话管理 - **概念**:...
在这个项目中,Spring负责整体架构的管理,包括依赖注入、AOP(面向切面编程)以及与Shiro和Redis的集成。 **Shiro与Spring的集成** 将Shiro与Spring结合,可以利用Spring的IOC容器管理Shiro的组件,如Realm(领域...
综合上述技术,sssh2shiro系统通过EasyUI构建用户界面,Struts2处理HTTP请求,Spring作为整体架构的中心,管理各组件并集成其他框架,Hibernate处理数据访问,而Shiro则保障系统的安全性。这样的组合为开发者提供了...
【标题】:“管理系统系列--【基于shiro的权限管理系统——分布式版】”是一个全面的教程,旨在介绍如何构建一个利用Spring、MyBatis、Redis和Shiro技术的分布式权限管理系统。这个项目旨在提供一个安全、高效且可...
本项目整合了多个流行的技术栈,包括Shiro、SpringMVC、Spring、MyBatis和Maven,这些组件共同构成了一个强大的开发基础。以下是对这些技术及其整合应用的详细说明: **Shiro**: Apache Shiro是一个轻量级的安全...
1. **Spring**:作为整体架构的胶水层,负责依赖注入(DI)、AOP(面向切面编程)、事务管理等。 2. **SpringMVC**:处理HTTP请求,与后端服务交互。 3. **MySql**:存储和检索数据,通过JDBC接口与应用程序进行通信...
【标题】"dubbo+shiro+ssm+zookeeper"是一个综合性的...这个项目整体上展现了一个基于Dubbo的分布式服务架构,通过Shiro进行安全控制,SSM处理业务逻辑,Zookeeper进行服务的管理和发现,是一个典型的微服务架构示例。
而Apache Shiro则是一个强大的安全框架,用于处理认证、授权、会话管理和加密等安全问题。将两者整合,可以实现更加健壮的Web应用安全控制。 标题中的"ssm整合shiro的的demo"是指一个实例项目,演示了如何将SSM框架...
4. **Spring Shiro CAS集成**:在Spring Shiro CAS集成中,Spring作为整体应用架构的基石,Shiro处理应用内部的用户权限,而CAS则提供统一的登录验证。开发者通常会在Spring配置中引入Shiro的依赖,并配置Shiro ...