<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-11  評論-16  文章-1  trackbacks-0

    第三章

    用戶角色權(quán)限RBCA 

     

    第一章介紹了專業(yè)細(xì)粒度權(quán)限管理軟件 Metadmin 的安裝。第二章講解了對于 WEB 頁面的控制。哪些頁面需要登錄才能訪問,哪些頁面不需要登錄就能訪問。需要登錄的頁面,又如何頁面訪問權(quán)限呢?即具有什么樣角色的人才能訪問。 

    本章詳細(xì)講解用戶角色權(quán)限關(guān)系。這也就是 RBCA(Role Based Access Control ,基于角色的訪問控制 ) 。功能級權(quán)限控制到本章為止,就介紹完畢。下章開始介紹細(xì)粒度權(quán)限控制。 


    場景介紹

    基于角色控制模型已經(jīng)深入人心,關(guān)系并不復(fù)雜,廣泛運(yùn)用于各個(gè)系統(tǒng)。通過給用戶賦予角色、角色擁有權(quán)限的模式,達(dá)到控制用戶具有權(quán)限的目的。同時(shí),還復(fù)用了角色,這樣可以讓多個(gè)相同職務(wù)(或職能)的人擁有同樣的角色。 

    比如:


    1. 張三是管理員,他可以修改系統(tǒng)配置參數(shù);
    2. 李四是客服人員,他可以呼叫客戶,處理客戶反饋;
    3. 王五是銷售人員,他可以下訂單,維護(hù)客戶資料。


    RBAC 局限性

    通過這種定義方式,只要擁有該權(quán)限的人,訪問該資源的時(shí)候,會產(chǎn)生相同的效果。比如:李四是北京客服人員,而洪七是上海客服人員,他們呼叫的客戶范圍是不同的。

    如果,定義北京客戶人員,上海客戶人員 2 種角色,那么如果有多個(gè)地方,這維護(hù)起來太費(fèi)力。

    如果,給李四和洪七的用戶名下,分配資源。就是有些網(wǎng)友提出的解決方案:用戶--資源表。那么每個(gè)用戶都要維護(hù)一次,每個(gè)客戶維護(hù)一次,這更費(fèi)力。

    顯然上述兩種方案,都不可取。因?yàn)椋@些都屬于細(xì)粒度、數(shù)據(jù)級的權(quán)限控制, RBAC 模型無能為力。這種細(xì)粒度控制下章開始介紹。

    數(shù)據(jù)庫模型

    基本信息表

    權(quán)限定義,要包含以下幾大類信息:

    1, 該權(quán)限的基本信息;

    2, 一般會將整個(gè)系統(tǒng)權(quán)限看成一棵樹,該權(quán)限在權(quán)限樹上的位置;

    3, 該權(quán)限對應(yīng)的資源,一般為 WEB URL 。

     

    那么權(quán)限表有這么幾個(gè)字段: id, name, description, parented, url, target

     

    角色定義非常簡單: id, name, description

     

    用戶表就不多說了,這是一個(gè)業(yè)務(wù)領(lǐng)域的表。不同系統(tǒng),用戶表結(jié)構(gòu)是不一樣的。

    權(quán)限關(guān)系表

    角色、權(quán)限關(guān)系表: id, privilegeId, roleId ,一個(gè)角色可以擁有多個(gè)權(quán)限,一個(gè)權(quán)限可以被多個(gè)角色擁有,多對多關(guān)系。

     

    用戶、角色關(guān)系表: id, userId, roleId ,同樣是多對多關(guān)系。

    判斷邏輯

    指定用戶、指定權(quán)限,判斷該用戶是否擁有該權(quán)限。

    select roleId from 用戶、權(quán)限管理系表 where userId=? and roleId in( select roleId from 角色、權(quán)限關(guān)系表where privilegeId=?)

    如果有記錄,表明該用戶擁有該權(quán)限,否則表示不擁有。

    如果使用 Metadmin

    Metadmin 是細(xì)粒度權(quán)限管理中間件,可以在 www.metadmin.com 下載試用版。以下界面均引用下載程序包里面的演示示例。

     

    在安裝用戶元數(shù)據(jù)文件的時(shí)候, Metadmin 會自動創(chuàng)建相關(guān)權(quán)限表(權(quán)限表、角色表、權(quán)限角色關(guān)系表、角色用戶關(guān)系表)。在 RBAC 控制方面, Metadmin 提供如下服務(wù):

    1, 自動創(chuàng)建相關(guān)數(shù)據(jù)庫表;

    2, 維護(hù)權(quán)限、角色、給用戶授權(quán),整套后臺程序以及前臺界面;

    3, 提供權(quán)限認(rèn)證 API ,供業(yè)務(wù)系統(tǒng)調(diào)用。

    開發(fā)者只要在業(yè)務(wù)方法里面調(diào)用 API 即可,不需要做任何程序開發(fā)。

     

    權(quán)限界面及常量導(dǎo)出

    權(quán)限維護(hù)界面:樹形結(jié)構(gòu)

      


    權(quán)限定義維護(hù)界面:輸入項(xiàng)參數(shù)

      


    常量導(dǎo)出界面:導(dǎo)出定義的權(quán)限,開發(fā)者將這些常量放入自定義的常量類里面,方便以常量的形式引用各種權(quán)限。

      

    其他界面

    其他管理界面,創(chuàng)建角色、給角色分配權(quán)限,給用戶分配權(quán)限。這些沒有什么特殊之處,僅貼出給角色分配權(quán)限界面,其他不再多說了。

    給角色分配權(quán)限界面:


    API

    就功能權(quán)限方面, Metadmin 提供如下 2 個(gè) API :

    MetadminService 類:

    static boolean

    hasPrivilege (int privilegeId, User  user) 
              判斷指定用戶是否擁有指定的權(quán)限

     

    WebMetadminService 類,更方面給 WEB 程序調(diào)用的,自動從 req 里面讀取用戶:

    static boolean

    hasPrivilege (HttpServletRequest req, int privilegeId) 
              判斷指定用戶是否擁有指定的權(quán)限

     

    完整 API 可在線瀏覽: http://www.metadmin.com/doc/javadoc/index.html

    Metadmin 對于應(yīng)用安全的考慮

    細(xì)心的讀者,肯定會問:

    1, 給用戶分配角色是業(yè)務(wù)管理職責(zé),創(chuàng)建角色、權(quán)限,維護(hù)角色、權(quán)限關(guān)系是系統(tǒng)管理員職責(zé)。這樣籠統(tǒng)的提供一個(gè)界面,讓大家都能使用,這種做法不可取。

    2, 即便是給用戶分配角色,不同業(yè)務(wù)管理員可以分配的用戶范圍是不同的。

     

    是的, Metadmin 對此持有相同看法。為此, Metadmin 預(yù)定義了 3 個(gè)權(quán)限:角色管理、給用戶分配角色和策略管理三種角色。

    如圖示:


     

    擁有“角色管理”權(quán)限的用戶,可以增加、刪除、修改角色,維護(hù)角色擁有的權(quán)限;

    擁有“給用戶分配角色”權(quán)限的用戶,可以管理用戶具有的角色。至于該用戶能夠查看到哪些用戶, Metadmin 也預(yù)留了控制功能。如何控制在此暫時(shí)不表。

    擁有“策略管理”權(quán)限的用戶,能夠進(jìn)行細(xì)粒度權(quán)限管理工作,制定權(quán)限策略。如何制定權(quán)限策略,以后章節(jié)會逐步介紹。

     

    為了讓對 Metadmin 界面訪問權(quán)限生效,還需要對 web.xml 進(jìn)行修改。將 secured 參數(shù)值由 false 改為 true 。

    如圖示:

    posted on 2009-06-18 10:57 細(xì)粒度權(quán)限管理 閱讀(3727) 評論(2)  編輯  收藏

    評論:
    # re: 《玩轉(zhuǎn)細(xì)粒度權(quán)限管理》 三,用戶角色權(quán)限RBCA 2009-06-18 23:20 | vitty
    javaeye上貌似看到過  回復(fù)  更多評論
      
    # re: 《玩轉(zhuǎn)細(xì)粒度權(quán)限管理》 三,用戶角色權(quán)限RBCA 2011-08-25 15:00 | 44
    大哥 圖呢....!!!  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 成人性做爰aaa片免费看| 国产福利在线观看永久免费| 8x网站免费入口在线观看| 亚洲精品美女久久777777| 男女一边摸一边做爽的免费视频 | 黄色a三级三级三级免费看| 日韩成人免费aa在线看| 亚洲码欧美码一区二区三区| 麻豆国产入口在线观看免费| jizzjizz亚洲日本少妇| 亚洲成人高清在线| 国内永久免费crm系统z在线| 亚洲国产精品lv| 欧洲黑大粗无码免费 | 亚洲av乱码中文一区二区三区| 成人人免费夜夜视频观看| 国产精品亚洲а∨无码播放不卡 | 亚洲av无码片区一区二区三区| 成年性生交大片免费看| 男性gay黄免费网站| 亚洲一区二区三区香蕉| 最近免费中文字幕mv在线电影| 亚洲一区电影在线观看| 四虎免费影院4hu永久免费| 国产精品福利片免费看| 亚洲美女激情视频| 免费观看毛片视频| 中文字幕一区二区三区免费视频| 91亚洲va在线天线va天堂va国产| 成人午夜大片免费7777| CAOPORM国产精品视频免费| 久久精品国产亚洲AV无码偷窥 | 德国女人一级毛片免费| 羞羞网站免费观看| 亚洲av激情无码专区在线播放| 无码人妻一区二区三区免费手机| 免费无码国产V片在线观看| 久久亚洲精品中文字幕| 一区国严二区亚洲三区| 免费无码又爽又刺激高潮视频| 亚洲精品理论电影在线观看 |