【01】认识Shiro

说明

此系列教程就是记录本人跟着官网文档学习的过程,由于本人英文阅读能力一般,所以记录下学习过程方便以后查阅,如果英文阅读能力没有问题建议直接阅读官方文档。

本章节全部内容摘自Apache Shiro官网

简介

Apache Shiro™是一个功能强大且易于使用的 Java 安全框架,它执行身份验证、授权、加密和会话管理。借助 Shiro 易于理解的 API,您可以快速轻松地保护任何应用程序——从最小的移动应用程序到最大的 Web 和企业应用程序。

功能概述

Apache Shiro是一个具有许多特性的综合应用程序安全框架,下图中绿色为Shiro集中精力的主要功能,蓝色为附件功能。

 

 

主要功能

应用程序安全的四个基石:

  • Authentication:身份验证
  • Authorization :授权
  • Cryptography:加密
  • Session Management:会话管理

附加功能

  • Web Support: Web支持
  • Caching: 缓存
  • Concurrency: 多线程并发性
  • Testing: 测试
  • Run As: 运行身份
  • Remember Me: 记住我

Shiro中的三个主要概念

Shiro中主要有三个概念Subject、SecurityManager、Realm,下图是这些组件如何交互的高级概述:

 

 

Subject

即“当前操作用户”。在Shiro中Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。

SecurityManager

它是Shiro框架的核心,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。

Realms

Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。

从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。

核心架构

下图展示了Shiro的核心架构概念:

 

 

上面已经介绍过的Subject、SecurityManger、Realm这三个核心概念,下面介绍下其他部分

  • Authenticator: 身份认证器
  • Authorizer: 权限验证器
  • Session Manager:会话管理器
  • SessionDAO:会话操作接口,在shiro.session.mgt.eis包中,提供了一个抽象类AbstractSessionDAO,和三个实现类CachingSessionDAO(session缓存操作类),MemorySessionDAO(这个应该是使用web的session,未验证),RedisSessionDAO(集成redis管理会话)
  • CacheManager:缓存管理器,下面提供了系统默认缓存,应该是使用jvm缓存操作的类,shiro-ehcache包中提供的ehcache缓存操作EhCacheManager和shiro-redis包中提供了RedisCacheManager redis缓存操作的封装
  • cryptography : shiro提供了相比于java内置加密更简便使用的密码学工具

 

如果想对这些概念有更细致的了解,可以阅读文档:https://www.infoq.com/articles/apache-shiro/

posted @ 2022-07-12 13:25  YF721  阅读(46)  评论(0编辑  收藏  举报