1.1      什么是权限管理

只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。

权限管理包括用户认证和授权两部分。

1.2     用户认证

1.2.1     概念

用户认证,用户去访问系统,系统要验证用户身份的合法性。最常用的用户身份验证的方法:1、用户名密码方式、2、指纹打卡机、3、基于证书验证方法。。系统验证用户身份合法,用户方可访问系统的资源。

1.2.2    用户认证流程

1.2.3     关键对象

subject:主体,理解为用户,可能是程序,都要去访问系统的资源,系统需要对subject进行身份认证。

principal:身份信息,通常是唯一的,一个主体还有多个身份信息,但是都有一个主身份信息(primary principal)

credential:凭证信息,可以是密码 、证书、指纹。

总结:主体在进行身份认证时需要提供身份信息和凭证信息

1.3    用户授权

1.3.1    概念

用户授权,简单理解为访问控制,在用户认证通过后,系统对用户访问资源进行控制,用户具有资源的访问权限方可访问。

1.3.2    授权流程

1.3.3     关键对象

授权的过程理解为:who对what(which)进行how操作。

who:主体即subject,subject在认证通过后系统进行访问控制。

what(which):资源(Resource),subject必须具备资源的访问权限才可访问该 资源。资源比如:系统用户列表页面、商品修改菜单、商品id为001的商品信息。

资源分为资源类型和资源实例

系统的用户信息就是资源类型,相当于java类。

系统中id为001的用户就是资源实例,相当于new的java对象。

how:权限/许可(permission) ,针对资源的权限或许可,subject具有permission访问资源,如何访问/操作需要定义permission,权限比如:用户添加、用户修改、商品删除。

1.3.4     权限模型

主体(账号、密码)

资源(资源名称、访问地址)

权限(权限名称、资源id)

角色(角色名称)

角色和权限关系(角色id、权限id)

主体和角色关系(主体id、角色id)

通常企业开发中将资源和权限表合并为一张权限表,如下:

资源(资源名称、访问地址)

权限(权限名称、资源id)

合并为:

权限(权限名称、资源名称、资源访问地址)

上图常被称为权限管理的通用模型,不过企业在开发中根据系统自身的特点还会对上图进行修改,但是用户、角色、权限、用户角色关系、角色权限关系是需要去理解的。

1.3.5    权限控制(授权核心)

1.3.5.1              基于角色的访问控制

RBAC(role  based  access  control),基于角色的访问控制。

比如:

系统角色包括 :部门经理、总经理。。(角色针对用户来划分)

系统代码中实现:

//如果该user是部门经理则可以访问if中的代码

if(user.hasRole('部门经理')){

//系统资源内容

//用户报表查看

}

问题:

角色针对人划分的,人作为用户在系统中属于活动内容,如果该 角色可以访问的资源出现变更,需要修改你的代码了,比如:需要变更为部门经理和总经理都可以进行用户报表查看,代码改为:

if(user.hasRole('部门经理') || user.hasRole('总经理')  ){

//系统资源内容

//用户报表查看

}

基于角色的访问控制是不利于系统维护(可扩展性不强)。

1.3.5.2              基于资源的访问控制

RBAC(Resource  based  access  control),基于资源的访问控制。

资源在系统中是不变的,比如资源有:类中的方法,页面中的按钮。

对资源的访问需要具有permission权限,代码可以写为:

if(user.hasPermission ('用户报表查看(权限标识符)')){

//系统资源内容

//用户报表查看

}

上边的方法就可以解决用户角色变更不用修改上边权限控制的代码。

如果需要变更权限只需要在分配权限模块去操作,给部门经理或总经理增或删除权限。

建议使用基于资源的访问控制实现权限管理

