Shiro
什么是 shiro :
shiro 是一款主流的 Java 安全框架,不依赖任何容器,可以在运行 Java SE 和 Java EE 项目中,他的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。
Shiro 就是用来解决安全管理的系统化框架。
Shiro 的核心组件
用户、角色、权限:
会给角色赋予权限,给用户赋予角色。
1、UsernamePassWordToken : Shiro 用来封装用户的登陆信息,使用用户的登陆信息来创建令牌 Token。
2、SecurityManager :Shiro 的核心部分,负责安全认证和授权。
3、Subject :Shiro 的一个抽象概念,包含了用户信息。
4、Realm :开发者自定义模块,根据项目需求,验证和授权的逻辑全部卸载 Realm 中。
5、AuthenticationInfo:用户的角色信息集合,授权时使用。
6、AuthorzationInfo:用户的权限信息集合,授权时使用。
7、DefaultWebSecurityManager :安全管理器,开发者自定义的 Realm 需要注入到该对象中进行管理才能生效。
8、ShiroFilterFactoryBean : 过滤器工厂,Shrio 的基本运行机制。开发者定制规则,Shiro 去执行,具体的执行操作就是由 ShiroFactoryBean 创建的一个个 Filter 对象来完成。
Shrio 的运行机制如下图所示:
Shiro 认证及授权规则
认证过滤器:
anon :无需认证。
authc :必须认证。
authcBasic : 需要通过 HTTPBasic 认证。
user :不一定通过认证,只要曾经被 Shiro 记录即可(例如记住我的操作)。
授权过滤器
perms :必须拥有某个权限才能访问。
roles :必须拥有某个角色才能访问。
port :请求的端口必须位指定值。
rest :请求必须基于 RESTful。
ssl :必须为安全的 URL 请求,协议必须为 HTTPS。