RABC权限管理
RABC权限管理
一、权限管理的目的
1、统一精细化、标准化权限管理。
2、业务应用数据权限多样性,不同的应用数据管控的方式要求不同;同一个应用不同的场景和功能对权限的控制不同,需要建设通用性的权限模型;
3、权限模型的建模需要支持多级管控。
4、权限自管控
二、RABC权限管理
1、基本概念
基于角色的访问控制。简称RABC,分为隐式的或者显式的。
1)隐式
基于角色的安全检查:如果权限需求变了,导致我们重新开发。
2)显式
2、Apache Shiro
让人容易理解和使用,安全整体考虑的问题特别多,提供了一下简单的API,简化了安全性的开发。
协助我们完成身份验证和用户信息,角色分配,确定用户可以做什么事儿,session API,汇总了安全数据源。支持sso单点登录的功能、记住我。
Shiro的整体架构:
1)Subject
本质就是当前执行用户的一个视图。包含用户登录的信息。
2)Security Manager
Shiro的整体核心。Authenticator,用户身份认证,通过与realm交互获取用户信息,它有认证策略;Authorizer,用户授权,允许用户做哪些事儿;SessionManeger,创建和管理session的生命周期;SessionDAO对session持久化的类;
3)Realm
是1个接口,充当shiro与应用程序安全数据访问的桥梁。
3、登录验证的例子
4、自定义realm
继承AuthorizingRealm
自定义MD5 realm,加盐
5、shiro的授权流程
6、shiro的授权方式
1)基于角色的访问控制
If(subject.haseRole(“admin”)){
//操作什么资源
}
2)基于资源的访问控制
if (subject. isPermission(“user:update:01”)) {
//资源实例 //对01用户进行修改
}
if (subject. isPermission(“user:update:*”)) {
//资源类型 //对用户进行修改
}
7、Shiro和SpringBoot的整合
1)引入jar包
2)ShiroConfig
①Shiro的过滤器链
Anon不需要认证
②自定义shiroDbRealm,进行身份验证
8、Shiro提供的filter
9、权限场景
1)功能权限场景
2)数据权限场景
3)数据管控权限场景
整体架构
角色建成一个树形结构,功能也建成一个树结构,不用每次建立一个功能都绑定一次角色。
用断言的方式验证参数是否为空