Apache Shiro的架构

Apache Shiro的设计目标是通过其直观易用来简化安全应用的开发, Shiro的核心设计以多数人对应用安全的认识为模型——在某个环境下某人或某物与应用的交互。

应用软件通常是基于用户故事(User Story)而设计,就是说我们经常会根据用户如何与系统交互来设计界面或服务接口。举个例子,“如果用户登录了系统,你会向其显示一个按钮,单击后可以看到他们的帐号信息。如果没有登录,则会显示一个登录按钮。”

这个例子说明应用主要是来满足用户的需求与需要,即使这个“用户”是其他的软件系统而不是人类,你还是要基于谁(或什么)在跟你的软件交互来写代码以反映此行为。

Shiro在设计上体现了上面的概念,既满足了对软件开发人员的直观性,又保留了在实践中的易用性。

概览

Shiro的架构主要有三个顶级概念:Subject, SecurityManagerRealms。图中展示了这些组件间的交互,接下来详细介绍:


详细架构

下面是Shiro的核心架构以及一些简短的介绍:

SecurityManager

因为Shiro的API鼓励开发人员使用以Subject为中心的编程方式,所以大多数情况下不会用到SecurityManager,即使如此,知道如何配置以及SecurityManager的运行机制还是很重要的。

设计

如之前所说,SecurityManager 执行安全(相关)操作并管理应用中所有用户的状态,默认的SecurityManager实现中包含: