1. 概念
Apache Shiro 是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro 框架具有直观、易用等特性,同时也能提供健壮的安全性,虽然它的功能不如 SpringSecurity 那么强大,但是在普通的项目中也够用了。
2. 由来
Shiro 的前身是 JSecurity,2004年,Les Hazlewood 和 Jeremy Haile 创办了 Jsecurity。当时他们找不到适用于应用程序级别的合适 Java 安全框架,同时又对 JAAS 非常失望。
2004 年到 2008 年期间,JSecurity 托管在 SourceForge 上,贡献者包括 Peter Led*、Alan Ditzel 和 Tim Veil。
2008年,JSecurity 项目贡献给了Apache软件基金会(ASF),并被接纳成为Apache Incubator 项目,由导师管理,目标是成为一个* Apache 项目。期间,Jsecurity 曾短暂更名为 Ki,随后因商标问题被社区更名为 “Shiro” 。随后项目持续在 Apache Incubator 中孵化,并增加了贡献者 Kalle Korhonen。
2010年7月,Shiro 社区发布了 1.0 版,随后社区创建了其项目管理委员会,并选举 Les Hazlewood 为主席。2010年9月22日,Shrio 成为 Apache 软件基金会的*项目(TLP)
3. 功能
Apache Shiro 是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。Apache Shiro 的首要目标是易于使用和理解。安全有时候是很复杂的,甚至是痛苦的,但它没有必要这样。框架应该尽可能掩盖复杂的地方,露出一个干净而直观的 API,来简化开发人员在应用程序安全上所花费的时间。
以下是你可以用 Apache Shiro 所做的事情:
-
验证用户来核实他们的身份
-
对用户执行访问控制,如:判断用户是否被分配了一个确定的安全角色;判断用户是否被允许做某事
-
在任何环境下使用 Session API,即使没有 Web 容器
-
在身份验证,访问控制期间或在会话的生命周期,对事件作出反应
-
聚集一个或多个用户安全数据的数据源,并作为一个单一的复合用户“视图”
-
单点登录(SSO)功能
为没有关联到登录的用户启用"Remember Me"服务
。。。。等等
Apache Shiro 是一个拥有许多功能的综合性的程序安全框架。下面的图表展示了 Shiro 的重点:
Shiro 中有四大基石——身份验证,授权,会话管理和加密。
-
Authentication:有时也简称为“登录”,这是一个证明用户是谁的行为。
-
Authorization:访问控制的过程,也就是决定“谁”去访问“什么”。
-
Session Management:管理用户特定的会话,即使在非Web 或EJB 应用程序。
Cryptography:通过使用加密算法保持数据安全同时易于使用。
除此之外,Shiro 也提供了额外的功能来解决在不同环境下所面临的安全问题,尤其是以下这些:
-
Web Support:Shiro 的 web 支持的 API 能够轻松地帮助保护 Web 应用程序。
-
Caching:缓存是 Apache Shiro 中的第一层公民,来确保安全操作快速而又高效。
-
Concurrency:Apache Shiro 利用它的并发特性来支持多线程应用程序。
-
Testing:测试支持的存在来帮助你编写单元测试和集成测试。
-
"Run As":一个允许用户假设为另一个用户身份(如果允许)的功能,有时候在管理脚本很有用。
"Remember Me":在会话中记住用户的身份,这样用户只需要在强制登录时候登录。
4. 总结
Shrio的功能还是比较强大的, 虽然比不了springsecurity,但是基本功能都涵盖了, 而且官网给出的实例也通俗易懂, 非常适合开发者去学习一下,
官网给了一个实例让我们去学习一下, 地址如下: