Shiro学习笔记(1)-Shiro简介

时光总嘲笑我的痴心妄想 提交于 2019-11-30 13:16:55

什么是Shiro

简单地来说,Apache Shiro是Java的一个安全框架。

Shiro能实现的功能

Shiro功能图

(1)主要特性:

  • Authentication: 验证用户身份,通常指登录。
  • Authorization :控制权限
  • Session Management :会话管理,用户登录成功后相关信息保存在会话中。可以是Web环境也可以是Java环境。
  • Cryptography:加密

(2)额外特性:

  • Web Support:提供web应用支持,可以很方便集成到web环境
  • Caching: 缓存,来保存操作的高效性。
  • Concurrency: 支持多线程应用
  • Testing: 支持单元测试
  • Run As: 允许一个用户假装成另一个用户进行操作
  • Remember Me : 记住用户的身份信息

Shiro架构

从应用角度查看Shiro是如何工作的

Shiro工作图

从图片上可以看出来,Shiro有三个重要的概念:

  1. Subject: 主体,指的是当前和应用交互的用户,通常是人也可以指第三方服务或者后台进程等系列应用。所有的Subject都会绑定到SecurityManager,所以当我们和Subject进行交互时,其实真正作用的是SecurityManager。
  2. SecurityManager:SecurityManager 是Shiro架构核心,它将所有的内部安全组件组合在一起。它充当一种引导者的角色,负责所有与安全有关的事务。
  3. Realm: 域,充当和具体的安全数据交互的角色,从某种意义上来说,其实就是DAO层。SecurityManager管理者Realm进行身份验证或者权限验证。

具体架构

详细底层架构图

  1. Subject:和当前应用交互的主体(可以是人、系统…)
  2. SecurityManager : Shiro的核心,管理所有的Subject,保证所有的组件成功运行。
  3. Authenticator :认证器,负责主体身份认证。 Authentication Strategy是Authenticator中用来对认证方式进行定义的部分,决定是所有的Realm都需要通过或者其他认证方式。
  4. Authorizer :授权器,用来对主体访问某个资源进行权限认证。
  5. SessionManager :会话管理器,用来管理Session的生命周期(和Servlet的Session类似) ,无论是在Web环境还是普通环境,Shiro都会创建一个Session。SessionDAO 用来对Session进行持久化操作。
  6. CacheManager :用来管理缓存周期,用来对存放的认证或者授权等信息进行缓存管理。
  7. Cryptography: 加密模块,Shiro提供了一天简单易用的Api。
  8. Realm:域,充当和具体的安全数据交互的角色。和安全数据进行交互。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!