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的生命周期;SessionDAOsession持久化的类;

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、ShiroSpringBoot的整合

1)引入jar

2)ShiroConfig

①Shiro的过滤器链

Anon不需要认证

②自定义shiroDbRealm,进行身份验证

8、Shiro提供的filter

9、权限场景

1)功能权限场景

2)数据权限场景

3)数据管控权限场景

整体架构

角色建成一个树形结构,功能也建成一个树结构,不用每次建立一个功能都绑定一次角色。

用断言的方式验证参数是否为空

 

 

 

 

 

 

 

 

posted @ 2021-05-19 20:42  majingyun  阅读(1965)  评论(0编辑  收藏  举报