Apache Shiro是什么
Apache Shiro 是一个强大而灵活的开源安全框架,它能够简洁地处理身份验证(authentication)、授权(authorization)、企业会话管理(enterprise session management)和加密(cryptography)。
Apache Shiro 的首要目标是易于使用和理解。确保安全有时可能会非常复杂,甚至令人头疼,但它不应该是这样。一个框架应该尽可能的掩盖复杂性,并提供一个简洁直观的 API,以简化开发人员的应用程序安全开发工作。
下面是使用 Apache Shiro 可以完成的一些操作:
- 验证用户身份;
- 对用户执行访问控制,例如:
- 确定用户是否被分配了某个安全角色
- 确定用户是否允许执行某项操作
- 在任何环境中使用 Session API,即使在没有 Web 或 EJB 容器的情况下;
- 对在身份验证、访问控制或会话生命周期内发生的事件作出响应;
- 将 1 个或多个用户安全数据源的数据聚合起来,并呈现为一个单一的复合用户“视图”;
- 启用单点登录(Single Sign On: SSO)功能;
- 启用“记住我(Remember Me)”服务,以便用户在不登录的情况下关联账户;
- ……
还有很多其他功能——所有这些都集成到了一个高内聚并且易于使用的 API 中。
Shiro 致力于在所有应用环境中实现这些目标——从最简单的命令行应用到最庞大的企业应用,而不必强制依赖于其他第三方框架、容器或应用服务器。当然,这个项目也致力于尽可能地与这些环境进行集成,但它也可以即插即用,在任何环境中直接使用。
Apache Shiro的功能
Apache Shiro 是一个功能全面的应用安全框架。下面的图表展示了 Shiro 的主要关注点,本参考手册也将按照类似的结构进行组织:
Shiro 针对的是 Shiro 开发团队所称的“应用安全的四大基石”——身份验证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography):
- 身份验证(Authentication):有时也被称为“登录”,这是证明用户身份的过程,即确认用户是他们自称的人。
- 授权(Authorization):这是访问控制的过程,即确定“谁”可以访问“什么”。
- 会话管理(Session Management):管理特定用户的会话,即使是在非 Web 或 EJB 应用中。
- 加密(Cryptography):使用加密算法确保数据安全,同时保持易于使用的特性。
此外,还有额外的功能可以支持和加强这些关注点,特别是在不同的应用环境中,这些功能包括:
- Web 支持(Web Support):Shiro 的 Web 支持 API 有助于轻松保护 Web 应用的安全。
- 缓存(Caching):在 Apache Shiro 的 API 中,缓存是一级公民,用以确保安全操作保持快速和高效。
- 并发(Concurrency):Apache Shiro 通过其并发功能支持多线程应用。
- 测试(Testing):测试支持功能有助于编写单元测试和集成测试,确保代码能够按预期进行安全保护。
- “以其他用户身份运行”(“Run As”):一项允许用户以其他用户身份登录的功能(如果允许),有时在管理(administrative )场景中很有用。
- “记住我”(“Remember Me”):跨会话记住用户的身份,只有在强制执行时才需要登录。