Apache Shiro是实施身份验证、授权、密码和会话管理的强大易用的Java安全框架。Shior的API很容易理解。使用Shiro可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。除了它的API,支持Shiro如此强大的功能主要归功于Shiro的三个核心组件。
一、Subject
即“当前操作用户”。然而,在Shiro中,Subject的概念不仅指人,还指第三方过程和后台账户(Daemon Account)或者其他类似的事情。它只是意味着“目前与软件交互的东西”。Subject代表了当前用户的安全操作,所有Subject都绑定到Securitymanager,所有与Subject的交互都将委托给Securitymanager;Subject可以看作是门面;SecurityManager是实际执行者;
二、SecurityManager
即安全管理器,它是Shiro框架的核心,是典型的Facade模式,Shiro通过SecurityManager管理内部组件实例,并通过它提供各种安全管理服务。可以看出,它是Shiro的核心,负责与后面介绍的其他组件交互。如果你学过SpringMVC,你可以把它看作是DispatcherServlet前端控制器;
三、Realm
Realm在Shiro和应用安全数据之间充当Shiro“桥梁”或者“连接器”。也就是说,Shiro在验证用户认证(登录)和授权(访问控制)时,会从应用配置的Realm中找到用户及其权限信息。
从这个意义上说,Realm本质上是一个安全相关的DAO:它包装了数据源的连接细节,必要时向Shiro提供相关数据。配置Shiro时,必须至少指定一个Realm进行认证和(或)授权。可以配置多个Realm,但至少需要一个Realm。
Shiro内置了Realm,可以连接大量的安全数据源(又名目录),如LDAP、关系数据库(JDBC)、类似于INI的文本配置资源和属性文件。如果缺失的Realm不能满足需求,您也可以插入代表自定义数据源的Realm。
Subjecttct之所以说Subjectctct的原因、SecurityManager、Realm是Shiro的三个核心组件,因为它们共同构建了Shiro的结构功能系统,相辅相成,共同维护了Shiro作为Java安全框架的地位。如果你想了解更多关于Shiro的信息,你可以浏览这个网站Shiro视频课程,名师讲解,为您解忧解惑。