# 19. Terminology 術語
# 19. Terminology 術語
請花 2 分鐘來閱讀和理解它——這很重要。真的。這里的術語和概念在文檔的任何地方都被涉及到,它將在總體上大大簡化你對Shiro 和安全的理解。
由于所使用的術語使得安全可能令人困惑。我們將通過澄清一些核心概念使生活更容易,你將會看到 Shiro API 是如何很好地反映了它們:
- **Authentication** 身份驗證是驗證 Subject 身份的過程——實質上是證明某些人是否真的是他們所說的他們是誰。當認證嘗試成功后,應用程序能夠相信該subject 被保證是其所期望的。
- **Authorization**授權,又稱為訪問控制,是決定一個 user/Subject 是否被允許做某事的過程。它通常是通過檢查和解釋 Subject的角色和權限(見下文),然后允許或拒絕到一個請求的資源或功能來完成的。
- **Ciphern**密碼是進行加密或解密的一種算法。該算法一般依賴于一塊被稱為 key 的信息。基于不同的key 的加密算法也是不一樣的,所有解密沒有它是非常困難的。 密碼有不同的表現形式。分組密碼致力于符號塊,通常是固定大小的,而流密碼致力于連續的符號流。對稱性密碼加密和解密使用相同的密鑰(key),而非對稱性加密使用不同的密鑰。如果非對稱性加密的密鑰不能從其他地方得到,那么可以創建公鑰/私鑰對公開共享。
- **Credential**憑證是一塊信息,用來驗證 user/Subject 的身份。在認證嘗試期間,一個(或多個)憑證與 Principals(s)被一同提交,來驗證 user/Subject 所提交的確實是所關聯的用戶。證書通常是非常秘密的東西,只有特定的 user/Subject 才知道,如密碼或 PGP 密鑰或生物屬性或類似的機制。 這個想法是為 principal 設置的,只有一個人會知道正確的證書來“匹配”該 principal。如果當前 user/Subject 提供了正確的憑證匹配了存儲在系統中的,那么系統可以假定并信任當前user/Subject 是真的他們所說的他們是誰。信任度隨著更安全的憑證類型加深(如,生物識別簽名 > 密碼)。
- **Cryptography**加密是保護信息不受不希望的訪問的習慣做法,通過隱藏信息或將它轉化成無意義的東西,這樣沒人可以理解它。Shiro 致力于加密的兩個核心要素:加密數據的密碼,如使用公鑰或私鑰的郵件,以及散列表(也稱消息摘要),它對數據進行不可逆的加密,如密碼。
- **Hash**散列函數是單向的,不可逆轉的輸入源,有時也被稱為消息,在一個編碼的哈希值內部,有時也被稱為消息摘要。它通常用于密碼,數字指紋,或以字節數組為基礎的數據。
- **Permission**權限,至少按照 Shiro 的解釋,是在應用程序中描述原始功能的一份聲明并沒有更多的功能。權限是在安全策略中最低級別的概念。它們僅定義了應用程序能夠做“什么”。它們沒有說明“誰”能夠執行這些操作。權限只是行為的聲明,僅此而已。 一些權限的例子:
- 打開文件
- 瀏覽'/user/list'頁面
- 打印文檔
- 刪除'jsmith'用戶
- **Principal**Principal 是一個應用程序用戶(Subject)的任何標志屬性。“標志屬性”可以是任何對你應用程序有意義的東西——用戶名,姓,名,社會安全號碼,用戶ID 等。這就是它——沒什么古怪的。Shiro 也引用一些我們稱之為Subject 的 primary principal 的東西。一個 primary principal 是在整個應用程序中唯一標識 Subject 的 principal。理想的 primary principal 是用戶名或 RDBMS 用戶表主鍵——用戶 ID。對于在應用 程序中的用戶(Subject)來說,只有一個primary principal
- **Realm**Realm 是一個能夠訪問應用程序特定的安全數據(如用戶,角色和權限)的組件。它可以被看作是一個特定安全的 DAO(Data Access Object)。Realm 將這些應用程序特定的數據轉換成 Shiro 能夠理解的格式,這樣Shiro 反過來能夠提供一個單一的易于理解的 Subject 編程API,無論有多少數據源存在或無論你的數據是什么樣的應用程序特定的格式。 Realm 通常和數據源是一對一的對應關系,如關系數據庫,LDAP 目錄,文件系統,或其他類似資源。因此,Realm 接口的實現使用數據源特定的API 來展示授權數據(角色,權限等),如JDBC,文件IO,Hibernate 或 JPA,或其他數據訪問API。
- **Role**基于你對話的對象,一個角色的定義是可以多變的。在許多應用程序中,它充其量是個模糊不清的概念,人們用它來隱式定義安全策略。Shiro 偏向于把角色簡單地解釋為一組命名的權限的集合。這就是它——一個應用程序的唯一名稱,聚集一個或多個權限聲明。 這是一個比許多應用程序使用的隱式的定義更為具體的定義。如果你選擇了你的數據模型反映Shiro 的假設,你會發現將有更多控制安全策略的權力。
- **Session**會話是一個在一段時間內有狀態的數據,其上下文與一個單一的與軟件系統交互的user/Subject 相關聯。當 Subject 使用應用程序時,能夠從會話中添加/讀取/刪除數據,并且應用程序稍后能夠在需要的地方使用該數據。會話會被終止,由于user/Subject 注銷或會話不活動而超時。 對于那些熟悉 HttpSession 的,Shiro Session 服務于同一目標,除了Shiro 會話能夠在任何環境下使用,甚至在沒有Servlet 容器或EJB 容器的環境。
- **Subject**Subject 只是一個精挑細選的安全術語,基本上的意思是一個應用程序用戶的安全特定的“視圖”。然而 Subject 不總是需要反映為一個人——它可以代表一個調用你應用程序的外部進程,或許是一個系統帳戶的守護進程, 在一段時間內執行一些間歇性的東西(如一個cron job)。它基本上是任何使用應用程序做某事的實體的一個代表。
## 為文檔加把手
我們希望這篇文檔可以幫助你使用 Apache Shiro 進行工作,社區一直在不斷地完善和擴展文檔,如果你希望幫助 Shiro 項目,請在你認為需要的地方考慮更正、擴展或添加文檔,你提供的任何點滴幫助都將擴充社區并且提升 Shiro。
提供你的文檔的最簡單的途徑是將它發送到用戶[論壇](http://shiro-user.582556.n2.nabble.com/)或[郵件列表](http://shiro.apache.org/mailing-lists.html)
*譯者注:*如果對本中文翻譯有疑議的或發現勘誤歡迎指正,[點此](https://github.com/waylau/apache-shiro-1.2.x-reference/issues)提問。
- Introduction
- 1. Introduction 介紹
- 2. Tutorial 教程
- 3. Architecture 架構
- 4. Configuration 配置
- 5. Authentication 認證
- 6. Authorization 授權
- 6.1. Permissions 權限
- 7. Realms
- 8. Session Management
- 9. Cryptography 密碼
- 10. Web
- 10.1. Configuration 配置
- 10.2. 基于路徑的 url 安全
- 10.3. Default Filters 默認過濾器
- 10.4. Session Management
- 10.5. JSP Tag Library
- 11. Caching 緩存
- 12. Concurrency & Multithreading 并發與多線程
- 13. Testing 測試
- 14. Custom Subjects 自定義 Subject
- 15. Spring Framework
- 16. Guice
- 17. CAS
- 18. Command Line Hasher
- 19. Terminology 術語
- 20. 10 Minute Tutorial 十分鐘教程
- 21. Beginner's Webapp Tutorial 初學者web應用教程
- 22. Application Security With Apache Shiro 用Shiro保護你的應用安全
- 23. CacheManager 緩存管理
- 24. Apache Shiro Cryptography Features 加密功能