Shiro

Shiro

 

Shiro Shiro 开发团队称为“应用程序的四大基石” ——身份验证,授权,会话管理和加密作为其目标。
Authentication:有时也简称为“登录”,这是一个证明用户是他们所说的他们是谁的行为。
Authorization:访问控制的过程,也就是绝对“谁”去访问“什么”。
Session Management:管理用户特定的会话,即使在非 Web EJB 应用程序。
Cryptography:通过使用加密算法保持数据安全同时易于使用

 

也提供了额外的功能来支持和加强在不同环境下所关注的方面,尤其是以下这些:
Web SupportShiro web 支持的 API 能够轻松地帮助保护 Web 应用程序。
Caching:缓存是 Apache Shiro 中的第一层公民,来确保安全操作快速而又高效。
ConcurrencyApache Shiro 利用它的并发特性来支持多线程应用程序。
Testing:测试支持的存在来帮助你编写单元测试和集成测试,并确保你的能够如预期的一样安全。
"Run As":一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。
"Remember Me":在会话中记住用户的身份,所以他们只需要在强制时候登录。

 

Shiro 的架构有 3 个主要的概念: SubjectSecurityManager Realms

Shiro

 

Subject:在我们的教程中已经提到, Subject 实质上是一个当前执行用户的特定的安全“视图”。鉴于"User"
一词通常意味着一个人,而一个 Subject 可以是一个人,但它还可以代表第三方服务, daemon accountcron job
或其他类似的任何东西——基本上是当前正与软件进行交互的任何东西。
所有 Subject 实例都被绑定到(且这是必须的)一个 SecurityManager 上。当你与一个 Subject 交互时,那些交
互作用转化为与 SecurityManager 交互的特定 subject 的交互作用。
SecurityManagerSecurityManager Shiro 架构的心脏,并作为一种“保护伞”对象来协调内部的安全组件
共同构成一个对象图。然而,一旦 SecurityManager 和它的内置对象图已经配置给一个应用程序,那么它单独
留下来,且应用程序开发人员几乎使用他们所有的时间来处理 Subject API
我们稍后会更详细地讨论 SecurityManager,但重要的是要认识到,当你正与一个 Subject 进行交互时,实质上
是幕后的 SecurityManager 处理所有繁重的 Subject 安全操作。这反映在上面的基本流程图。
RealmsRealms 担当 Shiro 和你的应用程序的安全数据之间的“桥梁”或“连接器”。当它实际上与安全相
关的数据如用来执行身份验证(登录)及授权(访问控制)的用户帐户交互时, Shiro 从一个或多个为应用程
序配置的 Realm 中寻找许多这样的东西。
在这个意义上说, Realm 本质上是一个特定安全的 DAO:它封装了数据源的连接详细信息,使 Shiro 所需的相
关的数据可用。当配置 Shiro 时,你必须指定至少一个 Realm 用来进行身份验证和/或授权。 SecurityManager
可能配置多个 Realms,但至少有一个是必须的。
Shiro 提供了立即可用的 Realms 来连接一些安全数据源(即目录),如 LDAP,关系数据库(JDBC),文本配
置源,像 INI 及属性文件,以及更多。你可以插入你自己的 Realm 实现来代表自定义的数据源,如果默认地
Realm 不符合你的需求。