輕量又高效,Apache Shiro 你值得擁有!

Apache Shiro 是一個強大且易用的 Java 安全框架,能夠讓開發者以非常清晰的方式處理身份認證、授權、會話管理以及密碼加密。使用其易於理解的 API,開發者可以輕鬆,高效的爲任何應用程序,從最小的移動應用程序到大型的網絡和企業應用程序添加安全管理功能。

什麼是 Shiro

Apache Shiro 是一個使用 Java 開發的,易於使用,功能強大且靈活的開源安全框架,它爲開發人員提供了直觀簡潔的 API 來支持應用程序中的四個安全性基石:

  • 身份驗證(Authentication)
  • 授權(Authorization)
  • 會話管理(Session Management)
  • 加密(Cryptography)

Shiro 提供了許多重要且實用的安全性相關的功能,其中被關注得最多的是身份驗證和授權功能,這兩者也是一個安全框架的核心功能,我們的課程將會把重心放在這兩個部分,對於其它部分只進行簡單的介紹。

想象有如下的動態安全模型:

管理員可以爲應用系統創建不同的角色,角色可以綁定一組權限,之後管理員可以爲不同用戶分配一個或多個角色,並在應用正常提供服務期間在後臺管理網頁中隨時更改所有這些功能。

通過使用 Shiro,我們將能夠很容易的實現上述功能。

Shiro 框架的體系結構

Shiro 的設計目標是通過直觀且易於使用的 API 來簡化應用程序安全性相關代碼的設計,應用程序安全控制功能的實現往往有着不同的需求場景,Shiro 的核心設計參考了這些用戶在大多數情況下都會遇到的需求場景,在這些情況下來考慮 Shiro 的安全性設計。

在 Shiro 框架的最上層,主要有 3 個關鍵組件相互協作:


Subject

正如上面提到的那樣,Subject 本質上是系統用戶的一個特定安全 "視圖",可以表示會與應用程序交互的任何東西。

Subject 實例都強制綁定到 SecurityManager 上,當我們調用 Subject 的方法時,具體的操作最終都會轉交給相關的 SecurityManager 進行處理。

SecurityManager

SecurityManager 是 Shiro 體系結構的核心,它協調着內部的其它安全組件,這些安全組件一起形成一種互相協作支持的關係,共同完成 Shiro 提供的所有功能。對於開發人員而言,一旦爲應用程序配置了 SecurityManager,通常就不需要再理會它,我們只需要和 Subject 的 API 進行交互就可以了,這在上面的流程圖中也有清晰的體現。

Realm

Realm 是 Shiro 與應用程序數據之間交換的“橋樑”,當 Shiro 真正需要與安全性相關的數據(例如用戶帳戶,用戶角色,權限等)進行交互以執行身份驗證和授權時,Shiro 會從一個或多個爲應用程序配置的 Realm 中查找這些數據。

可以簡單地把 Realm 理解爲特定於安全性的 DAO,它封裝了對安全性相關數據的訪問,在配置 Shiro 時,我們必須至少指定一個 Realm 以用於身份驗證(或授權)。

詳細架構

下圖展示了 Shiro 的核心體系結構:

上圖是一個更加具體的 Shiro 詳細架構圖,圖中清晰地描述了 SubjectSecurity ManagerRealm 三者各自在整個 Shiro 框架中所扮演的角色,以及擔負的職責。

爲了簡化配置和實現靈活的可配置性(可插拔性),Shiro 的實現都是高度模塊化的,高度模塊化使得 SecurityManager 的實現實際上並沒有做實質性的事情。相反,SecurityManager 的作用是作爲一個輕量級的“容器”組件,將幾乎所有的行爲委託給封裝在內部的其它組件,這是“包裝器”設計模式的一種使用。

下面對身份認證器(Authenticator)和訪問控制器(Authorizer)進行簡單說明。

身份認證器(Authenticator)是負責執行和響應用戶認證(登錄)的組件。當用戶嘗試登錄時,該邏輯由 Authenticator 執行,Authenticator 知道如何與一個或多個 Realm 進行協調,從這些 Realm 中獲取用戶的身份信息,然後完成身份認證過程。

訪問控制器(Authorizer)是負責決定用戶對應用中具體資源能否訪問和操作的組件,是最終決定用戶是否被允許做某事的機制,與 Authenticator 一樣,Authorizer 也知道如何與多個 Realm 協調,以獲取角色和權限信息,Authorizer 使用這些信息來確定用戶是否被允許執行某個動作。

以上內容來自實驗樓新課《Shiro 與 Spring Boot 實現權限管理系統》,課程後續還有:

該門課程將會以理論學習與實戰相結合的方式分別對 Shiro 的身份認證和授權這兩個最重要的安全功能着重進行學習。下面的截圖展示了實戰學習中,開發完成後角色管理的部分接口:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章