- Shiro安全框架简介
1.1. Shiro 概述
Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。
认证:用户是否是系统中的合法用户。——不使用框架可在过滤器、spring拦截器中去做,从session获取用户的登录信息。
授权:通过拦截器可获取用户的权限,验证用户有没有这个权限。
shiro将认证和授权的共性进行了抽取封装,在很多功能上进行了加强,比如说整合缓存和会话信息的管理。
1.2. Shiro 概要架构
在概念层,Shiro 架构包含三个主要的组件:Subject,SecurityManager和 Realm。
Subject:主体对象,封装了用户身份信息的对象,代表一个用户的身份。
SecurityManager:安全管理。
Realm:领域对象。
认证授权的初步流程
身份认证:应用程序代码访问主体对象Subject(封装当前用户的用户名和密码),这个对象传递给shiro框架的SecurityManager,SecurityManager调用相关的组件来完成认证操作,具体完成还需要访问数据库,shiro基于客户端输入的用户名,到数据库查询,把数据库查询的结果封装到Realm里。Realm可以理解为是一个业务对象,在业务对象里访问数据库要通过Dao去访问。
1.3. Shiro 详细架构
Shiro 的核心架构思想如下图所示:
shiro的详细架构
用户身份认证的方式:1输入用户名(代表身份)和密码(代表凭证)进行登录2指纹认证3USBKey
用户名和密码构成的一个主体对象叫Subject。
我们要把这些信息提交给SecurityManager。SecurityManager的核心对象:
1Authenticator认证管理器
2Authorizer授权管理器
3SessionManager会话管理器
4CacheManager缓存管理器(内置缓存,依托第三方缓存)
Cryptography加密管理器不归
5Realms对象:用来访问数据库,需要我们自己独立(用java代码)实现。
SecurityManager:shiro框架中负责加密的组件
通过Shiro框架进行权限管理时,要涉及到的一些核心对象,主要包括:
认证管理对象,授权管理对象,会话管理对象,缓存管理对象,加密管理对象
以及Realm管理对象(领域对象:负责处理认证和授权领域的数据访问题)
Subject(主体):与软件交互的一个特定的实体(用户、第三方服务等)。
SecurityManager (安全管理器):Shiro 的核心,用来协调管理组件工作。
Authenticator(认证管理器):负责执行认证操作
Authorizer(授权管理器):负责授权检测
SessionManager(会话管理器):负责创建并管理用户 Session 生命周期,提供一个强有力的 Session 体验。
SessionDAO:代表 SessionManager 执行 Session 持久(CRUD)动作,它允许任何存储的数据挂接到 session 管理基础上。
CacheManager(缓存管理器):提供创建缓存实例和管理缓存生命周期的功能
Cryptography(加密管理器):提供了加密方式的设计及管理。
Realms(领域对象):是shiro和你的应用程序安全数据之间的桥梁。——它关系的是业务和数据。