0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于角色的松耦合式權(quán)限控制設(shè)計(jì)

Android編程精選 ? 來(lái)源:稀土掘金 ? 2023-01-12 14:31 ? 次閱讀

權(quán)限架構(gòu)

主體采用RBAC(Role-Base Access Control,基于角色的訪問(wèn)控制)模型,就是用戶(hù)通過(guò)角色和權(quán)限進(jìn)行關(guān)聯(lián)實(shí)現(xiàn),多對(duì)多的用戶(hù)角色關(guān)系模式。

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

要由用戶(hù)管理、角色管理、菜單管理幾部分組成,角色權(quán)限管理包括功能菜單權(quán)限、操作權(quán)限,數(shù)據(jù)權(quán)限控制,權(quán)限主要由功能權(quán)限(界面權(quán)限、菜單權(quán)限、操作權(quán)限)和數(shù)據(jù)權(quán)限構(gòu)成。

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

技術(shù)架構(gòu)

系統(tǒng)整體采用微服務(wù)架構(gòu),安全模塊采用OAuth2開(kāi)放式授權(quán)標(biāo)準(zhǔn),Token令牌采用JWT標(biāo)準(zhǔn)實(shí)現(xiàn),技術(shù)框架采用SpringCloud+SpringGateway+SpringSecurity+自定義權(quán)限表達(dá)式。

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

(Open Authorization,開(kāi)放授權(quán))是為用戶(hù)資源的授權(quán)定義了一個(gè)安全、開(kāi)放及簡(jiǎn)單的標(biāo)準(zhǔn),第三方無(wú)需知道用戶(hù)的賬號(hào)及密碼,就可獲取到用戶(hù)的授權(quán)信息。

