Apache Shiro理解

一、Apache Shiro简介

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

1. Spring Boot做权限管理

(1)两种方案:Spring SecurityApche Shiro

(2)Spring Security 和 Shiro 的比较如下:

  • Spring Security 是重量级的安全管理框架;Shiro 则是轻量级的安全管理框架
  • Spring Security 概念复杂,配置繁琐;Shiro 概念简单、配置简单
  • Spring Security 功能强大;Shiro 功能简单
  • 2. 认识Apache Shiro

    (1)从Shiro架构图来看:

  •  

    Authentication(认证):用户身份识别,通常被称为用户“登录”

    Authorization(授权):访问控制。比如某个用户是否具有某个操作的使用权限。

    Session Management(会话管理):特定于用户的会话管理,甚至在非web应用程序。

    Cryptography(加密):在对数据源使用加密算法加密的同时,保证易于使用。

    支持特性:

    Web支持:Shiro 提供的 Web 支持 api ,可以很轻松的保护 Web 应用程序的安全。

    缓存:缓存是 Apache Shiro 保证安全操作快速、高效的重要手段。

    并发:Apache Shiro 支持多线程应用程序的并发特性。

    测试:支持单元测试和集成测试,确保代码和预想的一样安全。

    “Run As”:这个功能允许用户假设另一个用户的身份(在许可的前提下)。

    “Remember Me”:跨 session 记录用户的身份,只有在强制需要时才需要登录。

    注意:Shiro 不会去维护用户、维护权限,这些需要我们自己去设计/提供,然后通过相应的接口注入给 Shiro

    (2)从应用来看

    Shiro 架构包含三个主要的理念:Subject,SecurityManager和 Realm。下面的图展示了这些组件如何相互作用

Subject:当前用户,Subject 可以是一个人,但也可以是第三方服务、守护进程帐户、时钟守护任务或者其它–当前和软件交互的任何事件。

SecurityManager:管理所有Subject,SecurityManager 是 Shiro 架构的核心,配合内部安全组件共同组成安全伞。

Realms:用于进行权限信息的验证,我们自己实现。Realm 本质上是一个特定的安全 DAO:它封装与数据源连接的细节,得到Shiro 所需的相关的数据。在配置 Shiro 的时候,你必须指定至少一个Realm 来实现认证(authentication)和/或授权(authorization)。

主要功能

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

Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。
  Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
  SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
  Realm: Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
  从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
  Shiro内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。如果缺省的Realm不能满足需求,你还可以插入代表自定义数据源的自己的Realm实现。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值