001-权限原理基础知识

一、什么是权限管理

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

二、用户认证

1、概念

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

2、用户认证流程

  

3、关键对象

  • subject:主体,理解为用户,可能是程序,都要去访问系统的资源,系统需要对subject进行身份认证。
  • principal:身份信息,通常是唯一的,一个主体还有多个身份信息,但是都有一个主身份信息(primary principal)
  • credential:凭证信息,可以是密码 、证书、指纹。

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

三、用户授权

1、概念

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

2、授权流程

  

3、关键对象

  • 授权的过程理解为:who对what(which)进行how操作。
  • who:主体即subject,subject在认证通过后系统进行访问控制。
  • what(which):资源(Resource),subject必须具备资源的访问权限才可访问该 资源。资源比如:系统用户列表页面、商品修改菜单、商品id为001的商品信息。
  • 资源分为资源类型和资源实例:
    • 系统的用户信息就是资源类型,相当于java类。
    • 系统中id为001的用户就是资源实例,相当于new的java对象。
  • how:权限/许可(permission) ,针对资源的权限或许可,subject具有permission访问资源,如何访问/操作需要定义permission,权限比如:用户添加、用户修改、商品删除。

4、权限模型

  • 主体(账号、密码)
  • 资源(资源名称、访问地址)
  • 权限(权限名称、资源id)
  • 角色(角色名称)
  • 角色和权限关系(角色id、权限id)
  • 主体和角色关系(主体id、角色id)

  

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

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

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

 合并为:

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

  

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

5、分配权限

  • 用户需要分配相应的权限才可访问相应的资源。权限是对于资源的操作许可。
  • 通常给用户分配资源权限需要将权限信息持久化,比如存储在关系数据库中。
  • 把用户信息、权限管理、用户分配的权限信息写到数据库(权限数据模型)

6、权限控制(授权核心)

6.1、基于角色的访问控制【RBAC(role based access control)】【不推荐】

  比如:
    系统角色包括 :部门经理、总经理。。(角色针对用户来划分)
    系统代码中实现:
      //如果该user是部门经理则可以访问if中的代码
      if(user.hasRole(‘部门经理‘)){
        //系统资源内容
        //用户报表查看
      }

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

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

6.2、基于资源的访问控制【RBAC(Resource based access control)】【推荐】

  资源在系统中是不变的,比如资源有:类中的方法,页面中的按钮。
  对资源的访问需要具有permission权限,代码可以写为:
    if(user.hasPermission (‘用户报表查看(权限标识符)‘)){
      //系统资源内容
      //用户报表查看
    }
  上边的方法就可以解决用户角色变更不用修改上边权限控制的代码。
  如果需要变更权限只需要在分配权限模块去操作,给部门经理或总经理增或删除权限。

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

时间: 2024-10-12 19:42:34

001-权限原理基础知识的相关文章

Windows权限提升基础知识和命令

介绍 这篇文章是介绍window的权限提升,虽然不是一个全面的指南,但会试图覆盖主要的技术,常用的资源列表在文章底部,可供大家参考. window权限提升基础知识 初始信息收集 在开始提权之前,我们需要了解操作系统基本的信息,如安装软件,操作系统版本,连接用户,端口进程等信息, 确定操作系统名称和版本 1 C:\Users\sanr> systeminfo | findstr /B /C:"OS Name" /C:"OS Version" 查看主机名 1 C:

Shiro Review——权限管理基础知识

只要是有用户参与的系统一般都会有权限管理,权限管理实现对用户的访问控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源. 权限管理包括用户认证和授权两部分. 一,用户认证 用户去访问系统,系统要验证用户身份的合法性.比较常见的认证方法:1,用户名密码方式:2,指纹识别,比如我们上班打卡:3,基于证书方式: 当系统验证了用户身份的合法性,用户方可访问系统的资源. 1, 用户认证流程 权限管理是基于资源的,当我们去访问资源的时候,先判断这个资源是否允许匿名访问,比如我们访问一个

