這里的術(shù)語和概念在文檔中隨處可見,它將極大地簡化您對Shiro和安全性的理解。 由于使用了術(shù)語,安全性可能非?;靵y。通過澄清一些核心概念,我們將使生活更輕松,您將看到Shiro API如何很好地反映它們:
密碼(Cipher)
密碼是用于執(zhí)行加密或解密的算法。該算法通常依賴于稱為密鑰的一條信息。并且加密根據(jù)密鑰而變化,因此如果沒有它,去除極其困難。 密碼有不同的變化。分組密碼適用于通常具有固定大小的符號塊,而流密碼則使用連續(xù)的符號流。Symmetric Ciphers使用相同的密鑰進(jìn)行加密和解密,而Asymmetric Ciphers使用不同的密鑰。并且如果非對稱密碼中的密鑰不能從另一個密鑰導(dǎo)出,則可以共享一個密鑰,公開創(chuàng)建公鑰/私鑰對。
憑證(Credential)
A Credential是一條驗證用戶/ Subject的身份的信息。在驗證嘗試期間,一個(或多個)憑證與委托人一起提交,以驗證提交它們的用戶/主體實際上是關(guān)聯(lián)用戶。憑證通常是非常秘密的東西,只有特定的用戶/主體才會知道,例如密碼或PGP密鑰或生物特征屬性或類似機(jī)制。 這個想法是,對于委托人來說,只有一個人知道與該委托人“配對”的正確憑證。如果當(dāng)前用戶/主題提供與系統(tǒng)中存儲的憑證匹配的正確憑證,則系統(tǒng)可以假設(shè)并相信當(dāng)前用戶/主體確實是他們所說的人。信任程度隨著更安全的憑證類型(例如生物識別簽名>密碼)而增加。
主要(Principal)
甲主要是一個應(yīng)用程序的用戶(對象)的任何識別屬性?!白R別屬性”可以是對您的應(yīng)用程序有意義的任何內(nèi)容 - 用戶名,姓氏,給定名稱,社會安全號碼,用戶ID等。這就是它 - 沒什么了不起的。 Shiro還引用了我們稱之為主體的主要原則。甲初級主要是唯一標(biāo)識的任何主要主題在整個應(yīng)用程序。理想的主要原則是用戶名或用戶ID,它是RDBMS用戶表主鍵。應(yīng)用程序中的用戶(主題)只有一個主要主體。
域(Realm)
A Realm是一個可以訪問特定于應(yīng)用程序的安全數(shù)據(jù)(如用戶,角色和權(quán)限)的組件。它可以被認(rèn)為是特定于安全性的DAO(數(shù)據(jù)訪問對象)。Realm將這個特定于應(yīng)用程序的數(shù)據(jù)轉(zhuǎn)換為Shiro理解的格式,因此無論存在多少數(shù)據(jù)源或您的數(shù)據(jù)可能是特定于應(yīng)用程序的特性,Shiro都可以提供一個易于理解的主題編程API。 領(lǐng)域通常與數(shù)據(jù)源(例如關(guān)系數(shù)據(jù)庫,LDAP目錄,文件系統(tǒng)或其他類似資源)具有1對1的關(guān)聯(lián)。因此,Realm接口的實現(xiàn)使用特定于數(shù)據(jù)源的API來發(fā)現(xiàn)授權(quán)數(shù)據(jù)(角色,權(quán)限等),例如JDBC,文件IO,Hibernate或JPA或任何其他數(shù)據(jù)訪問API。
角色角色(Role)
的定義可能因您與之交談的人而異。在許多應(yīng)用程序中,人們用它來隱含地定義安全策略,這是一個模糊的概念。Shiro更喜歡將Role解釋為一個命名的Permissions集合。就是這樣 - 聚合一個或多個權(quán)限聲明的應(yīng)用程序唯一名稱。 這是一個比許多應(yīng)用程序使用的隱式定義更具體的定義。如果您選擇讓您的數(shù)據(jù)模型反映Shiro的假設(shè),您會發(fā)現(xiàn)在控制安全策略方面您將擁有更多的權(quán)力。
會話(Session)
A會話是與在一段時間內(nèi)與軟件系統(tǒng)交互的單個用戶/主題相關(guān)聯(lián)的有狀態(tài)數(shù)據(jù)上下文。當(dāng)主題使用應(yīng)用程序時,可以從會話中添加/讀取/刪除數(shù)據(jù),并且應(yīng)用程序可以在必要時稍后使用此數(shù)據(jù)。當(dāng)用戶/主題退出應(yīng)用程序或由于不活動而超時時,會話終止。 對于熟悉HttpSession的人來說,Shiro 會話具有相同的用途,除非Shiro會話可以在任何環(huán)境中使用,即使沒有可用的Servlet容器或EJB容器也是如此。
來源:http://www./content-4-172251.html
|