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

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

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

    樂在其中

    以JEE為主攻,以Flex為點綴,以Eclipse RCP為樂趣
    請訪問http://www.inframesh.org

    首頁 新隨筆 聯系 管理
      43 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

    1 權限控制體系中的基本概念

      1.1 身份與主題

      身份(Principal)描述的是用戶以及和用戶相關的社會關系的屬性,例如角色、群組、職位等等。

      主題(Subject)是身份的集合,描述的是一個用戶所具有的所有身份。

      下圖表示用戶的身份:

      圖1 用戶身份關系圖

      1.2 資源與資源域

      資源是系統中的一種存在,包括具體資源和抽象資源。

      具體資源,是實實在在的資源,例如系統模塊、頁面中的按鈕、等等。

      抽象資源,可以說是一種描述性資源,例如表達式資源等。

      資源域(Resource Domain)是系統中資源的類別,是對多樣性資源的一種劃分方式。

      一個資源域可以包含多種類型的資源,資源的類型在.net中可以用代表該資源的類來表示,同一種類型的資源是以資源的標識來加以區分的。

      一個資源在系統中的是以“資源域-資源類型-資源標識”來唯一標識和定位的。

      資源域的一個例子:

      圖2 資源域實例圖

      1.3 操作

      操作(Action),描述的是對某種資源可能的行為,對于某種資源往往可能有多種操作,例如對于文檔資源,可能的操作為查看(view)、編輯(edit)、刪除(delete)、移動(move)等。

      如果對于某種資源的操作較多,可能會出現某些操作之間有包含關系,而某些操作之間沒有包含關系的情況。例如上面對于文檔的幾種操作中,一般拉來說,編輯應該包含查看,而刪除應該包含編輯等等,而編輯和移動之間就不一定有包含關系。

      對于操作之間的包含關系,可以通過下面的樹形結構來說明:

      圖3 資源操作圖

    1.4 許可與權限

      許可(Permission)描述的是對系統中資源的操作,“通常一個許可包含一個目標(‘由這個權限控制的操作將對誰執行?’)和一個操作(‘如果這個權限允許的話,對這個目標將執行什么操作?’)”。

      許可=資源 + 操作。

      權限,可以認為是對許可的一種更為常用的說法,在實際的程序設計中,權限往往被附加上了身份的描述。

      權限=[身份+]資源+ 操作。

      1.5 允許權限與拒絕權限

      ? 允許權限,明確允許身份A能夠對資源B進行C操作,例如允許小王對工程管理模塊進行管理操作。

      ? 拒絕權限,明確拒絕身份A能夠對資源B進行C操作,例如不允許小王對工程管理模塊進行管理操作。

      ? 如果一個系統中沒有明確允許身份A能夠對資源B進行C操作,那么并不代表系統就拒絕了身份A能夠對資源B的C操作。

      圖 4 允許權限與拒絕權限示意圖

      1.6 傳播權限與阻止權限

      ? 傳播權限,明確允許或拒絕身份A能夠對資源B進行C操作,并將該描述已資源B為祖先向下傳播,即身份A對資源B及B的子孫資源都能夠進行C操作。

      ? 阻止權限,即在傳播源的子孫(某些)節點阻止祖先傳播權限在那些節點的傳播,即一旦在某節點阻止了祖先在該點的傳播權限,則該阻止自動往下傳播。

      圖 5 傳播權限與阻止權限圖

      圖 7 基于角色的權限控制模型圖

      1.7 各種權限類型的聯系與區別

      從概念上說,允許權限與拒絕權限是一對,而傳播權限和阻止權限是一對。

      允許/拒絕權限是資源點上權限的橫向描述,而傳播/阻止權限是資源點上權限的縱向描述。

      拒絕權限與阻止權限的區別:如果在某個節點設置了對某個集合身份(例如群組)的拒絕權限,則該集合身份下的人,無論他們有多少其他身份,也無論這些其他身份是否設置了允許權限,最終都會因為拒絕權限而拒絕。而阻止權限與此不同,例如我們設置了對傳播權限的一個阻止權限,同時在該節點又設置了允許權限,則我們先計算自身的拒絕與允許權限,然后才計算傳播與阻止權限,因此阻止權限并不能阻止該節點的關聯的允許或拒絕權限。

     2 權限控制模型

      2.1 主體-客體權限控制模型

      ? 出現于早期的應用之中。在這里,主體相當于系統的訪問者,客體相當于系統的資源。

      ? 主體對于客體是否能夠訪問,一般是通過一個矩陣實現的。

      ? 優點:授權關系明確,直截了當,存取都很容易。

      ? 缺點:不能適應變化。

      圖 6 主體-客體權限控制模型圖

    2.2 基于任務的權限控制模型

      ? 任務是工作流程中的一個邏輯單元,一個流程一般包含一到多個任務。

      ? 所謂基于任務,簡單的說,就是主體在不同的任務中被許可的權限可能是不一樣的,即使是在一個任務中,那么權限也會隨著任務生命周期的不同而有所不同。

      ? 因為權限隨著任務和任務狀態的不同而不同,所以這是一種動態的權限控制模型。

      ? 優點:適合于與上下文環境關聯緊密或者需要動態授權的應用系統,例如工作流引擎的權限控制。

      ? 缺點:只適應于某些應用系統,絕大多數系統更為需要的是靜態權限控制模型。

      2.3 基于角色的權限控制模型

      ? 以角色為橋梁,將用戶和資源連接起來,用戶對某個資源是否能夠訪問,取決于該用戶所對應的角色是否能夠對某個資源訪問。

      ? 優點:適應變化。

      ? 缺點:用戶只能通過角色與資源打交道,那么為了某些特殊的用戶,系統中不得不創建一些特殊的角色,這些角色實際上已經弱化為用戶了。

      2.4 綜合權限控制模型

      ? 以角色為橋梁,將用戶和資源連接起來,用戶對某個資源是否能夠訪問,取決于該用戶所對應的角色是否能夠對某個資源訪問。

      ? 以群組為擴展,將某一組織或者群體下的用戶統一授權,用戶對某個資源是否能夠訪問,取決于該用戶所對應的群組是否能夠對某個資源訪問。

      ? 優點:授權方面、靈活。

      ? 缺點:權限控制較難,計算復雜,運算效率低。

      圖8 綜合權限控制模型圖

    2.5 模型總體視圖

      權限功能組件

      圖10權限功能組件

      模型中重要的對象

      身份(Principal)

      圖11權限的身份

    資源(Resource)

      資源域(Resource Domain)

      ? 提供資源域管理界面,通過該界面可以建立新的資源域,并向域中加入某類或多類資源,還可以配置資源的權限描述類

      ? 資源域的對外服務是通過系統資源服務類實現的 ,這些服務包括:定位域中的資源、確定資源的組織方式等等

      操作(Action)

      ? 支持操作之間的包含關系,而且支持包含關系的傳遞,即如果Action1>Action2,Action2>Action3,則Action1>Action3

      許可(Permission)

      ? 許可,在Trix_X中是對某種資源關于權限方面的描述,例如該資源中包含哪些操作,這些操作之間的包含關系又是怎樣的等等,這些都是在許可中定義的

      3 權限控制策略

      權限的優先級策略:對于同一個資源,拒絕權限>允許權限>繼承權限。

    組織結構分級管理策略,即組織機構中某個部門的管理員,只能對本部門及本部門的子孫部門的人員進行授權。

      權限的傳播與阻止策略,該策略主要應用于樹形資源的授權,目前尚未考慮組織結構這中樹形結構對權限的影響。

      超級管理員策略:系統中一直存在一個超級管理員帳號,用于進行最高級。

      權限計算過程

      圖12 權限計算過程圖

    4 權限控制體系功能描述

      以資源域為中心統一管理、配置資源及相關信息

      1) 資源域是系統中某類或某幾類資源的集合。

      2) 提供資源域管理界面,通過該界面可以建立新的資源域,并向域中加入某類或多類資源,還可以配置資源的權限描述類。

      相當靈活的授權方式

      1) 以身份為中心授權:以身份為中心設置對哪些資源能夠進行哪些訪問等等,入口分散在人員、群組、組織機構的管理中。

      2) 以資源為中心授權:以資源為中心,授予哪些身份對該資源可以進行哪些訪問等等,該方式又分為兩種:

      (1) 資源集中授權:權限控制中心將各種資源域的資源以一系列樹的方式集中在一起顯示并進行授權。

      (2) 資源分散授權:任意一種資源,只要將資源標識(ID)、資源對象類(class全名)傳給權限控制體系,則控制中心會彈出通用的授權界面,設置哪些身份對該資源可以進行哪些訪問等等。

    資源的權限描述可以通過可插拔的權限描述類來實現

      1) 權限描述類,主要負責描述該資源對外提供哪些操作以及其他一些信息等等。

      2) 在我們的體系中,每種資源都可以使用自己編寫的權限描述類,也可以更換權限描述類。

      對于某種資源可能的操作,可以定義這些操作之間的包含關系。

      支持樹形資源的授權,并支持權限的繼承與傳播。

      權限控制中心,在計算權限結果時,如果最終拒絕該請求,則會給出為什么不允許訪問:是明確拒絕,還是因為不能計算出是否被拒絕而出于安全考慮才不允許訪問的?如果是后者,對于關聯資源的權限判斷將很有幫助。

      尊重業務邏輯判斷,支持業務對訪問請求的優先判斷

      在系統資源服務接口中定義了checkPermission方法,做為業務自身實現該接口操作后,在對某個請求進行訪問控制時,我們現將控制權交給實現了該接口的業務自身,并傳給業務足夠的請求信息,業務自身對該請求進行業務邏輯判斷后,可能會形成三種結果:

      1) 明確拒絕該請求,如果業務自身明確拒絕該請求,則權限控制體系將直接拒絕該請求,不再交給權限體系自身進行判斷。

      2) 明確允許該請求 ,如果業務自身明確允許該請求,則權限控制體系將直接允許該請求,不再交給權限體系自身進行判斷。

      3) 不確定是否允許訪問,如果業務自身不知道是否允許或拒絕該請求,則權限控制體系會將控制權轉交給權限判斷中心進行進一步判斷。

     5 權限存儲

      權限的動作存儲我們用位來表示,把所有可能的權限按一定的順序排列,如添加、瀏覽、修改、刪除...,用戶的權限值為固定長度的字符串,如100010100001....01,從右起每一位對應一種操作權限,如果有這種權限,則此位的值為1,反之,則為0。當然,在數據庫中,實際是存的2的n次方的計算結果數字,如0、1、2、4、8…,MS SQL數據庫最大的數字是2的64次方,且保證盡可能多地存放權限,所以我們給權限進行了分組,每個64位的權限為一組,為了方便計算,組也是按2的n次方存放。同一組的權限位可按二進制進行與、或操作,只有該位為1表示有權限,否則沒有權限。

      舉例如下:

      權限排列表:添加、瀏覽、修改、刪除,用戶A有添加和瀏覽的的權限,則其權限值為0011,用戶B有瀏覽和修改的權限則其權限值為0110,用戶C有瀏覽和刪除的權限則其權限值為1010,這樣設計的好處為:當權限表中增加別的權限時,不會影響用戶表或角色表,大大節省存儲空間,并且提高查詢效率;

      實際上數據庫中表示二進制數據的方法是用數字類型字段來存儲。

    應用場景

      用戶身份資源

      下面次序圖描述了獲取用戶身份的各種場所,通過集合求和并排拆的方法求得用戶的身份集合。

      圖13 應用場景圖

      用戶權限

      下面此次序圖描述了獲取用戶權限的綜合應用, 用戶權限包括應用資源、菜單、操作對象、對象的屬性及對象的記錄。

      圖14 用戶權限圖

     7 實體類設計

      圖15實體類 

     8 數據結構設計

      8.1 E-R關系圖

      圖16 E-R關系圖

      8.2 主要數據實體說明

    posted on 2009-01-12 18:18 suprasoft Inc,. 閱讀(2432) 評論(3)  編輯  收藏 所屬分類: Misc.

    Feedback

    # re: 權限控制與認證的解決方案(zz) 2009-06-03 22:10 殷文旭
    這么好的帖子怎么能不頂一下,正愁沒人教,天上掉下個粘豆包  回復  更多評論
      

    # re: 權限控制與認證的解決方案(zz)[未登錄] 2012-03-06 10:34 dd
    如果有實現的代碼更好  回復  更多評論
      

    # re: 權限控制與認證的解決方案(zz) 2015-12-31 16:14 biscuit
    辛苦了,寫的很系統~  回復  更多評論
      

    ©2005-2008 Suprasoft Inc., All right reserved.
    主站蜘蛛池模板: 中文字幕免费在线看线人动作大片 | 无码精品人妻一区二区三区免费| 久久久久亚洲av无码专区喷水| h视频免费高清在线观看| 四虎精品视频在线永久免费观看| 久久精品国产亚洲香蕉| 亚洲第一第二第三第四第五第六| 十八禁视频在线观看免费无码无遮挡骂过 | 免费一级特黄特色大片在线| 久久亚洲精品无码aⅴ大香| 日本一区二区免费看| 亚洲综合精品香蕉久久网97| 国产在线观看麻豆91精品免费 | 无码人妻AV免费一区二区三区 | 久久精品国产亚洲AV麻豆~| 4444www免费看| 亚洲人成色77777| 三年片在线观看免费观看大全中国| 国产gav成人免费播放视频| 香蕉国产在线观看免费| 亚洲动漫精品无码av天堂| 欧亚一级毛片免费看| 免费黄色app网站| 免费精品国自产拍在线播放 | 亚洲国产日韩女人aaaaaa毛片在线 | 婷婷久久久亚洲欧洲日产国码AV| 99久久精品免费精品国产| 亚洲欧洲精品无码AV| 日本一卡精品视频免费| 亚洲中文无码mv| 亚洲中文字幕久久精品无码喷水| 99视频在线免费| 18禁亚洲深夜福利人口| 亚洲色自偷自拍另类小说| 国内精自视频品线六区免费| 免费人成又黄又爽的视频在线电影| 欧洲亚洲国产清在高| 成人免费毛片观看| 国产成年无码久久久免费| 亚洲欧洲无码一区二区三区| 午夜免费福利在线|