权限管理原理知识(一)相关推荐

  1. JAVAWEB开发之权限管理(一)——权限管理详解(权限管理原理以及方案)、不使用权限框架的原始授权方式详解

    知识清单 1.了解基于资源的权限管理方式 2. 掌握权限数据模型 3. 掌握基于url的权限管理(不使用Shiro权限框架的情况下实现权限管理) 4. shiro实现用户认证 5. shiro实现用户 ...

  2. o在linux是什么权限,Linux权限管理基本知识大全

    Linux权限管理基本知识大全 Linux系统有什么基本权限,权限管理命令是什么?下面跟yjbys小编一起来看看吧! 一.基本权限 linux权限机制采用UGO模式.其中 u(user)表示所属用户. ...

  3. Android权限管理原理(含6.0)

    前言 Android系统在MarshMallow之前,权限都是在安装的时候授予的,虽然在4.3时,Google就试图在源码里面引入AppOpsManager来达到动态控制权限的目的,但由于不太成熟,在 ...

  4. Android权限管理原理,Android手机Root授权原理细节全解析

    首先关于Root的方式,这里不做详解,可以有很多漏洞,比如利用uid溢出后归为0,得到Root权限,然后操作文件系统等. 手机Root后,最重要的是,给手机安装了su程序和superuser apk. ...

  5. shiro、基于url权限管理、超详细

    如果需要本篇博客内容的代码!请到我的博客下载中心去下载   https://download.csdn.net/download/qq_36125138/10719559 项目运行图: 权限管理原理知 ...

  6. Android动态权限管理模型(4.3-6.0)

    Google从4.3开始就试图引入AppOpsManager动态权限管理模型,但是,由于感觉技术不太成熟,在Release版本中,这个功能都是被隐藏掉的,所以官方Rom一直没有动态权限管理机制.直到A ...

  7. Akka-CQRS(16)- gRPC用JWT进行权限管理

    前面谈过gRPC的SSL/TLS安全机制,发现设置过程比较复杂:比如证书签名:需要服务端.客户端两头都设置等.想想实际上用JWT会更加便捷,而且更安全和功能强大,因为除JWT的加密签名之外还可以把私密 ...

  8. 基于Spring Security 的Java SaaS应用的权限管理

    1. 概述 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源.资源包括访问的页面,访问的数据等,这在传统的应用系统中比较常见.本文介绍的则是基于Saas系统 ...

  9. GitHub权限管理

    目录 前言 权限管理原理 使用方法 创建组织 创建仓库 创建项目组 邀请成员 成员组管理 结论 前言 在多人协作做项目,项目文件托管在GitHub上,这时候我们需要在团队成员中设置不同的权限,来达到每 ...

最新文章

  1. 计算机绘图 招聘,计算机绘图-网课答案.pdf
  2. enum的介绍以及和#define的区别
  3. WPF 实现倒计时转场动画~
  4. 开放、普惠、高性能-SLS时序存储助力打造企业级全方位监控方案
  5. Magento教程 16:Magento价格规则的优先度
  6. 详细解说五个Java项目
  7. LeetCode-1-two-sum
  8. linux内核移植imx8,NXP iMX8 Ubuntu 系统移植及 ROS 应用
  9. CentOS7设置镜像源
  10. 数字信号和模拟信号区别
  11. 二维动画毕业论文参考文献精选
  12. python get score gain_机器学习的特征重要性究竟是怎么算的
  13. 2021年度总结,男儿努力平生志
  14. 国产芯不知道怎么选?可以试试N32替代STM32
  15. 你可能不知道的GDB命令
  16. 电子科技大学 图论期末复习 公式索引
  17. 推特大裁员后,马斯克与白宫发生冲突!META 大批裁员正在路上
  18. 剪视频到底要什么样的电脑配置?
  19. matlab floor函数_MATLAB图像处理:08:在交通视频中检测汽车
  20. 利用C++逆向知识写CS辅助,轻松实现透视原理!

热门文章

  1. 泛微软件的CMMI配置管理实施法
  2. Android之——模拟实现检测心率变化的应用实例
  3. 决策树算法原理(python)
  4. 神经网络系统技术是什么,神经网络系统技术应用
  5. b,B,KB,MB,GB,TB,PB,EB,ZB,YB,BB,NB,DB的含义,之间的关系
  6. WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)
  7. python对象不可订阅_python - TypeError:'int'对象不可订阅 - 尝试创建csv文件时 - SO中文参考 - www.soinside.com...
  8. 野火STM32F1开发板 IIC 0.96OLED 波形显示
  9. 3060ti海力士测试
  10. ECONNABORTED,Socket 常见连接错误之一,原因分析 + 解决办法