定义
- Apache Shiro是java的安全框架 。
- Shiro不但可以用在javase环境,也可以使用在javaee环境
- Shiro可以完成:认证 授权 加密 会话管理 与web集成、缓存等等
功能
- Authentication:身份认证/登录,验证用户是不是拥有相应的身份。
- Authorization:授权,权限验证,验证某个用户是否拥有某个角色,或者细粒度的验证某个用户对某个资源是否具有某个权限
- Session Manager:会话管理。
- Cryptography:加密,保护数据的安全性,
- Web Support:web支持,可以非常容易的集成到web环境
- Caching:缓存,比如用户登录后,其用户信息,拥有的橘色不必每次去查,提供效率
- Concurrency:Shiro支持渡现车应用的并发验证,如一个线程中开启了其他线程,能把权限自动传播过去
- Testing:提供测试支持
- Run As:允许一个用户假装另外一个用户身份进行访问
- Remember Me:记住我
架构
- Subject:应用代码直接交互的对象是subject,也就说shiro对外的api核心就是subject,subject代表了当前用户, 与subject的所有交互都会委派给SecurityManager,subject其实是一个门面,SecurityManager才是实际的执行者。
- SecurityManager:安全管理器,所有与安全有关的操作都会与SecurityManager交互,其管理的所有的subject,它是Shiro的核心,负责与Shiro的其他组件进行交互,
- Realm:Shiro从realm中获取安全的数据(用户,角色,权限),就是说SecurityManager要验证用户的省份,就需要从realm获取相应的用户进行比较以确定用户的身份是否合法,,可以把realm看出DataSource。