`

Shiro 权限基础 一:shiro的整体架构

阅读更多
最近在做一个项目,刚好用到了这个安全框架。我之前也木有接触过,也是边做边学。不过这框架还真不错,比起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
分享到:
评论
2 楼 vahoa.ma 2015-05-14  
Gozs_cs_dn 写道
你这边有没有 shiro 关于 JavaEE 应用的例子, 分享个哇

自己网上找啊,很多。
1 楼 Gozs_cs_dn 2015-04-28  
你这边有没有 shiro 关于 JavaEE 应用的例子, 分享个哇

相关推荐

    将SHIRO作为应用的权限基础一:SHIRO的整体架构.pdf

    在本文中,我们将深入探讨Shiro的整体架构,包括其核心组件、功能和与其他框架的比较。 首先,我们来看看Shiro的三个关键组件: 1. **Subject**:Subject是Shiro中的核心概念,代表了当前参与系统操作的实体,可以...

    由浅入深掌握Shiro权限框架视频教程

    ​ 2、shiro权限框架的核心组件 ​ 3、springboot下shiro的使用 ​ 4、shiro认证鉴权的缓存机制 ​ 5、分布式下使用shrio处理统一会话 ​ 6、密码重试次数,并发登录控制 ​ 7、前后端分离的鉴权方式 ​ 8、...

    ssm-shiro权限管理(二)

    在“ssm-shiro权限管理(二)”中,我们将深入探讨如何在Shiro的基础上进一步优化登录流程、实现缓存管理和动态权限分配。Shiro是一个强大且易用的Java安全框架,提供了认证、授权、会话管理和加密等功能,为应用...

    由浅入深掌握Shiro权限框架资料.zip

    2、shiro权限框架的核心组件;3、springboot下shiro的使用; 4、shiro认证鉴权的缓存机制;5、分布式下使用shrio处理统一会话;6、密码重试次数,并发登录控制;7、前后端分离的鉴权方式;8、建立分布式统一鉴权系统...

    Shiro安全开源框架的介绍

    以上知识点是Java私塾《深入浅出学Shiro》系列精品教程的整体课程概览,通过系统学习,可以深入理解Shiro框架的核心开发知识,并循序渐进地掌握其使用方法,从而提升Java应用的安全性。课程还会提供高质量的培训,并...

    SpringBoot+Shiro权限管理系统脚手架.rar

    SpringBoot+Shiro权限管理系统脚手架是一款基于SpringBoot框架和Apache Shiro安全库构建的权限管理基础架构。它提供了一种快速开发企业级权限管理系统的解决方案,适用于中小型项目,帮助开发者快速搭建具有用户登录...

    将_Shiro_作为应用的权限基础pdf

    ### Shiro作为应用的权限基础:深入解析与实践 #### 整体架构概览 Shiro,作为Java世界中新兴的权限管理框架,以其简洁、灵活且强大的特性,在权限管理和安全控制领域脱颖而出。相较于传统的JAAS(Java ...

    权限系统框架shiro教程

    ### 整体架构和实例 Shiro的教程以实例驱动的方式,逐步介绍了如何使用Shiro完成各种安全相关的任务。包括单个应用的架构设计、模块依赖、以及如何通过配置和编程方式实现安全功能。教程中提供的例子非常实用,覆盖...

    SSM+Shiro+redis实现的权限系统

    SSM+Shiro+Redis 实现的权限系统是一种常见的企业级权限管理解决方案,结合了Spring、SpringMVC、MyBatis三大主流Java框架,并引入Apache Shiro进行安全控制,利用Redis作为缓存来提高系统的性能。下面将详细介绍这...

    shiro用户教程pdf

    具体实现时需要考虑项目的整体架构,包括模块划分、依赖关系等。 #### 23.3 模块关系依赖 为了实现上述功能,需要合理设计各模块之间的依赖关系。 #### 23.4 测试 在实现后还需要进行充分的测试,确保系统稳定...

    Shiro开发文档

    - **部署架构**:描述整体架构设计。 - **项目架构**:各个项目的具体结构和依赖关系。 - **模块关系依赖**:各个模块之间的依赖关系。 - **测试**:测试方案和步骤。 #### 二十四、在线会话管理 - **概念**:...

    shiro-redis集成的spring的web项目

    在这个项目中,Spring负责整体架构的管理,包括依赖注入、AOP(面向切面编程)以及与Shiro和Redis的集成。 **Shiro与Spring的集成** 将Shiro与Spring结合,可以利用Spring的IOC容器管理Shiro的组件,如Realm(领域...

    sssh2shiro

    综合上述技术,sssh2shiro系统通过EasyUI构建用户界面,Struts2处理HTTP请求,Spring作为整体架构的中心,管理各组件并集成其他框架,Hibernate处理数据访问,而Shiro则保障系统的安全性。这样的组合为开发者提供了...

    管理系统系列--【基于shiro的权限管理系统——分布式版】一个用spring、mybatis、redis和shir.zip

    【标题】:“管理系统系列--【基于shiro的权限管理系统——分布式版】”是一个全面的教程,旨在介绍如何构建一个利用Spring、MyBatis、Redis和Shiro技术的分布式权限管理系统。这个项目旨在提供一个安全、高效且可...

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

    本项目整合了多个流行的技术栈,包括Shiro、SpringMVC、Spring、MyBatis和Maven,这些组件共同构成了一个强大的开发基础。以下是对这些技术及其整合应用的详细说明: **Shiro**: Apache Shiro是一个轻量级的安全...

    SPRINGMVC+SHIRO+MYSQL

    1. **Spring**:作为整体架构的胶水层,负责依赖注入(DI)、AOP(面向切面编程)、事务管理等。 2. **SpringMVC**:处理HTTP请求,与后端服务交互。 3. **MySql**:存储和检索数据,通过JDBC接口与应用程序进行通信...

    dubbo+shiro+ssm+zookeeper

    【标题】"dubbo+shiro+ssm+zookeeper"是一个综合性的...这个项目整体上展现了一个基于Dubbo的分布式服务架构,通过Shiro进行安全控制,SSM处理业务逻辑,Zookeeper进行服务的管理和发现,是一个典型的微服务架构示例。

    ssm整合shiro的的demo,附带数据库

    而Apache Shiro则是一个强大的安全框架,用于处理认证、授权、会话管理和加密等安全问题。将两者整合,可以实现更加健壮的Web应用安全控制。 标题中的"ssm整合shiro的的demo"是指一个实例项目,演示了如何将SSM框架...

    spring shiro cas

    4. **Spring Shiro CAS集成**:在Spring Shiro CAS集成中,Spring作为整体应用架构的基石,Shiro处理应用内部的用户权限,而CAS则提供统一的登录验证。开发者通常会在Spring配置中引入Shiro的依赖,并配置Shiro ...

Global site tag (gtag.js) - Google Analytics