【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/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现