Shiro框架
简介
shiro 是一个安全框架,是apache的一个子项目,提供了:认证、授权、加密、会话管理、web集成、缓存等功能。
功能简介
- Authentication:身份认证/登录、验证用户是都有相应的身份
- Authorization:授权,权限验证,验证某个已认证的用户是否拥有某个权限;例如:验证某个用户是否有某个角色或者更细粒度下对某个资源是否有权限。
- Session Manager:会话管理,即用户在一次登录后就是一次会话,在没有退出前,所有的会话信息都存在这里。
- Cryptography:加密,保护数据的安全性
- Web Support:Web支持
- Caching:缓存,存储用户信息,及用户所拥有的权限
- Concurrency:shiro支持多线程应用的并发验证,即在一个线程中开启另一个线程,能把权限信息自动传过去;
- Testing:提供测试支持
- Run As:允许一个用户假装另一个用户(被允许)的身份进行访问
- Remember Me:记住我,下一次登录不用再输账号密码;
架构
从外部来看(架构)
从外部看shiro架构,即从应用服务出发,了解shiro的工作流程:
- Subject:Subject是与应用服务直接交互的对象,Subject代表了当前用户,这个用户不一定是指用户信息,与当前应用交互的任何东西都是Subject,实际上与Subject交互的所有都在于SecurityManager,Subject只是Shiro的一个对外的一个api,实际的执行者是SecurityManager;
- SecurityManager:安全管理器,是shiro框架的核心,所有的安全相关的操作都要与SecurityManager交互,且管理着所有的Subject,他还负责与shiro的其他组件交互;
- Realm:shiro需要从Realm获取安全数据(用户,权限,角色等信息),SecurityManager要验证用户的身份信息需要从Realm获取数据(获取用户合法的权限及角色),Realm相当于datasource