`
wenlongsust
  • 浏览: 76315 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Xianfeng轻量级Java中间件平台:基于RBAC模型实现权限控制的原理

 
阅读更多

首先,白话一下RBAC模型。RBAC是基于角色的访问控制(Role-Based Access Control)的简称。RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What进行How操作”。至于RBAC模型具体包含哪些内容,网上有很多相关的资料,可以参考一下。下面,主要写写自己对RBAC的理解和在Xianfeng平台中的应用。

理解RBAC,还是从““Who对What进行How操作”出发,Who实际上就是功能操作的主体,可以理解为系统用户,而What实际上就是功能操作的客体,范围比较广泛,可以是系统菜单,也可以是功能页面或者系统中的文件等等,称之为用户可操作的系统资源,而How实际上就是对具体功能操作的一种抽象表示,比如把增加用户的功能操作抽象表示为“新增用户”。通过这样简单的理解,很容易把RBAC模型和我们实际开发的系统联系起来。

实现权限控制的步骤大体分为以下几步:

(1)建立系统用户和系统资源之间的权限映射关系;

(2)对用户访问的关键资源进行权限过滤;

(3)反馈用户权限过滤的结果


1、建立系统用户和系统资源之间的权限映射关系

涉及到的实体如下:

模块(Module):实现系统功能的模块化划分,比如子系统等;

功能(Function):一个完整的业务过程,比如用户管理等;

操作(Operation):业务过程所包含的关键业务点,比如用户管理的新增、修改、删除等,

资源(Resource):功能操作的客体,比如系统菜单,文件等;

用户(User):功能操作的主体,既登录系统的用户;

角色(Role):可以认为是操作集合的另外一种表示方法,通过给用户分配角色来确定用户有权限的操作范围。

实体关系模型如下图所示:



用户(User)和操作(Operation)、操作(Operation)和资源(Resource)之间的关系为弱化关系,既可有可无的关系,简单实现方法可以忽略这种弱化关系的存在。

简单来看,给用户和资源之间建立权限映射关系,实际上就是确定用户有哪些角色。


2、对用户访问的关键资源进行权限过滤

以一个具体的业务场景为例,有一个管理功能页面,页面上包含“新增”、“修改”、“删除”3个按钮,假设此页面只有管理员可访问,并且只有超级管理员才有按钮操作权限。

从假设的业务场景得知,管理功能具有4个操作,包含查询、新增、修改和删除,管理员具有查询权限,而超级管理员还具有新增、修改和删除的权限。

功能页面,属于系统资源,可以使用页面的URL作为权限过滤的标识符,因为在一个系统中,URL总是唯一的,另外,页面上的操作按钮,也属于系统资源,为了实现权限过滤,必须绑定一个唯一的权限过滤标识符,可以通过扩展HTML属性的方式来绑定唯一的权限过滤标识符,示例如下:

<button safeURI="system.user@insert" onclick="insertRow()">新增</button>
其中,safeURI属性的值“system.user@insert"就表示系统增加用户操作的唯一权限过滤标识符。

无论是管理员,还是超级管理员,只要对系统中的关键资源进行访问,根据其角色关联的操作集合,遍历出是否包含当前资源的权限过滤标识符,就可以判断有无权限进行当前操作,从而实现权限控制。


3、反馈权限过滤的结果

对系统关键资源进行权限过滤之后,如果当前登录用户具有操作权限,就继续用户操作;反之,如果当前登录用户没有操作权限,需要返回无操作权限的结果给用户。

分享到:
评论

相关推荐

    java新手练习的项目

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而著名。对于初学者来说,Java提供了一个良好的学习曲线,可以快速入门并深入掌握。"java新手练习的项目"是一个理想的学习资源,它通常包含...

    净网xianfeng客户端文件

    "净网xianfeng客户端文件"是一款网络安全相关的软件,主要功能可能是为了帮助用户清理网络中的不良信息,提高网络环境的安全性和纯净度。由于描述中提到“不知道能不能用”,这暗示了该软件可能存在不确定的可用性...

    68013_USB_blaster.rar_CY7C68013_altera_usb-blaster

    【标题】"68013_USB_blaster.rar_CY7C68013_altera_usb-blaster"指的是一个基于CY7C68013芯片实现ALTERA USB Blaster的项目压缩包。ALTERA USB Blaster是一款由ALTERA公司开发的USB JTAG编程设备,用于对ALTERA FPGA...

    DrZhouXianfengOn国际EPC项目风险管理_总论.pptx

    DrZhouXianfengOn国际EPC项目风险管理_总论.pptx

    SIMCOM300资料

    SIMCOM300是一款广泛应用的GSM/GPRS模块,由SIMCom公司生产,主要用于实现设备间的无线通信。本文将深入探讨SIM300的相关知识点,包括AT命令的使用、原理图解析以及短信发送的PDU格式。 首先,AT命令是SIMCOM300的...

    Ajax+js实现异步交互

    JSON(JavaScript Object Notation)是Ajax中常用的数据格式,它轻量级且易于阅读和编写,也便于机器解析和生成。 总之,Ajax结合JavaScript使我们能够在不刷新页面的情况下与服务器进行交互,极大地提升了网页的...

    XianfengBlock

    2. **Go在区块链中的应用**:Go语言的轻量级并发模型和内存管理机制使其成为构建区块链的理想选择。区块链是一个分布式数据库,需要高效地处理并发事务,Go的并发原语可以帮助实现这一点。此外,Go的编译速度和运行...

    先锋P2P高清点播云系统

    XfServer P2P高清点播云服务器 完整P2P网络生态系统: 一个完整的P2P枢纽和加速网络中心,网络之间的有序沟通,可以延伸到世界 任何角落。与影音先锋强大的P2P网络播放器无缝结合,呈现完美高清视频。...

    联想先锋56k调制解调器驱动

    调制是将数字数据(由0和1组成)转换成模拟信号的过程,这通常通过改变载波信号的频率、振幅或相位来实现。解调则是相反的过程,接收端的调制解调器将模拟信号解析回原来的数字数据流。56k调制解调器采用先进的V.90...

    吉吉影音 正版采集

    1. **数据关联**:通过admin_datarelate.asp可能实现的后台数据处理,将用户信息、观看历史、喜好等数据进行关联分析,为个性化推荐和优化服务提供支持。 2. **文件管理和分发**:admin_fensizy.asp可能处理的内容...

    Persistent-Homotopy:计算持久同态的算法

    有关持久同源性的更多详细信息,请访问Xianfeng David Gu的主页。 顾教授在2020年夏季进行了一系列计算几何学讲座(我做了两次客座讲座^-^),这让我受益匪浅。 该项目基于他的演讲。 系统该代码在macOS Catalina上...

    虚拟机安装Archlinux

    作者计划基于自己的经验编写一份Linux使用教程,以帮助初学者更好地理解和使用Archlinux。 9. **选择Linux的理由**:Linux提供了一个自由、开放的平台,用户可以根据个人喜好定制系统,参与到开源软件的开发中。...

    Ajax简单的异步交互及Ajax原生编写

    Ajax技术,全称Asynchronous JavaScript and XML,是一种在无需重新加载整个...通过本文的介绍,我们可以了解到,尽管Ajax技术实现起来并不复杂,但仍然需要对各个细节有所了解和控制,才能实现稳定可靠的异步交互。

    DMVST-Net:AAAI的DMVST-Net 2018

    Huaxiu and Wu, Fei and Ke, Jintao and Tang, Xianfeng and Jia, Yitian and Lu, Siyu and Gong, Pinghua and Ye, Jieping and Li Zhenhui}, booktitle={The Thirty-Second AAAI Conference on Artificial ...

    一维分数次薛定inger方程中奇偶时间对称势的缺陷模式

    在具有奇偶时间对称性的系统中,系统的哈密顿量会表现出奇特的特征,即即使存在增益和损耗,系统依然可能保持本征态的实数本征值,这些本征态所对应的物理量在时间演化过程中保持稳定。这对于发展新的光学器件,例如...

    一个SCRATCH太空冲浪小游戏

    一个SCRATCH太空冲浪小游戏

    27项信安标委归口国家标准.zip

    网络安全等级保护测评过程指南、物联网感知终端应用安全技术要求、网络安全等级保护测评机构能力要求和评估规范、办公信息系统安全管理要求、电子邮件系统安全技术要求、网络攻击定义及描述规范、公民网络电子身份...

Global site tag (gtag.js) - Google Analytics