分享

Apache Shiro术语-03

 印度阿三17 2019-04-24

Apache Shiro术语

这里的术语和概念在文档中随处可见,它将极大地简化您对Shiro和安全性的理解。

由于使用了术语,安全性可能非常混乱。通过澄清一些核心概念,我们将使生活更轻松,您将看到Shiro API如何很好地反映它们:

  • 身份(Authentication)
    验证身份验证是验证主体身份的过程 - 基本上证明某人确实是他们所说的人。当身份验证尝试成功时,应用程序可以信任主题是保证应用程序期望的对象。

  • 授权(Authorization)
    授权(也称为访问控制)是确定是否允许用户/主体做某事的过程。它通常通过检查和解释主体的角色和权限(见下文),然后允许或拒绝访问所请求的资源或功能来完成。

  • 密码(Cipher)
    密码是用于执行加密或解密的算法。该算法通常依赖于称为密钥的一条信息。并且加密根据密钥而变化,因此如果没有它,去除极其困难。

    密码有不同的变化。分组密码适用于通常具有固定大小的符号块,而流密码则使用连续的符号流。Symmetric Ciphers使用相同的密钥进行加密和解密,而Asymmetric Ciphers使用不同的密钥。并且如果非对称密码中的密钥不能从另一个密钥导出,则可以共享一个密钥,公开创建公钥/私钥对。

  • 凭证(Credential
    Credential是一条验证用户/ Subject的身份的信息。在验证尝试期间,一个(或多个)凭证与委托人一起提交,以验证提交它们的用户/主体实际上是关联用户。凭证通常是非常秘密的东西,只有特定的用户/主体才会知道,例如密码或PGP密钥或生物特征属性或类似机制。

    这个想法是,对于委托人来说,只有一个人知道与该委托人“配对”的正确凭证。如果当前用户/主题提供与系统中存储的凭证匹配的正确凭证,则系统可以假设并相信当前用户/主体确实是他们所说的人。信任程度随着更安全的凭证类型(例如生物识别签名>密码)而增加。

  • 加密算法(Cryptography
    密码术是通过隐藏信息或将其转换为无意义来保护信息免受不良访问的做法,因此没有其他人可以阅读它。Shiro专注于密码学的两个核心要素:使用公钥或私钥加密数据的密码,以及对密码等数据进行不可逆转加密的哈希(也称为消息摘要)。

  • 散列(Hash)
    散列函数是将输入源(有时称为消息)单向,不可逆转换为编码散列值,有时称为消息摘要。它通常用于密码,数字指纹或具有底层字节数组的数据。

  • 权限(Permission)
    A权限,至少在Shiro解释它时,是一个描述应用程序中的原始功能的声明,仅此而已。权限是安全策略中的最低级别构造。它们仅定义应用程序可以执行的“操作”。他们没有描述“谁”能够执行这些操作。权限只是一种行为陈述,仅此而已。

    一些权限示例:

    • 打开一个文件

    • 查看“/ user / list”网页

    • 打印文件

    • 删除'jsmith'用户

  • 主要(Principal)
    主要是一个应用程序的用户(对象)的任何识别属性。“识别属性”可以是对您的应用程序有意义的任何内容 - 用户名,姓氏,给定名称,社会安全号码,用户ID等。这就是它 - 没什么了不起的。

    Shiro还引用了我们称之为主体的主要原则。甲初级主要是唯一标识的任何主要主题在整个应用程序。理想的主要原则是用户名或用户ID,它是RDBMS用户表主键。应用程序中的用户(主题)只有一个主要主体。

  • 域(Realm)
    A Realm是一个可以访问特定于应用程序的安全数据(如用户,角色和权限)的组件。它可以被认为是特定于安全性的DAO(数据访问对象)。Realm将这个特定于应用程序的数据转换为Shiro理解的格式,因此无论存在多少数据源或您的数据可能是特定于应用程序的特性,Shiro都可以提供一个易于理解的主题编程API。

    领域通常与数据源(例如关系数据库,LDAP目录,文件系统或其他类似资源)具有1对1的关联。因此,Realm接口的实现使用特定于数据源的API来发现授权数据(角色,权限等),例如JDBC,文件IO,Hibernate或JPA或任何其他数据访问API。

  • 角色角色(Role)
    的定义可能因您与之交谈的人而异。在许多应用程序中,人们用它来隐含地定义安全策略,这是一个模糊的概念。Shiro更喜欢将Role解释为一个命名的Permissions集合。就是这样 - 聚合一个或多个权限声明的应用程序唯一名称。

    这是一个比许多应用程序使用的隐式定义更具体的定义。如果您选择让您的数据模型反映Shiro的假设,您会发现在控制安全策略方面您将拥有更多的权力。

  • 会话(Session)
    A会话是与在一段时间内与软件系统交互的单个用户/主题相关联的有状态数据上下文。当主题使用应用程序时,可以从会话中添加/读取/删除数据,并且应用程序可以在必要时稍后使用此数据。当用户/主题退出应用程序或由于不活动而超时时,会话终止。

    对于熟悉HttpSession的人来说,Shiro 会话具有相同的用途,除非Shiro会话可以在任何环境中使用,即使没有可用的Servlet容器或EJB容器也是如此。

  • 主题(Subject)
    主题就是看中安全术语,基本上意味着应用程序用户的特定安全“视图”。主题并不总是需要反映人类 - 它可以表示调用您的应用程序的外部进程,或者可能是在一段时间内间歇性地执行某些操作的守护程序系统帐户(例如cron作业)。它基本上是对应用程序执行某些操作的任何实体的表示

来源:http://www./content-4-172251.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多