Java安全框架——Apache Shiro(三)

127 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第27天,点击查看活动详情

  • SecurityManager

    SecurityManager权限管理器,它是shiro的核心,负责对所有的subject进行安全管理。 通过SecurityManager可以完成subject的认证、授权等,SecurityManager是通过Authenticator进行认证, 通过Authorizer进行授权,通过SessionManager进行会话管理等。 SecurityManager是一个接口,继承了Authenticator, Authorizer, SessionManager这三个接口

  • Authenticator

    Authenticator即认证器,对用户登录时进行身份认证

  • Authorizer

    Authorizer授权器,用户通过认证器认证通过,在访问功能时需要通过授权器判断用户是否有此功能的操作权限。

  • Realm(数据库读取+认证功能+授权功能实现)

    Realm领域,相当于datasource数据源,securityManager进行安全认证需要通过Realm获取用户权限数据 比如: 如果用户身份数据在数据库那么realm就需要从数据库获取用户身份信息。 注意: 不要把realm理解成只是从数据源取数据,在realm中还有认证授权校验的相关的代码。 

  • SessionManager

    SessionManager会话管理,shiro框架定义了一套会话管理,它不依赖web容器的session, 所以shiro可以使用在非web应用上,也可以将分布式应用的会话集中在一点管理,此特性可使它实现单点登录。

  • SessionDAO

    SessionDAO即会话dao,是对session会话操作的一套接口 比如: 可以通过jdbc将会话存储到数据库 也可以把session存储到缓存服务器

  • CacheManager

    CacheManager缓存管理,将用户权限数据存储在缓存,这样可以提高性能

  • Cryptography

    Cryptography密码管理,shiro提供了一套加密/解密的组件,方便开发。比如提供常用的散列、加/解密等功能

第三章 Shiro入门

1、身份认证

【1】基本流程

流程如下:

  • 1、Shiro把用户的数据封装成标识token,token一般封装着用户名,密码等信息

  • 2、使用Subject门面获取到封装着用户的数据的标识token

  • 3、Subject把标识token交给SecurityManager,在SecurityManager安全中心中,SecurityManager把标识token委托给认证器Authenticator进行身份验证。认证器的作用一般是用来指定如何验证,它规定本次认证用到哪些Realm

  • 4、认证器Authenticator将传入的标识token,与数据源Realm对比,验证token是否合法