shiro的入门
一、什么是shiro
shiro(java安全框架)是Apache的一个开源框架,是一个权限管理的框架,实现用户认证,用户授权
二、shiro的三个核心组件
subject(主体):代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是subject,即一个抽象概念:所有subject都绑定到securityManage,与subject的所有交互都会委托给securitymanager;可以把subject认为是一个门面securitymanager才是实际的执行者
securitymanage(安全管理器):即所有与安全有关的操作都会与securitymanage交互,且它管理者所有的subject,可以看出来它是shiro的核心,它负责与后面介绍的其他组件进行交互,如果学习过springMVC,你可以把它看成dispatchservlet前端控制器
realm(域):shiro从realm获取安全数据(如用户,角色,权限),就是说securitymanage要验证用户身份,那么它需要从realm获取相应的用户进行比较以确定用户身份是否合法,也需要从realm的带相应的角色/权限进行验证用户是否进行操作,可以把sealm看成datasource,即安全数据源
三、shiro架构
功能 | 说明 |
---|---|
subject | 主体,可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证,授权 |
securitymanage | 安全管理器,主体进行认证和授权都是通过securitymanage进行,securitymanage是一个集合 真正做事的不是securitymanage而是它里面的东西 |
authenticator | 认证器,主体进行认证最终通过authenticator进行的 |
authorizer | 授权器,主体进行授权最终通过authorizer进行的 |
sessionmanage | web应用中一般是用web容器(中间件tomcat)对session进行管理,shiro也提供一套session管理的方式。shiro不仅仅可以用于web管理也可以用于cs管理,所以他不用web容器的session管理。 |
SessionDao | 通过SessionDao管理session数据,针对个性化的session数据存储需要使用sessionDao(如果用tomcat管理session就不用SessionDao,如果要分布式的统一管理session就要用到SessionDao)。 |
cache Manager | 缓存管理器,主要对session和授权数据进行缓存(权限管理框架主要就是对认证和授权进行管理,session是在服务器缓存中的),比如将授权数据通过cacheManager进行缓存管理, 和ehcache整合对缓存数据进行管理(redis是缓存框架)。 |
realm | 域,领域,相当于数据源,通过realm存取认证、授权相关数据(原来是通过数据库取的)。 注意:authenticator认证器和authorizer授权器调用realm中存储授权和认证的数据和逻辑。 |
cryptography | 密码管理,比如md5加密,提供了一套加密/解密的组件,方便开发。比如提供常用的散列、加/解密等功能。比如 md5散列算法(md5只有加密没有解密)。 |