1、shiro简介
shiro是apche下的一个开源框架,是一个权限管理的框架,可以用来实现、用户授权、用户认证。spring中有spring security (原名Acegi),是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单。 shiro不依赖于spring,shiro不仅可以实现 web应用的权限管理,还可以实现c/s系统,分布式系统权限管理,shiro属于轻量框架,越来越多企业项目开始使用shiro。
1、2 什么时候该用shiro
在独立应用中使用
在web中使用
在spring框架中集成使用
1、3 shiro解决应用安全的四要素
认证 - 用户身份识别,判断使用户还是管理员,还是其他
授权 - 访问控制
密码加密 - 保护或隐藏数据防止被偷窥
会话管理 - 与用户相关的时间敏感的数据
2、shiro优势
简单、使用广范、灵活、有web支持、而且还是Apache软件基金会成员
3、核心
Subject (主题)
SecurityManager (安全管理器)
Realms (领域)
3、1 Subject
subject 被Shiro 描述为一个主体、被需要认证的主体、可以是人或系统
登录,退出,执行授权检查登一系列操作都是基于在subject之后才能进行操作
Shiro 的api非常直观,它反映了开发者以“每个用户” 思考安全控制的自然趋势
subject给开开发人员使用的
3、2 SecurityManager
管理所有用户的安全操作,是 Shiro 框架的核心,充当“保护伞”引用了多个内部嵌套安全组件,它们形成了对象图。SecurityManager用来检查数据是否安全
使用之前先配置安全管理器(SecurityManager),可以使用普通的Java代码、spring xml、YAML、ini文件。
3、3 Realm
Realm 充当了 Shiro 与应用安全数据间的“桥梁”或者“连接器",还向SecurityManager提供数据帮助SecurityManager更好的做安全检查。
假设我们现在是的在登录的场景:
我们先获取subject(),然后subject发送一个登录请求给安全管理器 让安全管理器去检测这个登录请求是否安全 安全管理器在发送一个请求给Realm 让Realm提供安全管理器需要的数据 安全管理器验证完了之后再把请求发送给subject 告诉subject这个登录请求是不是合法的。通过对象与对象之间的协作顺序来完成整个流程。