权限框架 基础知识

权限管理框架 属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源   包括用户身份认证和授权两部分,简称认证授权 1.身份认证 判断一个用户是否为合法用户的处理过程: 最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确 2.授权管理 即访问控制,控制谁能访问哪些资源: 体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访

linux基础知识---权限

权限 一.文件的基本权限 所谓的权限就是用户访问文件的能力,文件的基本权限包括 r(读),write(写),x(可执行). 用ls -ld file 查看文件的权限属性: drwxr-xr-x 4 root root 4096 Jul  3 21:29 file drwxr-xr-x:说明文件类型,常见的文件类型有:d 目录文件,l 链接文件,c 线性设备文件,b 块设备文件,s sorket文件,- 一般文件,p 管道文件 drwxr-xr-x:此文件(目录)属主用户权限 drwxr-xr-x

微机原理与接口(1)——基础知识

 微机的基本构成:     硬件设备:         由运算器.控制器.存储器.输入.输出设备: 软件    :         系统软件.程序设计语言.应用软件: CPU:整个计算机硬件的控制指挥中心.     构成:        运算:算术逻辑单元(Arithmetic Logic Unit,ALU).Acc(Accumulator)累加器.状态寄存器(Flag Register,FR)和寄存器组(Register Set,RS).        控制:程序计数器(Program Cou

软考基础知识—编译原理

编译原理和组成原理这一块,是我们比较头疼的.这一块接触的比较少,所以再理解起来的时候,就比较困难.但是所有的知识都是相联系的,万变不离其宗. 例如,学习组成原理的时候,我们联系我们以前的拆装机 ,学习编译原理的时候,我们联系我们学的java和.Net等编程语言等. 由于,计算机的硬件只能识别0和1,组成的机器指令程序,所以计算机编程语言由低级语言(机器语言.汇编语言)发展到了我们现在用的高级语言(java..net.VB.C++等) . 为什么我们说这一块的学习,要联系我们的java呢? Jav

Linux基础知识之用户和用户组以及 Linux 权限管理

已经开始接触Linux用户管理,用户组管理,以及权限管理这几个逼格满满的关键字.这几个关键字对于前端程序猿的我来说真的是很高大上有木有,以前尝试学 Linux 的时候看到这些名词总是下意识的跳过不敢看有木有,一提起这几个名词马上脑海中总是升腾起无限的崇拜有木有!今天就硬着头皮捯饬捯饬这几个概念,希望能有所收获. 1.从 /etc/passwd 说起 前面的基本命令学习中,我们介绍了使用 passwd 命令可以修改用户密码.对于操作系统来说,用户名和密码是存放在哪里的呢?我们都知道一个站点的用户名

Linux基础知识第七讲,用户权限以及用户操作命令

目录 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介linux用户,用户权限,组的概念. 1.1 基本概念 1.2 组 1.3 ls命令查看权限. 二丶用户权限修改命令 1.chmod 命令的使用 三丶超级用户,以及组操作. 1.什么是超级用户 2.组管理 四丶添加linux用户,以及删除linux用户 1.命令 2.用户命令 3.让添加的用户具有sudo权限 4.which 查看命令所执行位置的路径 5.用户切换 Linux基础知识第七讲,用户权限以及用户操作命令 一丶简介lin

php基础知识(语法与原理)

一.php简介 PHP超文本预处理器.是嵌入HTML文件中的服务器脚本程序. PHP代码标记:<?php -. ?> PHP文件的扩展名:.php PHP文件的执行:必须从域名开始访问 PHP每条语句必须以英文(;)结束 二.php网页基础知识 ①  IP地址 IP地址分为v4.v6两个版本,v4长度为32位2进制码,v6为128位2进制码.v4版本IP在2010年左右已经用完,主要格式是192.168.4.238(点分十进制法),由四段组成,每段8位二进制,用十进制表示的取值范围为:0-25