Shiro架构解析
Apache Shiro是一个强大而灵活的开源安全框架。它干净利落的处理身份认证,授权,企业会话管理喝加密。Shiro的首要目标是易于使用和理解
Shiro可以做什么?
验证用户身份
对用户访问进行控制
在任何环境下使用Session API
在身份验证或者访问控制期间或者在会话的生命周期,对事件作出反应
聚集一个或者多个用户安全数据的数据源,并且作为一个单一的符合用户视图
启用单点登录SSO
为没有关联到登录的用户提供Remember Me功能
API易于使用
Shiro特性
Apache Shiro是一个拥有许多功能的综合性程序安全框架
Shiro应用程序的四大基石
- Authentication:有时也简称为“登录”,这是一个证明用户是他们所说的他们是谁的行为。
- Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”。
- Session Management:管理用户特定的会话,即使在非 Web 或 EJB 应用程序。
- Cryptography:通过使用加密算法保持数据安全同时易于使用。
Shiro架构
Shiro的架构主要又3个概念:Subject\SecurityManager\Realms
Subject
Subject可以表示当前正在与软件交互的用户。所有Subject实例都被绑定到一个SecurityManager上,当你与一个Subject交互时,那些交互作用转换为与SecurityManager交互的特定Subject交互作用。
SecurityManager
SecurityManager是Shiro架构的核心,用于协调内部的安全组件。当你正与一个Subject交互的时候,实质上是SecurityManager处理所有繁重的Subject操作
Realms
Realms担当Shiro和你应用程序的安全数据之间的桥梁或者连接器,实际上与安全相关的数据如用户身份验证、授权的用户账户交互时,Shiro从一个或多个为应用程序配置的Realm中寻找这样的东西。
Subject
- 当前和软件交互的实体的安全特定视图(用户,第三方服务,cron job等等)
SecurityManager
- 协调Shiro内部的安全组件。管理每个应用程序的用户视图
Authenticator
- Authenticator是一个对执行用户身份验证登录的组件。当一个用户尝试登陆时候,该逻辑Authenticator执行。
- Authentication Strategy
- 如果不知一个Realm被配置,则AuthenticationStaegy将会协调这些Realm来决定身份认证尝试成功或失败下的条件
- Authorizer
- 负责在应用程序中决定用户访问控制的组件。
- SessionManager
- SessionManager负责创建及管理用户Session的生命周期
- SessionDAO
- SessionDAO代表SessionManager执行Session持久化操作
- CacheManager
- CacheManager创建并管理其他Shiro组件使用的Cache实例生命周期。
- Cryptography
- Cryptography 用于加密用户密码
- Realms
- Realms和Shiro和应用程序的安全数据之间充当侨联或者连接器。在身份验证的时候Shiro从Realm当中寻找该数据。
- SecurityManager
- SecurityManager用于执行安全操作并且管理应用程序的用户状态(Subject)