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作業)。 它基本上是與應用程式做某事的任何實體的表示。