Shiro術語
請花2
分鐘閱讀和理解Shiro中的術語 - 這是非常重要的。這裏的術語和概念在文檔中的任何地方都被引用,並且將大大簡化您對Shiro和一般的安全性的理解。
因爲使用了一些您可能不太明白的術語,所以安全可能真的令人很困惑。下面將通過一些核心概念來更容易地理解Shiro常用的知識,在接下來的章節中會看到Shiro API如何反映它們:
認證
認證是驗證主體身份的過程 - 基本上證明有人真的是他們所說的他們是誰那樣。 當認證成功時,應用程序可以信任保證爲應用程序期望的對象。授權
授權,也稱爲訪問控制,是確定用戶/主題是否被允許做某事的過程。 通常通過檢查和解釋主體的角色和權限(見下文),然後允許或拒絕對所請求的資源或功能的訪問來實現。密碼
密碼是用於執行加密或解密的算法。 該算法通常依賴於稱爲密鑰的一條信息。 並且加密基於密鑰而變化的,因此如果沒有它,則解密是非常困難的。
密碼有不同的變化。 塊密碼對通常具有固定大小的符號塊進行工作,而流密碼對連續的符號流進行工作。 對稱密碼使用相同的密鑰進行加密和解密,而非對稱密碼使用不同的密鑰。 如果非對稱密碼中的密鑰不能從另一個密鑰導出,則可以共享創建公鑰/私鑰對。憑據
證書是驗證用戶/主體的身份的一條信息。 在認證嘗試期間,一個(或多個)憑證與主體一起提交,以驗證提交它們的用戶/主題實際上是關聯的用戶。 證書通常是非常祕密的東西,只有特定用戶/主體知道,諸如:密碼或PGP密鑰或生物特徵屬性或類似機制。
這個想法是,對於主體,只有一個人會知道正確的證書與該主體「配對」。 如果當前用戶/主題提供與存儲在系統中的正確憑證相匹配的正確憑證,則系統可以假定並相信當前用戶/主題真正是他們所說的。 信任程度隨着更安全的憑證類型(例如生物特徵簽名>密碼)而增加。加密
密碼術是通過隱藏信息或將其轉換爲廢話來保護信息免於不受歡迎的訪問的做法,因此沒有人能讀取它。 Shiro專注於加密技術的兩個核心元素:使用公鑰或私鑰加密數據的密碼,以及對密碼等數據進行不可逆加密的哈希(也稱爲消息摘要)。哈希
哈希函數是輸入源(有時稱爲消息)的單向,不可逆轉換,轉換爲編碼的哈希值,有時稱爲消息摘要。 它通常用於密碼,數字指紋或具有底層字節數組的數據。權限
權限在Shiro中解釋:它是一個描述應用程序中的原始功能的語句。 權限是安全策略中的最低級別構造。 他們只定義了應用程序可以做什麼。不描述「誰」能夠執行的操作。 權限只是一個行爲的聲明,沒有更多。
一些權限的示例:- 打開一個文件
- 查看’
/user/list
‘網頁 - 打印文檔
- 刪除一個用戶等
主體
主體是應用程序用戶(主題)的任何標識屬性。 「標識屬性」可以是對您的應用程序有意義的任何內容 - 用戶名,姓氏,給定名稱,社會安全號碼,用戶ID等。Shiro還引用了稱爲主體的主要主體的東西。主要主體是在整個應用程序中唯一標識主題的任何主體。 理想的主要主體是用戶名或用戶ID,它是RDBMS用戶表主鍵。 應用程序中的用戶(主題)只有一個主要主體。領域
領域是可以訪問特定於應用程序的安全數據(如用戶,角色和權限)的組件。 它可以被認爲是一個安全特定的DAO(數據訪問對象)。 領域將這種特定於應用程序的數據轉換爲Shiro理解的格式,所以Shiro可以提供一個易於理解的主題編程API,無論存在多少數據源或應用程序特定的數據。
領域通常與數據源(例如關係數據庫,LDAP目錄,文件系統或其他類似資源)具有1對1關聯。 因此,領域接口的實現使用數據源特定的API來發現。諸如JDBC,文件IO,Hibernate或JPA或任何其他數據訪問API的授權數據(角色,權限等)。角色
角色的定義可以根據您與誰交談。 在許多應用程序中,人們使用隱含地定義安全策略的模糊概念。 Shiro更喜歡將角色解釋爲一個命名的權限集合。 這是一個應用程序唯一名稱,聚合一個或多個權限聲明。
這是一個比許多應用程序使用的隱式更具體的定義。 如果你選擇讓數據模型反映Shiro的假設,你會發現將有更多的權力來控制安全策略。會話
會話是在一段時間內與軟件系統交互的單個用戶/主題相關聯的有狀態數據上下文。 在主題使用應用程序時,可以從會話中添加/讀取/刪除數據,並且應用程序可以稍後在必要時使用此數據。 當用戶/主題註銷應用程序或由於不活動導致超時時,會話將終止。
對於熟悉HttpSession
的人來說,Shiro會話的目的也是一樣的,除了Shiro會話可以在任何環境中使用,即使沒有Servlet容器或EJB容器可用。主題
主題只是一個奇特的安全術語,基本上意味着應用程序用戶的安全特定的「視圖」。 主體並不總是需要反映一個人,雖然 - 它可以表示一個外部進程調用您的應用程序,或者可能是一個守護進程系統帳戶在一段時間間歇地執行某些事情(如cron
作業)。 它基本上是與應用程序做某事的任何實體的表示。