什么是Shiro
简单地来说,Apache Shiro是Java的一个安全框架。
Shiro能实现的功能
(1)主要特性:
- Authentication: 验证用户身份,通常指登录。
- Authorization :控制权限
- Session Management :会话管理,用户登录成功后相关信息保存在会话中。可以是Web环境也可以是Java环境。
- Cryptography:加密
(2)额外特性:
- Web Support:提供web应用支持,可以很方便集成到web环境
- Caching: 缓存,来保存操作的高效性。
- Concurrency: 支持多线程应用
- Testing: 支持单元测试
- Run As: 允许一个用户假装成另一个用户进行操作
- Remember Me : 记住用户的身份信息
Shiro架构
从应用角度查看Shiro是如何工作的
从图片上可以看出来,Shiro有三个重要的概念:
- Subject: 主体,指的是当前和应用交互的用户,通常是人也可以指第三方服务或者后台进程等系列应用。所有的Subject都会绑定到SecurityManager,所以当我们和Subject进行交互时,其实真正作用的是SecurityManager。
- SecurityManager:SecurityManager 是Shiro架构核心,它将所有的内部安全组件组合在一起。它充当一种引导者的角色,负责所有与安全有关的事务。
- Realm: 域,充当和具体的安全数据交互的角色,从某种意义上来说,其实就是DAO层。SecurityManager管理者Realm进行身份验证或者权限验证。
具体架构
- Subject:和当前应用交互的主体(可以是人、系统…)
- SecurityManager : Shiro的核心,管理所有的Subject,保证所有的组件成功运行。
- Authenticator :认证器,负责主体身份认证。 Authentication Strategy是Authenticator中用来对认证方式进行定义的部分,决定是所有的Realm都需要通过或者其他认证方式。
- Authorizer :授权器,用来对主体访问某个资源进行权限认证。
- SessionManager :会话管理器,用来管理Session的生命周期(和Servlet的Session类似) ,无论是在Web环境还是普通环境,Shiro都会创建一个Session。SessionDAO 用来对Session进行持久化操作。
- CacheManager :用来管理缓存周期,用来对存放的认证或者授权等信息进行缓存管理。
- Cryptography: 加密模块,Shiro提供了一天简单易用的Api。
- Realm:域,充当和具体的安全数据交互的角色。和安全数据进行交互。
来源:https://blog.csdn.net/JoeBig7/article/details/101444635