1. 程式人生 > >Shiro許可權管理框架(1)

Shiro許可權管理框架(1)

許可權管理:

 1.什麼是許可權管理:基本上涉及到使用者參與的系統都要進行許可權管理,許可權管理屬於系統安全範疇,許可權管理實現對使用者訪問系統的控制,按照安全規則或者安全策略可以訪問而且只能訪問自己被授權的資源。

   許可權管理包括使用者身份認證和授權兩部分,簡稱認證授權。對於需要訪問控制的資源使用者首先經過身份認證,認證通過後使用者具有該資源的訪問許可權方可訪問。


 2.使用者身份認證

   概念:身份認證就是判斷一個使用者是否為合法使用者的處理過程。最常用的簡單的身份認證是系統通過核對使用者輸入的使用者名稱和密碼,看是否與系統中儲存的該使用者的使用者名稱密碼一致,來判斷使用者的身份是否正確。

 使用者名稱密碼身份認證流程 如下:

  

圖中的關鍵物件:

   Subject:主體(訪問系統的使用者,主體可以是使用者程式等進行認證的都是主體)

   Principal:身份資訊(是主體(subject)進行身份認證的標識,標識必須具有唯一性,如使用者名稱,一個主體可以有多個身份,但必須有一個主身份)

   credential:憑證資訊(是隻有主體自己知道的安全資訊,如密碼)


  3.授權

    概念:授權就是訪問控制,控制誰能訪問那些資源。主體進行身份認證後需要分配許可權方可訪問系統的資源,對於某些資源沒有許可權是無法訪問的


  4.授權流程

  

  授權簡單理解為who對(which)進行(How)操作

  圖中關鍵物件含義

  who:就是主體(Subject),主體需要訪問系統中的資源。

  what:資源(Resource),如系統選單,按鈕,類方法等。

  How:許可權/許可(Permission),規定了主體對資源的操作許可,許可權離開資源沒有意義,如使用者查詢許可權、新增許可權、刪除許可權等通過許可權可知主體對那些資源都有那些操作許可。

  許可權分為粗顆粒和細顆粒,粗顆粒許可權是指對資源型別的許可權,細顆粒許可權是對資源例項的許可權。

   主體 資源 許可權關係如圖

   


  5.許可權模型

   對上面的主體、資源、許可權通過資料模型表示

   主體(賬號密碼 )

   資源(資源名稱 訪問地址)

   許可權(許可權名稱 資源Id)

   角色(角色名稱)

   角色和許可權關係(角色Id  許可權ID)

   主體和角色關係(主體Id 角色Id) 


    


企業開發中通常將資源和許可權表合併為一張許可權表

 

   資源(資源名稱 訪問地址)    許可權(許可權名稱 資源Id)  合併為

   許可權(許可權名稱 資源名稱 資源訪問地址)

  


上圖中常被稱為許可權管理的通用模型,不過企業在開發中根據系統自身的特點會對上圖進行修改,但是使用者,角色,許可權,使用者角色關係角色許可權關係是需要理解的。

   6. 許可權分配

   對主體分配許可權,主體只允許在許可權範圍內對資源進行操作,比如A使用者分配查詢商品許可權,A使用者只能對商品進行查詢。

   許可權分配的資料通常需要持久化,根據上面的模型建立表並將使用者的許可權資訊儲存在資料庫中。

    7.許可權控制

   使用者擁有了許可權即可操作許可權範圍內的資源,系統不知道主體是否具有訪問許可權需要對使用者的訪問進行控制。

    8.基於角色的訪問控制

 RBAC基於覺得的訪問控制(Role-Based-Access-Contr) 是以角色為中心的進行訪問控制。比如角色為經理的可以查詢企業所有資訊等等

   使用RBAC的缺點:以角色進行訪問控制粗度較粗,系統可擴充套件性差。

   9. 基於資源的訪問控制

    RBAC基於資源的訪問控制(Resource-Based-Access-Control)是以資源為中心進行訪問控制。

   優點:系統設計時定義好查詢的許可權標識,判斷邏輯不用修改 系統的可擴充套件性強

10.許可權管理解決方案

 10.1什麼是粗顆粒度和細顆粒度

       對資源型別的管理稱為粗顆粒度許可權管理,即只控制到選單、按鈕、方法。

       對資源例項的控制稱為細顆粒度許可權管理,即控制到資料級別的許可權。