一、Apache Shiro简介
1、简介
一个安全性框架
特点:功能丰富、使用简单、运行独立
核心功能:
Authentication(认证):你是谁?
Authorization(授权):谁能干什么?
Session Management(Session管理):基于user、普通Java环境/Web环境
Cryprography(加密):加密算法
辅助功能:
Web Support:提供面向Web系统API
Caching:确保安全性操作快速有效
Concurrency:支持多线程并发验证
Testing:支持单元测试/集成测试
Run As:模拟角色
Remember Me:跨Session,如购物车
2、架构
整体架构
Subject:当前用户的视图;包括实体/逻辑用户
SecurityManager:核心;协调各个安全组件的门面
Realms:应用和Shiro之间安全性数据的连接器;安全性DAO
应用开发过程
应用代码通过Subject进行认证和授权,而Subject又委托给SecurityManager
应用代码往SecurityManager注入Realm,确保其能得到合法的用户及其权限
Shiro不提供维护用户/权限,而是通过Realm让开发人员自己注入
详细架构
Subject:主体对象,任何可以与应用交互的“用户”
SecurityManager:系统交互都通过SecurityManager进行统一控制
Authenticator:认证器,提供扩展点供自定义实现
Authorizer:授权器(访问控制器),决定主体对操作是否有权限
SessionManager:Session交互的抽象,支持不同环境下的分布式交互
SessionDao:Session数据访问对象
Cache:缓存控制器,管理如用户、角色、权限等的缓存
Cryptography:加密/解密组件
Realms:安全实体数据源,一个或多个;也可以自定义实现
4、SecurityManager
内部协调性组件:线程安全;实例化消耗资源,推荐使用单例、全局;根对象,Shiro对象导航
使用SecurityUtils工具类获取SecurityManager