Json web token (JWT), 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開(kāi)放標(biāo)準(zhǔn)((RFC 7519).該token被設(shè)計(jì)為緊湊且安全的,特別適用于分布式站點(diǎn)的單點(diǎn)登錄(SSO)場(chǎng)景。

JWT的聲明一般被用來(lái)在身份提供者和服務(wù)提供者間傳遞被認(rèn)證的用戶(hù)身份信息,以便于從資源服務(wù)器獲取資源,也可以增加一些額外的其它業(yè)務(wù)邏輯所必須的聲明信息,該token也可直接被用于認(rèn)證,也可被加密。

權(quán)限配置

密鑰配置

系統(tǒng)遵循OAuth2開(kāi)放式授權(quán)標(biāo)準(zhǔn)協(xié)議,Token令牌采用RSA非對(duì)稱(chēng)加密算法加密,系統(tǒng)用戶(hù)密碼采用MD5加密。

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

權(quán)限表達(dá)式配置

鑒權(quán)(authentication)是指驗(yàn)證用戶(hù)是否擁有訪問(wèn)系統(tǒng)的權(quán)利,鑒權(quán)配置即配置哪些資源需要什么權(quán)限才能訪問(wèn),配置資源與權(quán)限之間的關(guān)系。

權(quán)限配置文件位于resources/security.yml

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

在介紹權(quán)限表達(dá)式配置之前需要先了解下權(quán)限表達(dá)式、URL路徑、權(quán)限謂詞3個(gè)概念, 權(quán)限表達(dá)式描述資源權(quán)限的邏輯關(guān)系,包括請(qǐng)求方式、URL路徑、權(quán)限謂詞3個(gè)部分, 請(qǐng)求方式即HTTP請(qǐng)求方法,如:GET、POST、PUT、DELETE等,URL路徑即需要鑒權(quán)的URL路徑地址,支持多種通配符匹配,權(quán)限謂詞用于描述或判定權(quán)限性質(zhì)、特征或權(quán)限之間關(guān)系的表達(dá)式。

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

格式語(yǔ)法

目前支持兩種類(lèi)型的權(quán)限表達(dá)語(yǔ)法,分別功能權(quán)限表達(dá)式、數(shù)據(jù)權(quán)限表達(dá)式。

功能權(quán)限表達(dá)式

HTTP請(qǐng)求方法 URL路徑=權(quán)限謂詞表達(dá)式

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

紅色部分:HTTP請(qǐng)求方法,例如GET、POST、PUT、DELETE等

黃色部分:空格占位符

綠色部分:URL表達(dá)式,支持多種通配符。例如:/app/*/users,app/**

橙色部分:等于號(hào)占位符,描述左側(cè)匹配資源需要右側(cè)權(quán)限。

藍(lán)色部分:權(quán)限謂詞,例如:(view&&export)||edit表示需要查看與導(dǎo)出權(quán)限,或者編輯權(quán)限。

數(shù)據(jù)權(quán)限表達(dá)式

HTTP請(qǐng)求方法 URL路徑參數(shù)=權(quán)限謂詞表達(dá)式參數(shù)

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

淺綠色部分:參數(shù)占位符,數(shù)據(jù)定位參數(shù)顧名思義用于唯一標(biāo)識(shí)行級(jí)數(shù)據(jù)的參數(shù),支持多參數(shù)標(biāo)識(shí),支持批量行數(shù)據(jù)定位鑒權(quán)。

URL路徑表達(dá)式

URL路徑表達(dá)式,用于配置需要進(jìn)行鑒權(quán)的資源路徑地址。路徑有三種通配符匹配方法,這些可以組合出很多種靈活的路徑模式

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

示例:

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

權(quán)限謂詞

支持與或非邏輯運(yùn)算: 例如: a&&b, a||b, (a&&b)||(c&&d), a&&b||c, !a, !(a&&b),例如:view&&export)||edit表示校驗(yàn)是否擁有查看和導(dǎo)出的權(quán)限,或者編輯權(quán)限。

參數(shù)

數(shù)據(jù)權(quán)限控制需要唯一標(biāo)識(shí)行數(shù)據(jù),用于驗(yàn)證用戶(hù)是否有該數(shù)據(jù)的操作權(quán)限,參數(shù)占位符為數(shù)據(jù)定位器的參數(shù)名,支持單參數(shù)、復(fù)合參數(shù),單條數(shù)據(jù)定位鑒權(quán)({參數(shù)名}大括號(hào)),批量數(shù)據(jù)定位鑒權(quán)([參數(shù)名]中括號(hào))。例如單參數(shù)userId用戶(hù)編號(hào),productId產(chǎn)品編號(hào),復(fù)合參數(shù)type類(lèi)型、productId產(chǎn)品編碼,批量數(shù)據(jù)權(quán)限鑒權(quán)userIds用戶(hù)編碼集,需要指出的是每個(gè)表達(dá)式運(yùn)算的數(shù)據(jù)對(duì)象是每一條數(shù)據(jù)。

示例:

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

一個(gè)參數(shù)時(shí)權(quán)限項(xiàng)表達(dá)式參數(shù)默認(rèn)可以不配置/user/{id}=view&&eidt等于/user/{id}=view{id}&&eidt{id} 路徑參數(shù)

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

實(shí)體參數(shù)

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

復(fù)合參數(shù)

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

元素配置

權(quán)限配置由permit-paths白名單、jwt-users來(lái)賓用戶(hù)、resource資源權(quán)限3部分元素組成,其中resource元素包括authrities、data-authrities兩部分元素。

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

permit-paths白名單

無(wú)需進(jìn)行權(quán)限過(guò)濾的請(qǐng)求路徑,當(dāng)系統(tǒng)有些資源不需要進(jìn)行權(quán)限過(guò)濾的時(shí)候配置該元素,配置語(yǔ)法如下圖所示,路徑表達(dá)式配置。

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

Resource資源權(quán)限

資源權(quán)限配置元素為權(quán)限模塊的核心元素,包括authrities功能權(quán)限、data-authrities數(shù)據(jù)權(quán)限,兩者的區(qū)別在于功能權(quán)限為URL匹配路徑的權(quán)限控制,數(shù)據(jù)權(quán)限在URL匹配路徑的基礎(chǔ)上增加了數(shù)據(jù)鑒權(quán)控制。

Authrities功能權(quán)限

功能權(quán)限控制,通常表示界面業(yè)務(wù)功能接口權(quán)限的控制,例如:用戶(hù)列表數(shù)據(jù)獲取接口,用戶(hù)信息添加、刪除、更新等等接口的權(quán)限控制。

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

data-authrities數(shù)據(jù)權(quán)限

數(shù)據(jù)權(quán)限控制,為更細(xì)粒度的權(quán)限控制,是對(duì)業(yè)務(wù)行級(jí)數(shù)據(jù)的操作權(quán)限進(jìn)行控制,例如用戶(hù)只能查看、操作自己創(chuàng)建的數(shù)據(jù),管理員可以賦權(quán)給指定的用戶(hù)或角色查看、操作某些某條數(shù)據(jù)。

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

微前端

微前端架構(gòu)是一種類(lèi)似于微服務(wù)的可插拔式架構(gòu),它將微服務(wù)的理念應(yīng)用于瀏覽器端,即將 Web 應(yīng)用由單一單體應(yīng)用變?yōu)槎鄠€(gè)小型可獨(dú)立運(yùn)行、獨(dú)立開(kāi)發(fā)、獨(dú)立部署的應(yīng)用。

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

前端頁(yè)面通過(guò)微前端加載器,利用頁(yè)面路由和動(dòng)態(tài)加載等技術(shù),實(shí)現(xiàn)前端集成主頁(yè)面與微前端的“拼圖式”開(kāi)發(fā)。前端集成項(xiàng)目團(tuán)隊(duì)只需關(guān)注前端整體風(fēng)格、微前端之間的數(shù)據(jù)交互和頁(yè)面路由等內(nèi)容,不涉及前端與后端之間以及后端與后端之間的 API 集成,從而降低集成過(guò)程中的技術(shù)敏感度、團(tuán)隊(duì)溝通成本和集成復(fù)雜度,提高交付效率和用戶(hù)體驗(yàn)。

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

外部系統(tǒng)前端應(yīng)用部署集成,各系統(tǒng)前端應(yīng)用組件獨(dú)立打包部署,通過(guò)配置部署、動(dòng)態(tài)加載應(yīng)用、統(tǒng)一生命周期管理。

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

總結(jié)

基于權(quán)限表達(dá)式實(shí)現(xiàn)的系統(tǒng)可輕松集成被集成,業(yè)務(wù)系統(tǒng)作為子系統(tǒng)存在,安全權(quán)限管理由宿主統(tǒng)統(tǒng)一處理,將復(fù)雜且耦合性高的權(quán)限控制從業(yè)務(wù)服務(wù)中剝離,業(yè)務(wù)子系統(tǒng)只需關(guān)注業(yè)務(wù)邏輯處理,真正做到無(wú)縫集成,降低了系統(tǒng)集成的難度與復(fù)雜性,提升了系統(tǒng)的整體性能和可維護(hù)性。

系統(tǒng)權(quán)限模塊只是實(shí)現(xiàn)了基本的權(quán)限控制需求,還存在許多需要完善的地方,例如前端頁(yè)面功能按鈕的權(quán)限控制、大數(shù)據(jù)量的權(quán)限數(shù)據(jù)維護(hù)繁瑣,需要一條條添加維護(hù)好菜單、功能權(quán)限、操作權(quán)限數(shù)據(jù),手動(dòng)配置鑒權(quán)數(shù)據(jù)極易出錯(cuò)等等?;蛟S將來(lái)有需要可以?xún)?yōu)化的地方。

自動(dòng)識(shí)別功能權(quán)限數(shù)據(jù)

集成新的業(yè)務(wù)服務(wù)維護(hù)功能權(quán)限數(shù)據(jù)需要對(duì)業(yè)務(wù)服務(wù)接口全面了解,需要一條條維護(hù)好功能接口,URL地址、權(quán)限標(biāo)識(shí)符極易存在拼寫(xiě)錯(cuò)誤,或許可以通過(guò)一定的場(chǎng)景自動(dòng)掃描獲取注冊(cè)服務(wù)所有公開(kāi)的資源接口,管理員可以在系統(tǒng)里通過(guò)界面自動(dòng)查看、搜索資源接口動(dòng)態(tài)可選擇地導(dǎo)入接口數(shù)據(jù)(功能權(quán)限數(shù)據(jù))。

自動(dòng)初始化操作權(quán)限

一般功能操作為增、刪、改、查,可以在添加菜單數(shù)據(jù)后自動(dòng)初始化操作功能,用戶(hù)也可以單獨(dú)添加修改操作功能數(shù)據(jù)。

基礎(chǔ)數(shù)據(jù)權(quán)限可配置

根據(jù)需要可以通過(guò)界面,選擇需要進(jìn)行數(shù)據(jù)權(quán)限控制的業(yè)務(wù)模塊,自動(dòng)導(dǎo)入數(shù)據(jù)權(quán)限控制基礎(chǔ)數(shù)據(jù)。

自助式鑒權(quán)配置

用戶(hù)可以通過(guò)可視化界面簡(jiǎn)單操作配置白名單、來(lái)賓用戶(hù)權(quán)限、資源權(quán)限等數(shù)據(jù),支持鑒權(quán)配置數(shù)據(jù)導(dǎo)入導(dǎo)出等,例如:自動(dòng)列出所有功能接口通過(guò)搜索、勾選等方式選擇需要鑒權(quán)的資源,引導(dǎo)式配置權(quán)限謂詞表達(dá)式等。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • URL
    URL
    +關(guān)注

    關(guān)注

    0

    文章

    138

    瀏覽量

    15213
  • RSA
    RSA
    +關(guān)注

    關(guān)注

    0

    文章

    59

    瀏覽量

    18812
  • RBAC
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    9924
  • HTTP協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    56

    瀏覽量

    9679

原文標(biāo)題:松耦合式的權(quán)限控制設(shè)計(jì),自定義權(quán)限表達(dá)式y(tǒng)yds!

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    耦合無(wú)線充電方案詳解

    方案進(jìn)行無(wú)線充電,否則將構(gòu)成安全隱患。 與緊耦合技術(shù)相比,耦合的限制少了許多。無(wú)線充電三大聯(lián)盟分別是:無(wú)線充電聯(lián)盟WPC(Wireless Power Consortium)/Qi、電力事業(yè)聯(lián)盟PMA
    發(fā)表于 10-09 14:45

    耦合方式將成無(wú)線充電技術(shù)主流

    ElJallad日前在接受《中國(guó)電子報(bào)》記者采訪時(shí)表示,與此前流行的緊耦合無(wú)線充電技術(shù)相比,技術(shù)趨于成熟的耦合充電是下一代無(wú)線充電技術(shù),應(yīng)用場(chǎng)景廣泛?! 木o到帶來(lái)哪些優(yōu)點(diǎn)  無(wú)
    發(fā)表于 11-30 16:46

    光電耦合式穩(wěn)壓電源電路由什么組成?

    光電耦合式穩(wěn)壓電源電路
    發(fā)表于 03-02 09:52

    Rototest軸耦合式底盤(pán)測(cè)功機(jī)產(chǎn)品有哪些優(yōu)勢(shì)?

    Rototest軸耦合式底盤(pán)測(cè)功機(jī)(輪轂式)可模擬整車(chē)實(shí)際行駛的道路負(fù)載,同步采集驅(qū)動(dòng)輪扭矩、轉(zhuǎn)速等參數(shù),分析整車(chē)動(dòng)力性能。同時(shí)也可配備其他設(shè)備進(jìn)行經(jīng)濟(jì)性、排放性、能量管理和續(xù)駛里程等試驗(yàn)。系統(tǒng)組成
    發(fā)表于 08-30 06:22

    內(nèi)耦合式集中濾波器電路

    內(nèi)耦合式集中濾波器電路
    發(fā)表于 12-15 17:36 ?400次閱讀
    內(nèi)<b class='flag-5'>耦合式</b>集中濾波器電路

    耦合式集中參數(shù)濾波器電路

    耦合式集中參數(shù)濾波器電路
    發(fā)表于 12-15 17:47 ?467次閱讀
    外<b class='flag-5'>耦合式</b>集中參數(shù)濾波器電路

    耦合式數(shù)據(jù)傳輸電路

    耦合式數(shù)據(jù)傳輸電路
    發(fā)表于 12-22 02:28 ?417次閱讀
    光<b class='flag-5'>耦合式</b>數(shù)據(jù)傳輸電路

    射極耦合式差動(dòng)放大電路圖

    射極耦合式差動(dòng)放大電路圖
    發(fā)表于 05-07 12:52 ?1919次閱讀
    射極<b class='flag-5'>耦合式</b>差動(dòng)放大電路圖

    基于角色訪問(wèn)控制的單點(diǎn)登錄模型研究與設(shè)計(jì)

    為了解決復(fù)雜Web服務(wù)中用戶(hù)認(rèn)證與權(quán)限管理的問(wèn)題,對(duì)單點(diǎn)登錄技術(shù)的進(jìn)行了研究。在此基礎(chǔ)上,根據(jù)單點(diǎn)登錄技術(shù)的特點(diǎn)結(jié)合基于角色控制訪問(wèn)提出了基于角色訪問(wèn)
    發(fā)表于 12-17 10:59 ?24次下載
    基于<b class='flag-5'>角色</b>訪問(wèn)<b class='flag-5'>控制</b>的單點(diǎn)登錄模型研究與設(shè)計(jì)

    基于角色的多約束動(dòng)態(tài)權(quán)限管理模型

    在基于角色的訪問(wèn)控制模型(RBAC)基礎(chǔ)上,引入訪問(wèn)終端、網(wǎng)絡(luò)環(huán)境和接入方式等外部因素,提出了基于角色的多約束動(dòng)態(tài)權(quán)限管理模型,依據(jù)外部因素的安全程度和資源可能帶來(lái)安全風(fēng)險(xiǎn)分別對(duì)外部因
    發(fā)表于 11-14 11:17 ?6次下載
    基于<b class='flag-5'>角色</b>的多約束動(dòng)態(tài)<b class='flag-5'>權(quán)限</b>管理模型

    耦合特性對(duì)混合式磁軸承的影響

    主動(dòng)與被動(dòng)混合式磁軸承(Hybrid Magnetic Bearing,HMB)的徑向利用無(wú)需控制的斥力型徑向被動(dòng)軸承,使其機(jī)械結(jié)構(gòu)、控制更加簡(jiǎn)單,具有一定的發(fā)展前景。通常設(shè)計(jì)HMB的方法是對(duì)推力
    發(fā)表于 03-13 11:18 ?1次下載
    力<b class='flag-5'>耦合</b>特性對(duì)混<b class='flag-5'>合式</b>磁軸承的影響

    耦合式無(wú)電收音機(jī)diy教程

    利用身邊的現(xiàn)有器材,很方便地可以制作一款耦合式無(wú)電收音機(jī)。
    的頭像 發(fā)表于 09-14 10:11 ?3603次閱讀

    sqlserver的角色權(quán)限總結(jié)

    服務(wù)器角色: 服務(wù)器角色的擁有者只有登入名,服務(wù)器角色是固定的,用戶(hù)無(wú)法創(chuàng)建服務(wù)器角色。
    的頭像 發(fā)表于 01-13 14:30 ?1.4w次閱讀

    耦合反激LED電源的分析與設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《耦合反激LED電源的分析與設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-07 14:52 ?0次下載
    <b class='flag-5'>松</b><b class='flag-5'>耦合</b>反激LED電源的分析與設(shè)計(jì)

    差分對(duì)緊耦合真的比耦合好嗎?

    差分對(duì)緊耦合真的比耦合好嗎?
    的頭像 發(fā)表于 11-30 15:24 ?799次閱讀
    差分對(duì)緊<b class='flag-5'>耦合</b>真的比<b class='flag-5'>松</b><b class='flag-5'>耦合</b>好嗎?