什么是Shiro
Apache Shiro是一个强大且灵活的开源安全框架,易于使用且好理解,撇开了搭建安全框架时的复杂性。
Shiro可以帮助我们做以下几件事:
认证使用者的身份
提供用户的访问控制,比如:
决定一个用户是否被授予某个特定的安全角色
决定用户是否允许做某件事
可以在任何环境中使用Session API,不在局限于web或是EJB容器中
可以在认证,访问控制或是session的生命周期的期间中对特定事件产生反应
可以整合多个数据源的用户安全数据到一个统一的用户视图中
支持单点登录
支持’记住我’功能
等等
Apache Shiro的特征
下图展示了Shiro主要的特征:
Primary Cocnerns(基本关注点):Authentication(认证),Authorization(授权),Session Management(会话管理),Cryptography(加密)。
Authentication(认证):经常和登录挂钩,是证明用户说他们是谁的一个工作
Authorization(授权):访问控制的过程,即,决定‘谁’可以访问‘什么
Session Management(会话管理):管理用户特定的会话,即使在非web或是EJB的应用中
Crytography(加密):通过加密算法保证数据的安全,且易于使用
Supporting Features(辅助特性):
Web Support(网络支持):web support API可以帮助在web应用中方便的使用shiro
Caching(缓存):保证安全操作使用快速有效
Concurrency(并发):支持多线程应用
Testing(测试):支持集成单元测试
“Run As”(以..运行):可以假定用户为另一个用户
“Remeber Me”:记住用户,无需再次登录
Authentication和Authenticator的主要流程
Authentication(认证):
与认证流程相关的Shiro各对象关系如下:
以更加清晰的流程图对应上述的步骤:
Authenticator(授权): 与授权相关的Shiro个对象关系如下:
换成流程图对应上述的步骤: