權限管理


權限管理是系統的安全范疇,要求必須是合法的用戶才可以訪問系統(用戶認證),且必須具有該資源的訪問權限才可以訪問該資源(授權)。

認證:對用戶合法身份的校驗,要求必須是合法的用戶才可以訪問系統。

授權:訪問控制,必須具有該資源的訪問權限才可以訪問該資源。

 

權限模型:標准權限數據模型包括:用戶、角色、權限(包括資源和權限)、用戶角色關系、角色權限關系。

權限分配:通過UI界面方便給用戶分配權限,對上邊權限模型進行增、刪、改、查操作。

權限控制:

         基於角色的權限控制:根據角色判斷是否有操作權限,因為角色的變化性較高,如果角色修改需要修改控制代碼,系統可擴展性不強。

         基於資源的權限控制:根據資源權限判斷是否有操作權限,因為資源較為固定,如果角色修改或角色中權限修改不需要修改控制代碼,使用此方法系統可維護性很強。建議使用。

 

權限管理的解決方案:

n  對於粗顆粒權限管理,建議在系統架構層面去解決,寫系統架構級別統一代碼(基礎代碼)。

         粗顆粒權限:比如對系統的url、菜單、jsp頁面、頁面上按鈕、類方法進行權限管理,即對資源類型進行權限管理。

 

n           對於細顆粒權限管理:

         粗顆粒權限:比如用戶id為001的用戶信息(資源實例)、類型為t01的商品信息(資源實例),對資源實例進行權限管理,理解對數據級別的權限管理。

         細顆粒權限管理是系統的業務邏輯,業務邏輯代碼不方便抽取統一代碼,建議在系統業務層進行處理。

 

基於url的權限管理(掌握):

         企業開發常用的方法,使用web應用中filter來實現,用戶請求url,通過filter攔截,判斷用戶身份是否合法(用戶認證),判斷請求的地址是否是用戶權限范圍內的url(授權)。

 

shiro:

         shiro是一個權限管理框架,是apache下的開源項目。相比springsecurity框架更簡單靈活,spring security對spring依賴較強。shiro可以實現web系統、c/s、分布式等系統權限管理。

 

shiro認證流程:(掌握)

         1、subject(主體)請求認證,調用subject.login(token)

         2、SecurityManager(安全管理器)執行認證

         3、SecurityManager通過ModularRealmAuthenticator進行認證。

         4、ModularRealmAuthenticator將token傳給realm,realm根據token中用戶信息從數據庫查詢用戶信息(包括身份和憑證)

    5、realm如果查詢不到用戶給ModularRealmAuthenticator返回null,ModularRealmAuthenticator拋出異常(用戶不存在)

         6、realm如果查詢到用戶給ModularRealmAuthenticator返回AuthenticationInfo(認證信息)

         7、ModularRealmAuthenticator拿着AuthenticationInfo(認證信息)去進行憑證(密碼 )比對。如果一致則認證通過,如果不致拋出異常(憑證錯誤)。

 

subject:主體

 

Authenticator:認證器( shiro提供)

 

realm(一般需要自定義):相當於數據源,認證器需要realm從數據源查詢用戶身份信息及權限信息。


————————————————
版權聲明:本文為CSDN博主「fqf_520」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/fqf_520/article/details/49182133


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM