天天看點

Shiro認證Shiro簡介

Shiro認證[Authentication]

  • Shiro簡介
    • Shiro的特性
      • Shiro的構架

Shiro簡介

一.Shiro簡介

Apache Shiro 是一個強大易用的Java完全架構,提供了認證授權,會話管理,加密,對任意一個程式Shrio都可以提供全面的安全管理.對比Spring Security 可能沒有 Spring Security 功能強大,但是我們在實際的工作中可能并不需要那麼複雜的功能,是以使用簡單易用的Shiro就足夠了

Shiro的特性

Shiro認證Shiro簡介

1.四大基石:

Shiro把Shiro開發團隊稱為“應用程式的四大基石”——身份驗證,授權,會話管理和加密作為其目标。

  1. Authentication:有時也簡稱為“登入”,這是一個證明使用者是他們所說的他們是誰的行為。
  2. Authorization:通路控制的過程,也就是絕對“誰”去通路“什麼”。
  3. Session Management:管理使用者特定的會話,即使在非 Web 或 EJB 應用程式。
  4. Cryptography:加密,保護資料的安全性,如密碼加密存儲到資料庫,而不是明文存儲。

也提供了額外的功能來支援和加強在不同環境下

  1. Web Support:Shiro的web支援的API能夠輕松地幫助保護 Web 應用程式。
  2. Caching:緩存是Apache Shiro中的第一層公民,來確定安全操作快速而又高效。
  3. Concurrency:Apache Shiro利用它的并發特性來支援多線程應用程式。
  4. Testing:測試支援的存在來幫助你編寫單元測試和內建測試,并確定你的能夠如預期的一樣安全。
  5. “Run As”:一個允許使用者假設為另一個使用者身份(如果允許)的功能,有時候在管理腳本很有用。
  6. “Remember Me”:在會話中記住使用者的身份,是以他們隻需要在強制時候登入。

Shiro的構架

Shiro認證Shiro簡介

Subject

在我們的教程中已經提到,Subject實質上是一個目前執行使用者的特定的安全“視圖”。鑒于"User"一詞通常意味着一個人,而一個Subject可以是一個人,但它還可以代表第三方服務,daemon account,cron job,或其他類似的任何東西——基本上是目前正與軟體進行互動的任何東西。

所有Subject執行個體都被綁定到(且這是必須的)一個SecurityManager上。當你與一個Subject互動時,那些互動作用轉化為與SecurityManager互動的特定subject的互動作用。

SecurityManager

SecurityManager是Shiro架構的心髒,并作為一種“保護傘”對象來協調内部的安全元件共同構成一個對象圖。然而,一旦SecurityManager和它的内置對象圖已經配置給一個應用程式,那麼它單獨留下來,且應用程式開發人員幾乎使用他們所有的時間來處理Subject API。

稍後會更詳細地讨論SecurityManager,但重要的是要認識到,當你正與一個Subject進行互動時,實質上是幕後的 SecurityManager處理所有繁重的Subject安全操作。這反映在上面的基本流程圖。

Realms

Realms擔當Shiro和你的應用程式的安全資料之間的“橋梁”或“連接配接器”。當它實際上與安全相關的資料如用來執行身份驗證(登入)及授權(通路控制)的使用者帳戶互動時,Shiro 從一個或多個為應用程式配置的Realm中尋找許多這樣的東西。

在這個意義上說,Realm本質上是一個特定安全的DAO:它封裝了資料源的連接配接詳細資訊,使Shiro所需的相關的資料可用。當配置Shiro時,你必須指定至少一個Realm用來進行身份驗證和/或授權。SecurityManager可能配置多個Realms,但至少有一個是必須的。

Shiro提供了立即可用的Realms來連接配接一些安全資料源(即目錄),如LDAP,關系資料庫(JDBC),文本配置源,像 INI 及屬性檔案,以及更多。你可以插入你自己的Realm 實作來代表自定義的資料源,如果預設地Realm不符合你的需求。

像其他内置元件一樣,Shiro SecurityManager控制 Realms是如何被用來擷取安全和身份資料來代表 Subject 執行個體的。

繼續閱讀