【許可權管理】基礎原理篇
這兩天在做移動端之餘也接觸一點兒許可權的知識。。基礎,考試,新生都有一定的瞭解,唯一對許可權是最陌生的。在AngularJs的摧殘下,不得不找點兒別的事兒來做做。原本想看一點兒關於shiro的東西,經人推薦了一套視訊,裡面講解shiro之前先講解了以下許可權的原理部分,感覺特別好。就燕青老師講的總結一下,讓自己印象深刻一下下。個人感覺傳智燕青老師講的這個shiro視訊挺好的,推薦大家看看。有想看的可以找我要哦~
什麼是許可權管理?
許可權管理實現對使用者訪問系統的控制,按照安全規則或者安全策略控制使用者可以訪問而且只能訪問自己被授權的資源。
許可權管理包括使用者身份認證和授權兩部分,簡稱認證授權。對於需要訪問控制的資源使用者首先經過身份認證,認證通過後使用者具有該資源的訪問許可權方可訪問。
使用者身份認證
身份認證,就是判斷一個使用者是否為合法使用者的處理過程。最常用的簡單身份認證方式是系統通過核對使用者輸入的使用者名稱和口令,看其是否與系統中儲存的該使用者的使用者名稱和口令一致,來判斷使用者身份是否正確。對於採用指紋等系統,則出示指紋;對於硬體Key等刷卡系統,則需要刷卡。
授權
授權,即訪問控制,控制誰能訪問哪些資源。主體進行身份認證後需要分配許可權方可訪問系統的資源,對於某些資源沒有許可權是無法訪問的。
許可權表結構設計
使用者身份認證基本用一個使用者表就可以進行驗證,主要看一下授權表結構設計。
授權可簡單理解為who對what(which)進行How操作:Who即主體(
What即資源(Resource),How即許可權/許可(Permission)。
主體、資源、許可權關係如下圖:
對上面的主體、資源、許可權通過資料模型表示。
主體(賬號、密碼)
資源(資源名稱、訪問地址)
許可權(許可權名稱、資源id)
角色(角色名稱)
角色和許可權關係(角色id、許可權id)
主體和角色關係(主體id、角色id)
如下圖:
通常企業開發中將資源和許可權表合併為一張許可權表,如下:
資源(資源名稱、訪問地址)
許可權(許可權名稱、資源id)
合併為:
許可權(許可權名稱、資源名稱、資源訪問地址)
如圖:
即映射出了以下幾張表:
這幾張表是許可權的通用表,每個公司可能針對自己的業務會有不同。
許可權管理解決方案
管理許可權有粗粒度和細粒度之分,粒度不同對待方式不同。
粗粒度
對資源型別的管理稱為粗顆粒度許可權管理,即只控制到選單、按鈕、方法,粗粒度的例子比如:使用者具有使用者管理的許可權,具有匯出訂單明細的許可權。
細粒度
對資源例項的控制稱為細顆粒度許可權管理,即控制到資料級別的許可權,比如:使用者只允許修改本部門的員工資訊,使用者只允許匯出自己建立的訂單明細。
如何實現粗粒度和細粒度
對於細顆粒度的許可權管理不建議做成系統架構級別的功能,因為對資料級別的控制是系統的業務需求,隨著業務需求的變更業務功能變化的可能性很大,建議對資料級別的許可權控制在業務層個性化開發,比如:使用者只允許修改自己建立的商品資訊可以在service介面新增校驗實現,service介面需要傳入當前操作人的標識,與商品資訊建立人標識對比,不一致則不允許修改商品資訊。
對於粗顆粒度的許可權管理可以很容易做系統架構級別的功能,即系統功能操作使用統一的粗顆粒度的許可權管理。
實現方式兩種:
(1)基於url攔截
基於url攔截是企業中常用的許可權管理方法,實現思路是:將系統操作的每個url配置在許可權表中,將許可權對應到角色,將角色分配給使用者,使用者訪問系統功能通過Filter進行過慮,過慮器獲取到使用者訪問的url,只要訪問的url是使用者分配角色中的url則放行繼續訪問。
(2)使用許可權框架
對於許可權管理基本上每個系統都有,使用許可權管理框架完成許可權管理功能的開發可以節省系統開發時間,並且許可權管理框架提供了完善的認證和授權功能有利於系統擴充套件維護,但是學習許可權管理框架是需要成本的,所以選擇一款簡單高效的許可權管理框架顯得非常重要。我們系統中選擇的框架就是shiro。
基於url攔截的平時我們遇到的很多,如果用的是框架像SpringMvc,Struts2,我們可以使用他們的攔截器進行攔截,如果不使用框架我們用filter進行過濾。
基於shiro框架完成許可權管理,我們下篇詳細介紹。
相關推薦
【許可權管理】基礎原理篇
這兩天在做移動端之餘也接觸一點兒許可權的知識。。基礎,考試,新生都有一定的瞭解,唯一對許可權是最陌生的。在AngularJs的摧殘下,不得不找點兒別的事兒來做做。原本想看一點兒關於shiro的東西,經人推薦了一套視訊,裡面講解shiro之前先講解了以下許可權的原理部分,感覺
【Dubbo實戰】基礎學習篇(一)
Dubbo的簡介是什麼?Dubbo是阿里巴巴SOA服務化治理方案的核心框架,每天為2,000多個服務提供30多億次訪問量支援,並被廣泛應用於阿里巴巴集團的各成員站點。Dubbo是一個分散式服務框架,致力
【許可權管理系統】Spring security(三)---認證過程(原理解析,demo)
在前面兩節Spring security (一)架構框架-Component、Service、Filter分析和Spring Security(二)--WebSecurityConfigurer配置以及filter順序為Spring Security認證作好了準備,可以讓我們更好的理解認證過程以及專案程式
【第一章】編譯原理基礎
數組 down 生成 符號表 代碼生成 符號 輸入 必須 高性能 編譯器的結構 主要分為2個部分:分析(analysis)部分和綜合(synthesis)部分 分析部分:源程序分解為多個組成要素,並再要素上加上語法結構,創建一個中間表示,相關信息存入符號表。 綜合部分
【Shiro許可權管理】1.Shiro簡介
一、簡介 在Web系統中我們經常要涉及到許可權問題,例如不同角色的人登入系統,他操作的功能、按鈕、選單是各不相同的,這就是所謂的許可權。 Apache Shiro是Java的一個安全(許可權)框架,Shiro可以完成認證、授權、加密、會話管理、Web整合、快取等功能。適用於JavaSE和JavaEE
Network 【Charles 抓包(原理篇)】
目前網上提供了很多篇文章是用來介紹在mac上使用Charles抓取手機App的網路包(簡而言之就是——抓包)。抓包操作是我們必須掌握的一項技能,但是我發現網上整理的抓包方法不是太詳細,所以我在此重新寫一下抓包的步驟。 (1)抓包首先是要安裝mac端的Charles。(Ch
【TFS許可權管理】vs2013 修改TFS已經登入的使用者方法
每次vs2013就預設自動用那個帳號登入了,想換個帳號都沒辦法,百度了以下找到了幾篇文章,特整理下,方便需要的朋友 TFS2013 我個人初次使用覺得不爽的是用一個帳號登入後,每次vs2013就預設自動用那個帳號登入了,想換個帳號都沒辦法。 今天終於用谷歌搜到網易的一個
【Shiro許可權管理】3.Shiro整合 Spring
下面來說一下如何在Web下使用Shiro。 在大部分Web開發環境下,都是使用Spring與Shiro進行整合,所以下面直接來講解Shiro與Spring整合的方式。 一、準備環境 (1)加入Spring和Shiro的jar包 首先在MyEclipse中新建一個Web工程:
【Shiro許可權管理】19.Shiro會話管理
注:該系列所有測試均在之前建立的Shiro3的Web工程的基礎上。 下面我們來說一下Shiro裡面的會話管理,這個“會話”與JavaWeb裡面的HttpSession 是一致的,都是表示客戶端與伺服器的一次會話。 Shiro會話的特點: Shiro提供了完整的企業級會話管理
【Shiro許可權管理】15.Shiro授權流程分析
注:該系列所有測試均在之前建立的Shiro3的Web工程的基礎上。 上一篇講解了Shiro授權的相關基礎知識,並實驗了“roles”攔截器的效果。可惜的是沒有給使用者 進行授權工作,所以沒有驗證擁有角色後的許可權校驗工作。下面就來講解一下Shiro的授權流程。 之前我們使用
【TFS許可權管理】TFS使用者組說明和使用者許可權配置過程
一、TFS預設使用者組的說明 伺服器級別使用者組: 1、TFS伺服器/Team Foundation Valid Users:可以訪問TFS伺服器。 2、TFS伺服器/Team Foundation Licensed Users:可以連線TFS伺服器。這個組只在 Team
【TFS許可權管理】管理 TFS 中使用者或組
來源:https://msdn.microsoft.com/zh-cn/library/dd547204.aspx 對於有權訪問 Team Foundation Server (TFS) 中的團隊專案的使用者,你需要向他們授予訪問許可權。 如果你是小團隊的管理員,限制
【Shiro許可權管理】17.Shiro許可權註解
注:該系列所有測試均在之前建立的Shiro3的Web工程的基礎上。 前面我們講解了Shiro的標籤屬性,下面我們來講解Shiro的有關許可權的註解屬性。 Shiro的註解是使用在相應的Java類的方法上,當用戶不滿足註解的要求時,是無法執行 方法內部邏輯的。這相當於在程式碼
【Shiro許可權管理】22.Shiro之記住我
注:該系列所有測試均在之前建立的Shiro3的Web工程的基礎上。 在我們登入一些網站的時候,在登入輸入框的下側一般都會有一個“記住我”的勾選框,選擇之後,我們 下次進入網站的時候就會自動進行登入操作,無需我們再次輸入密碼。而在訪問一些敏感資訊的時候,還是需要 進行登入操作
【webpack 系列】基礎篇
## Webpack 基礎篇 ### 基本概念 `Webpack` 是一個現代 `JavaScript` 應用程式的靜態模組打包器。當 `webpack` 處理應用程式時,它會遞迴地構建一個依賴關係圖,其中包含應用程式需要的每個模組,然後將所有這些模組打包成一個或多個 `bundle`。 ### 四個核心
ClickHouse學習系列之二【使用者許可權管理】
背景 最近花了些時間看了下ClickHouse文件,發現它在OLAP方面表現很優異,而且相對也比較輕量和簡單,所以準備入門瞭解下該資料庫系統。在安裝完之後首先做的應該如何設定使用者密碼以及許可權控制。因為和MySQL、MongoDB等資料庫的使用者管理完全不一樣,為方
【滲透課程】第六篇-上傳漏洞之解析漏洞
文件的 配置文件 密碼 3.1 安裝目錄 ppa xxx 表單 圖片 上傳漏洞,我們為什麽要上傳?因為我們說過。在網站服務器上 肯定有一個Web容器,它裏面裝的就是Web應用程序 。某些腳本具有一定的執行和修改權限。這些權限可以說是服務器給客戶端訪問時提供的服務的同時提供的
【滲透課程】第三篇-體驗http協議的應用
load 簡單介紹 class 發送數據 數據交互 動手實驗 服務端 yun 屬於 之前我們都了解了,訪問網頁時,客戶端與服務端之間的請求與響應數據交互。本篇就淺談它的應用。 利用HTTP攔截突破前段驗證 比方說,我們在某個網頁提交某些數據(例如留言、上傳、插入xss等)
【滲透課程】第七篇-上傳漏洞之繞過上傳漏洞
ng- 相關 都是 http itl 了解 利用 存在 上傳 前一篇我們已經講過了上傳漏洞的解析漏洞,在某些時候,知道網站存在哪個解析漏洞,那麽我們就可以更好的利用上傳漏洞 這個知識點在我們前面就有粗略說過了(http://www.yuntest.org/index.php
【滲透課程】第八篇-上傳漏洞之文本編輯器上傳
fckeditor -m ive conf ima xheditor ger .org 圖片上傳 Oday 常見的文本編輯器有CKEditor,Ewebeditor,UEditor,KindEditor,XHeditor等。其包含的功能類似,比如,圖片上傳、視頻上傳、遠程下