这里的术语和概念在文档中随处可见,它将极大地简化您对Shiro和安全性的理解。 由于使用了术语,安全性可能非常混乱。通过澄清一些核心概念,我们将使生活更轻松,您将看到Shiro API如何很好地反映它们:
密码(Cipher)
密码是用于执行加密或解密的算法。该算法通常依赖于称为密钥的一条信息。并且加密根据密钥而变化,因此如果没有它,去除极其困难。 密码有不同的变化。分组密码适用于通常具有固定大小的符号块,而流密码则使用连续的符号流。Symmetric Ciphers使用相同的密钥进行加密和解密,而Asymmetric Ciphers使用不同的密钥。并且如果非对称密码中的密钥不能从另一个密钥导出,则可以共享一个密钥,公开创建公钥/私钥对。
凭证(Credential)
A Credential是一条验证用户/ Subject的身份的信息。在验证尝试期间,一个(或多个)凭证与委托人一起提交,以验证提交它们的用户/主体实际上是关联用户。凭证通常是非常秘密的东西,只有特定的用户/主体才会知道,例如密码或PGP密钥或生物特征属性或类似机制。 这个想法是,对于委托人来说,只有一个人知道与该委托人“配对”的正确凭证。如果当前用户/主题提供与系统中存储的凭证匹配的正确凭证,则系统可以假设并相信当前用户/主体确实是他们所说的人。信任程度随着更安全的凭证类型(例如生物识别签名>密码)而增加。
主要(Principal)
甲主要是一个应用程序的用户(对象)的任何识别属性。“识别属性”可以是对您的应用程序有意义的任何内容 - 用户名,姓氏,给定名称,社会安全号码,用户ID等。这就是它 - 没什么了不起的。 Shiro还引用了我们称之为主体的主要原则。甲初级主要是唯一标识的任何主要主题在整个应用程序。理想的主要原则是用户名或用户ID,它是RDBMS用户表主键。应用程序中的用户(主题)只有一个主要主体。
域(Realm)
A Realm是一个可以访问特定于应用程序的安全数据(如用户,角色和权限)的组件。它可以被认为是特定于安全性的DAO(数据访问对象)。Realm将这个特定于应用程序的数据转换为Shiro理解的格式,因此无论存在多少数据源或您的数据可能是特定于应用程序的特性,Shiro都可以提供一个易于理解的主题编程API。 领域通常与数据源(例如关系数据库,LDAP目录,文件系统或其他类似资源)具有1对1的关联。因此,Realm接口的实现使用特定于数据源的API来发现授权数据(角色,权限等),例如JDBC,文件IO,Hibernate或JPA或任何其他数据访问API。
会话(Session)
A会话是与在一段时间内与软件系统交互的单个用户/主题相关联的有状态数据上下文。当主题使用应用程序时,可以从会话中添加/读取/删除数据,并且应用程序可以在必要时稍后使用此数据。当用户/主题退出应用程序或由于不活动而超时时,会话终止。 对于熟悉HttpSession的人来说,Shiro 会话具有相同的用途,除非Shiro会话可以在任何环境中使用,即使没有可用的Servlet容器或EJB容器也是如此。
来源:http://www./content-4-172251.html
|