
Apache Shiro™是一个功能强大且易于使用的Java安全框架,它执行身份验证,授权,加密和会话管理。使用Shiro易于理解的API,您可以快速轻松地保护任何应用程序-从最小的移动应用程序到最大的Web和企业应用程序。
功能概况
Apache Shiro是具有许多功能的全面的应用程序安全框架。下图显示了Shiro的核心功能模块。
Shiro的“应用程序安全性的四个基石”:
Authentication(身份验证):有时称为“登录”,这是证明用户就是他们所说的身份的行为。Authorization(授权):访问控制的过程,即确定“谁”有权访问“什么”。Session Management(会话管理):即使在非Web或EJB应用程序中,也管理用户特定的会话。Cryptography(密码术):使用密码算法保持数据安全,同时仍易于使用。
在不同的应用程序环境中,还具有其他功能来支持和加强这些问题,尤其是:
- Web Support:Shiro的Web支持API可帮助轻松保护Web应用程序。
- Caching:缓存是Apache Shiro API的第一层公民,可确保安全操作保持快速和高效。
- Concurrency:Apache Shiro的并发功能支持多线程应用程序。
- Testing:测试支持可帮助您编写单元测试和集成测试,并确保您的代码将按预期进行保护。
- “Run As”:一种功能,允许用户采用其他用户的身份(如果允许),有时在管理方案中很有用。
- Remember Me:在各个会话中记住用户的身份,因此他们仅在必要时登录。
核心组件
Subject
即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。
SecurityManager
它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。可以理解成控制中心,所有请求最终基本上都通过它来代理转发,一般我们程序中不需要直接跟他打交道。
Realm
Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和或授权。配置多个Realm是可以的,但是至少需要一个。
