0.前言 - 图1

0.前言

Apache Shiro 是一个轻量级的 Java 安全框架,也是 Apache 基金会的顶级开源项目之一。 Shiro 提供了认证(Authentication)、授权(Authorization)、会话管理(Session Management)、缓存(Caching)以及加密(Cryptography)等功能,涵盖了应用安全的各个重要方面。

经过 20 多年的发展,Shiro 已经被广泛应用在各种业务系统中。Shiro 的架构非常灵活,它既可以脱离 Web 容器独立运行,也能与 Spring 无缝集成。在过去的十多年中, Shiro 一直是最流行的 Java 安全框架之一。

虽然当前市面上已经出现了 SpringSecurity 这样的竞争者,但是从阅读源代码的角度看, Shiro 框架依然具有自己独特的优势。首先它的架构非常简洁,与其它的开源组件不存在复杂的依赖关系。其次,经过多年的不断优化, Shiro 的代码和注释质量非常高。所以, Shiro 不仅是一个实用的安全框架,也是一份珍贵的学习资源。在这本书中,我们将会详细分析 Shiro 的架构和源代码,开发者可以充分理解安全领域的关键概念,在使用其它安全框架时也会更加得心应手。

版本约定

本书针对 Shiro v1.12.x 进行源码解析,虽然小版本之间存在细微的差异,但是 Shiro 自从发布以来,核心的架构是稳定的,没有颠覆性的变化。

本书目标

本书旨在全面解析 Apache Shiro 的架构细节、源码实现,帮助读者从理论到实践,深入理解这一强大的安全框架。

通过阅读本书,读者可以逐步深入掌握 Apache Shiro 的各个模块,能够在业务系统中设计和实现健壮的安全体系。

无论你是 Shiro 的新手,还是希望深入了解其内部工作机制的系统架构师,这本书都能为你带来有价值的内容和启发。

读者对象

本书假定读者已经具备了 Java 语言基础,并且对 Spring 框架有一定的了解。

内容结构

本书采用了从局部到整体的内容结构。首先,我们会逐一分析 Shiro 中各个核心组件的架构和源码实现;然后,综合应用这些知识,构建一个基于 Shiro 的 RBAC 权限控制系统;最后,我们站在框架设计者的角度俯瞰全局,宏观地审视 Shiro 的整体架构。

第 1 章 - Shiro 的发展历程

我们从 Shiro 的历史讲起,介绍它的诞生背景及演进过程。Shiro 旨在解决传统 Java EE 安全机制的不足,它的灵活性和强大的适配能力让它迅速成为 Java 领域的安全框架之一。本章会帮助读者理解 Shiro 的设计初衷及其为何能灵活应用于不同的场景。

第 2 章 - 主体、身份与凭据

在 Shiro 中,主体(Subject)是整个框架的核心概念,代表与应用交互的用户或系统实体。本章将详细介绍主体的作用及其与应用的交互方式,深入剖析主体的身份(Principal)和凭据(Credentials),并讲解它们在身份验证、授权和会话管理中的作用。通过学习本章内容,您将了解如何在 Shiro 中管理主体及其关联信息,从而构建更安全和灵活的应用程序。

第 3 章 - 身份验证与授权

身份验证授权是 Shiro 框架最核心的功能,本章分析这两个核心功能的设计和源码实现。

第 4 章 - 领域

Realm 是 Shiro 与底层数据源之间的桥梁,无论数据存储在数据库、LDAP 还是自定义的服务中,Realm 都负责将用户的认证和授权信息从数据源中提取出来。本章将介绍如何自定义和配置 Realm,帮助你理解 Shiro 如何通过 Realm 实现与多个数据源的对接。

第 5 章 - 权限

权限管理是安全系统的核心,本章将介绍 Shiro 中的权限定义方式。重点解析通配符权限表达式,并结合实际场景给出示例代码。Shiro 允许开发者根据需求定义不同粒度的权限表达式,如基于通配符的权限设置,从而使权限管理变得更加灵活和高效。通过本章的学习,读者可以掌握如何灵活定义并管理权限。

第 6 章 - 角色

角色是权限管理中的重要概念,它的本质是权限的集合。通过分配角色,开发者可以将一组权限赋予某个主体,而不需要逐个设置权限。本章会讲解如何定义和管理角色,并解释主体、角色与权限的关联性,帮助你高效地实现用户权限管理。

第 7 章 - 会话

Shiro 的会话管理功能十分强大,它是一个独立的机制,可以不依赖于 Java 原生的 HttpSession 机制。本章将深入探讨 Shiro 的会话管理机制,解释如何通过 Shiro 管理用户的会话状态、会话生命周期以及如何自定义会话管理器。在了解这些内容后,读者可以轻松处理复杂的会话场景。

第 8 章 - 缓存

为了提升系统的性能,Shiro 内置了对缓存的支持。特别是在频繁的权限验证过程中,缓存的引入能极大减少系统的负载。本章详细解析了 Shiro 的缓存架构,并解析了如何与外部缓存组件进行对接。

第 9 章 - 事件总线

事件总线(EventBus)提供了基于事件驱动的编程模型,允许系统在发生特定事件时触发某种动作。本章将介绍 Shiro 事件总线的实现原理,并且解析它的源代码。

第 10 章 - 加密与解密

加密在任何安全框架中都是不可或缺的功能, Shiro 封装了非常好用的加密和解密服务,本章将解析 Shiro 的封装过程。

第 11 章 - Shiro 对 Spring 的支持

Shiro 与 Spring 的集成是现代应用中非常流行的组合,本章将详细解析封装机制和源码。

第 12 章 - 整合实战:基于 Shiro 的 RBAC 权限控制系统

RBAC(基于角色的访问控制)是现代权限管理系统的主流模型,本章将结合实际项目,讲解如何基于 Shiro 框架实现一款通用的 RBAC 权限控制系统,实现对服务端 API 和前端页面组件的权限控制。

第 13 章 - 最终总结: Shiro 的架构

这一章将总结 Shiro 的 HLD(High-Level Design,概要设计) 和 LLD(Low-Level Design,详细设计),让读者站在更高的视角上来观察 Shiro 框架,体验它的设计之美。

资源链接

版权声明

本书基于 CC BY-NC-ND 4.0 许可协议发布,自由转载-非商用-非衍生-保持署名。

版权归大漠穷秋所有 © 2024 ,侵权必究。