0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于角色的松耦合式权限控制设计

Android编程精选 来源:稀土掘金 2023-01-12 14:31 次阅读

权限架构

主体采用RBAC(Role-Base Access Control,基于角色的访问控制)模型,就是用户通过角色和权限进行关联实现,多对多的用户角色关系模式。

ab51a446-8c29-11ed-bfe3-dac502259ad0.png

要由用户管理、角色管理、菜单管理几部分组成,角色权限管理包括功能菜单权限、操作权限,数据权限控制,权限主要由功能权限(界面权限、菜单权限、操作权限)和数据权限构成。

ab600824-8c29-11ed-bfe3-dac502259ad0.png

技术架构

系统整体采用微服务架构,安全模块采用OAuth2开放式授权标准,Token令牌采用JWT标准实现,技术框架采用SpringCloud+SpringGateway+SpringSecurity+自定义权限表达式。

ab6fe9b0-8c29-11ed-bfe3-dac502259ad0.png

(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息

Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。

JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。

权限配置

密钥配置

系统遵循OAuth2开放式授权标准协议,Token令牌采用RSA非对称加密算法加密,系统用户密码采用MD5加密。

ab7b17b8-8c29-11ed-bfe3-dac502259ad0.png

权限表达式配置

鉴权(authentication)是指验证用户是否拥有访问系统的权利,鉴权配置即配置哪些资源需要什么权限才能访问,配置资源与权限之间的关系。

权限配置文件位于resources/security.yml

ab8e82d0-8c29-11ed-bfe3-dac502259ad0.png

在介绍权限表达式配置之前需要先了解下权限表达式、URL路径、权限谓词3个概念, 权限表达式描述资源权限的逻辑关系,包括请求方式、URL路径、权限谓词3个部分, 请求方式即HTTP请求方法,如:GET、POST、PUT、DELETE等,URL路径即需要鉴权的URL路径地址,支持多种通配符匹配,权限谓词用于描述或判定权限性质、特征或权限之间关系的表达式。

ab9fa466-8c29-11ed-bfe3-dac502259ad0.png

格式语法

目前支持两种类型的权限表达语法,分别功能权限表达式、数据权限表达式。

功能权限表达式

HTTP请求方法 URL路径=权限谓词表达式

abac0404-8c29-11ed-bfe3-dac502259ad0.png

红色部分:HTTP请求方法,例如GET、POST、PUT、DELETE等

黄色部分:空格占位符

绿色部分:URL表达式,支持多种通配符。例如:/app/*/users,app/**

橙色部分:等于号占位符,描述左侧匹配资源需要右侧权限。

蓝色部分:权限谓词,例如:(view&&export)||edit表示需要查看与导出权限,或者编辑权限。

数据权限表达式

HTTP请求方法 URL路径参数=权限谓词表达式参数

abb926a2-8c29-11ed-bfe3-dac502259ad0.png

浅绿色部分:参数占位符,数据定位参数顾名思义用于唯一标识行级数据的参数,支持多参数标识,支持批量行数据定位鉴权。

URL路径表达式

URL路径表达式,用于配置需要进行鉴权的资源路径地址。路径有三种通配符匹配方法,这些可以组合出很多种灵活的路径模式

abc76ac8-8c29-11ed-bfe3-dac502259ad0.pngabdafff2-8c29-11ed-bfe3-dac502259ad0.pngabe85026-8c29-11ed-bfe3-dac502259ad0.png

示例:

abf50f00-8c29-11ed-bfe3-dac502259ad0.png

权限谓词

支持与或非逻辑运算: 例如: a&&b, a||b, (a&&b)||(c&&d), a&&b||c, !a, !(a&&b),例如:view&&export)||edit表示校验是否拥有查看和导出的权限,或者编辑权限。

参数

数据权限控制需要唯一标识行数据,用于验证用户是否有该数据的操作权限,参数占位符为数据定位器的参数名,支持单参数、复合参数,单条数据定位鉴权({参数名}大括号),批量数据定位鉴权([参数名]中括号)。例如单参数userId用户编号,productId产品编号,复合参数type类型、productId产品编码,批量数据权限鉴权userIds用户编码集,需要指出的是每个表达式运算的数据对象是每一条数据。

示例:

abfff60e-8c29-11ed-bfe3-dac502259ad0.png

一个参数时权限项表达式参数默认可以不配置/user/{id}=view&&eidt等于/user/{id}=view{id}&&eidt{id} 路径参数

ac0bf1de-8c29-11ed-bfe3-dac502259ad0.png

实体参数

ac1860ea-8c29-11ed-bfe3-dac502259ad0.pngac2350f4-8c29-11ed-bfe3-dac502259ad0.png

复合参数

ac2e989c-8c29-11ed-bfe3-dac502259ad0.pngac3e3964-8c29-11ed-bfe3-dac502259ad0.png

元素配置

权限配置由permit-paths白名单、jwt-users来宾用户、resource资源权限3部分元素组成,其中resource元素包括authrities、data-authrities两部分元素。

ac499fa2-8c29-11ed-bfe3-dac502259ad0.png

permit-paths白名单

无需进行权限过滤的请求路径,当系统有些资源不需要进行权限过滤的时候配置该元素,配置语法如下图所示,路径表达式配置。

ac546540-8c29-11ed-bfe3-dac502259ad0.png

Resource资源权限

资源权限配置元素为权限模块的核心元素,包括authrities功能权限、data-authrities数据权限,两者的区别在于功能权限为URL匹配路径的权限控制,数据权限在URL匹配路径的基础上增加了数据鉴权控制。

Authrities功能权限

功能权限控制,通常表示界面业务功能接口权限的控制,例如:用户列表数据获取接口,用户信息添加、删除、更新等等接口的权限控制。

ac5f0a04-8c29-11ed-bfe3-dac502259ad0.png

data-authrities数据权限

数据权限控制,为更细粒度的权限控制,是对业务行级数据的操作权限进行控制,例如用户只能查看、操作自己创建的数据,管理员可以赋权给指定的用户或角色查看、操作某些某条数据。

ac708888-8c29-11ed-bfe3-dac502259ad0.png

微前端

微前端架构是一种类似于微服务的可插拔式架构,它将微服务的理念应用于浏览器端,即将 Web 应用由单一单体应用变为多个小型可独立运行、独立开发、独立部署的应用。

ac8003bc-8c29-11ed-bfe3-dac502259ad0.png

前端页面通过微前端加载器,利用页面路由和动态加载等技术,实现前端集成主页面与微前端的“拼图式”开发。前端集成项目团队只需关注前端整体风格、微前端之间的数据交互和页面路由等内容,不涉及前端与后端之间以及后端与后端之间的 API 集成,从而降低集成过程中的技术敏感度、团队沟通成本和集成复杂度,提高交付效率和用户体验。

ac8d20f6-8c29-11ed-bfe3-dac502259ad0.png

外部系统前端应用部署集成,各系统前端应用组件独立打包部署,通过配置部署、动态加载应用、统一生命周期管理。

ac9a362e-8c29-11ed-bfe3-dac502259ad0.png

总结

基于权限表达式实现的系统可轻松集成被集成,业务系统作为子系统存在,安全权限管理由宿主统统一处理,将复杂且耦合性高的权限控制从业务服务中剥离,业务子系统只需关注业务逻辑处理,真正做到无缝集成,降低了系统集成的难度与复杂性,提升了系统的整体性能和可维护性。

系统权限模块只是实现了基本的权限控制需求,还存在许多需要完善的地方,例如前端页面功能按钮的权限控制、大数据量的权限数据维护繁琐,需要一条条添加维护好菜单、功能权限、操作权限数据,手动配置鉴权数据极易出错等等。或许将来有需要可以优化的地方。

自动识别功能权限数据

集成新的业务服务维护功能权限数据需要对业务服务接口全面了解,需要一条条维护好功能接口,URL地址、权限标识符极易存在拼写错误,或许可以通过一定的场景自动扫描获取注册服务所有公开的资源接口,管理员可以在系统里通过界面自动查看、搜索资源接口动态可选择地导入接口数据(功能权限数据)。

自动初始化操作权限

一般功能操作为增、删、改、查,可以在添加菜单数据后自动初始化操作功能,用户也可以单独添加修改操作功能数据。

基础数据权限可配置

根据需要可以通过界面,选择需要进行数据权限控制的业务模块,自动导入数据权限控制基础数据。

自助式鉴权配置

用户可以通过可视化界面简单操作配置白名单、来宾用户权限、资源权限等数据,支持鉴权配置数据导入导出等,例如:自动列出所有功能接口通过搜索、勾选等方式选择需要鉴权的资源,引导式配置权限谓词表达式等。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • URL
    URL
    +关注

    关注

    0

    文章

    134

    浏览量

    14830
  • RSA
    RSA
    +关注

    关注

    0

    文章

    59

    浏览量

    18759
  • RBAC
    +关注

    关注

    0

    文章

    43

    浏览量

    9891
  • HTTP协议
    +关注

    关注

    0

    文章

    54

    浏览量

    9638

原文标题:松耦合式的权限控制设计,自定义权限表达式yyds!

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    iMatrix平台核心功能—权限管理介绍

    iMatrix平台的权限管理系统(ACS)是一个基于角色的访问控制(Role-BasedAccess Control)系统。熟悉RBAC的朋友应该知道,在RBAC中,权限
    发表于 07-11 11:59

    耦合无线充电方案详解

    方案进行无线充电,否则将构成安全隐患。 与紧耦合技术相比,耦合的限制少了许多。无线充电三大联盟分别是:无线充电联盟WPC(Wireless Power Consortium)/Qi、电力事业联盟PMA
    发表于 10-09 14:45

    耦合方式将成无线充电技术主流

    ElJallad日前在接受《中国电子报》记者采访时表示,与此前流行的紧耦合无线充电技术相比,技术趋于成熟的耦合充电是下一代无线充电技术,应用场景广泛。  从紧到带来哪些优点  无
    发表于 11-30 16:46

    光电耦合式稳压电源电路由什么组成?

    光电耦合式稳压电源电路
    发表于 03-02 09:52

    Rototest轴耦合式底盘测功机产品有哪些优势?

    Rototest轴耦合式底盘测功机(轮毂式)可模拟整车实际行驶的道路负载,同步采集驱动轮扭矩、转速等参数,分析整车动力性能。同时也可配备其他设备进行经济性、排放性、能量管理和续驶里程等试验。系统组成
    发表于 08-30 06:22

    耦合式集中滤波器电路

    耦合式集中滤波器电路
    发表于 12-15 17:36 383次阅读
    内<b class='flag-5'>耦合式</b>集中滤波器电路

    耦合式集中参数滤波器电路

    耦合式集中参数滤波器电路
    发表于 12-15 17:47 439次阅读
    外<b class='flag-5'>耦合式</b>集中参数滤波器电路

    耦合式数据传输电路

    耦合式数据传输电路
    发表于 12-22 02:28 376次阅读
    光<b class='flag-5'>耦合式</b>数据传输电路

    射极耦合式差动放大电路图

    射极耦合式差动放大电路图
    发表于 05-07 12:52 1880次阅读
    射极<b class='flag-5'>耦合式</b>差动放大电路图

    基于角色访问控制的单点登录模型研究与设计

    为了解决复杂Web服务中用户认证与权限管理的问题,对单点登录技术的进行了研究。在此基础上,根据单点登录技术的特点结合基于角色控制访问提出了基于角色访问
    发表于 12-17 10:59 24次下载
    基于<b class='flag-5'>角色</b>访问<b class='flag-5'>控制</b>的单点登录模型研究与设计

    发射极耦合式多谐振荡器原理图

    发射极耦合式多谐振荡器原理图都是值得参考的设计。
    发表于 05-11 17:11 34次下载

    基于角色的多约束动态权限管理模型

    在基于角色的访问控制模型(RBAC)基础上,引入访问终端、网络环境和接入方式等外部因素,提出了基于角色的多约束动态权限管理模型,依据外部因素的安全程度和资源可能带来安全风险分别对外部因
    发表于 11-14 11:17 6次下载
    基于<b class='flag-5'>角色</b>的多约束动态<b class='flag-5'>权限</b>管理模型

    耦合式无电收音机diy教程

    利用身边的现有器材,很方便地可以制作一款耦合式无电收音机。
    的头像 发表于 09-14 10:11 3468次阅读

    sqlserver的角色权限总结

    服务器角色: 服务器角色的拥有者只有登入名,服务器角色是固定的,用户无法创建服务器角色
    的头像 发表于 01-13 14:30 1.1w次阅读

    AWTK 开源串口屏开发(9) - 用户和权限管理

    的功能。在工业软件中,通常将用户分为几种不同的角色,每种角色有不同的权限,比如管理员、操作员和维护员等等。在AWTK串口屏中,内置基本的用户管理和权限
    的头像 发表于 02-19 12:10 188次阅读
    AWTK 开源串口屏开发(9) - 用户和<b class='flag-5'>权限</b>管理