1. 什么是Apache Shiro

Apache Shiro是强大而灵活的开源安全框架,它能简洁明了地处理认证(authentication)、授权(authorization)、会话管理(session Management)和加密(cryptography)等问题。
Apache Shiro的首要目标就是易用和易理解。很多时候安全问题是非常复杂的,甚至是令人头疼的,但是它实际上可以变得更简单。作为框架,应该尽可能地包装复杂性,提供一套简洁而直观的API,从而节省开发者为了给他们的程序提供安全保障而付出的大量力气。
你可以用Apache Shiro做如下事情:
  • 用户身份认证
  • 对用户进行访问控制,如:
    • 确定一个用户是否被分配了某些安全角色;
    • 确定一个用户是否被允许做某些事。
  • 在任意环境使用一套Session API,即使没有Web容器或EJB容器
  • 对认证、授权、会话等生命周期期间发生的事件进行处理
  • 集成一个或多个安全数据源,并给用户提供统一的视图(如同操作一个数据源)
  • 提供单点登录的能力
  • 提供“记住我”的能力
……
还有更多——所有功能都集成进一套紧凑易用的API。
Shiro试图在所有的应用环境实现上述目标——从最简单的命令行应用到最庞大的企业级应用,不强制依赖第三方框架,容器或者应用服务。当然,它的目标就是尽可能地集成进这些应用环境中,但是必须应用在这些应用环境的外围(out-of-the-box)。



2. Apache Shiro的特性

Apache Shiro是一个包含了大量特性的综合性安全框架。下图展示了Shiro的重点,后面的参考手册也是和这张图的结构类似:


Shiro的目标就是Shiro开发团队口中的“应用的四大安全基石”——认证,授权,会话管理和加密:
  • Authentication:有时候称之为“登录”,“登录”是一种证明用户身份是否属实的行为。
  • Authorization:访问控制的过程。比如,决定“谁”能访问“什么”。
  • Session Management:管理用户会话,即使没有web容器或EJB容器。
  • Cryptography:使用加密算法保证数据的安全性。

在不同的应用环境,也有一些额外的支持或增强功能,尤其是:
  • Web 支持:Shiro的web api 能轻松地保护web应用。
  • 缓存:在Shiro API 中,缓存是一等公民,用来保证安全相关操作快速高效。
  • 并发:Shiro 在多线程应用中支持并发特性。
  • 测试:帮助你写单元测试和集成测试用例,保证达到你预期的安全性。
  • "Run As":一个允许用户在许可的前提下使用别人的身份进行访问应用,有时是一个有用的管理方案。
  • "Remember Me":记住用户在会话中保存的身份,此时用户只需要在强制情况下才需要登录。



原文地址