Shiro是什么

Apache Shiro是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。

Apache Shiro的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应该尽可能掩盖复杂的地方,露出一个干净而直观的API,来简化开发人员在使他们的应用程序安全上的努力。

以上来源于官方介绍:http://shiro.apache.org


Shiro可以做什么

Shiro常用于身份验证,通俗来说就是一个人登录一个网站时,哪些页面可以访问,哪些页面不能访问,Shiro控制的就是这个人访问的权限。

下面这幅图可以了解Shiro的特性:


可以看出shiro除了基本的认证,授权,会话管理,加密之外,还有许多额外的特性。


Shiro的架构

从大的角度来看,Shiro主要有三个概念:Subject,SecurityManager,Realm


它们的交互如下图所示:

1、Subject:翻译为主角,当前参与应用安全部分的主角。可以是用户,可以是第三方服务,可以是cron 任务,或者任何东西。主要指一个正在与当前软件交互的东西。所有Subject都需要SecurityManager,当你与Subject进行交互,这些交互行为实际上被转换为与SecurityManager的交互;


2、SecurityManager:安全管理员,Shiro架构的核心,它就像Shiro内部所有原件的保护伞。然而一旦配置了SecurityManager,SecurityManager就用到的比较少,开发者大部分时间都花在Subject上面。与Subject进行交互的时候,实际上是SecurityManager在背后运行Subject来做一些安全操作;

3、Realms:Realms作为Shiro和应用的连接,当需要与安全数据交互的时候,像用户账户,或者访问控制,Shiro就从一个或多个Realms中查找。Shiro提供了一些可以直接使用的Realms,如果默认的Realms不能满足你的需求,也可以定制自己的Realms。