Apache Shiro 的术语

请花2分钟阅读并理解这一点——这真的很重要。真的。这里的术语和概念在文档中随处可见,它将极大地简化您对Shiro和安全性的理解。

由于使用了术语,安全性可能会令人困惑。通过澄清一些核心概念,我们会让生活变得更简单,你会看到Shiro API是多么完美地反映了它们:

Authentication(认证):

认证是验证一个主体(Subject)身份的过程——本质上是证明某人确实是他们所说的人。当验证尝试成功时,应用程序可以信任该主题(Subject)被保证为应用程序所期望的对象。

Authorization(授权):

授权也被称为访问控制,它是一个决定是否(user/Subject)用户/主题可以去做某些事情的流程。

它通常通过检查和解释一个主题的角色和权限来完成,然后允许或拒绝访问请求的资源或功能。

Cipherj(加密):

密码是一种执行加密或解密的算法。该算法通常依赖于一段被称为密钥的信息。而且加密方法根据密钥的不同而变化,所以,没有它,decyrption是非常困难的。

密码有不同的变体。分组密码工作在固定大小的符号块上,而流密码在连续的符号流上工作。对称密码使用相同的密钥进行加密和解密,而非对称密码使用不同的密钥。如果非对称密码中的密钥不能从另一个派生,则可以公开共享公钥/私钥对。

Credential(凭证):

凭据是验证用户/主体(User/Subject)身份的信息。在验证尝试验证用户/主题(User/Subject)提交的用户实际上是相关的用户时,将提交一个(或多个)凭证和Principal(s)。凭证通常是非常机密的东西,只有特定的用户/主体(User/Subject)才知道,比如密码或PGP密钥或生物特征属性或类似的机制。

这个想法是,对于一个负责人,只有一个人知道正确的证书与那个负责人“配对”。如果当前的用户/主题(User/Subject)提供了与系统中存储的正确的证书匹配,那么系统就可以假定并相信当前的用户/主体实际上是他们说的那个人。信任程度随着更安全的凭证类型而增加(例如生物签名>密码)。

Cryptography(密码学):

密码学是一种通过隐藏或将信息转换成无意义的方式来保护信息不受欢迎的行为,因此没有人可以阅读它。Shiro主要关注加密的两个核心元素:加密像电子邮件一样使用公钥或私钥加密密码,而散列(又名消息摘要)对像密码这样的数据进行不可逆转的加密。

Hash(哈希):

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

Permission(权限): 
权限,至少是Shiro解释它,是一个描述应用程序中的原始功能的语句,仅此而已。权限是安全策略中最低级别的构造。它们只定义应用程序可以做什么。他们没有描述“谁”能够执行这些动作。许可只是行为的陈述,仅此而已。

权限的例子:

打开文件

显示 ‘/user/list’网页

打印文档

删除 ‘jsmith’用户

Principal(主体):

主体(Principal)是应用程序用户(主体)的任何"标识属性"。“识别属性”可以是任何对你的应用程序有意义的东西——用户名、姓名、社会安全号码、用户ID等等。
Shiro也引用了一些我们称之为主题(Subject)的主要原则。一个主主体是在整个应用程序中唯一标识主题(Subject)的任何主体。理想的主要原则是用户名或者RDBMS用户表主键的用户ID。在应用程序中,用户(主题)只有一个主要的主体。

Realm(域):

域是一个组件,它可以访问特定于应用程序的安全数据,如用户、角色和权限。它可以被认为是一个安全特定的DAO(数据访问对象)。域将这种特定于应用程序的数据转换为Shiro理解的格式,因此无论有多少数据源或应用程序特定的数据可能是什么,Shiro都可以提供一个简单易懂的主题编程API。
域通常与数据源(如关系数据库、LDAP目录、文件系统或其他类似资源)之间有1到1的关联。因此,Realm接口的实现使用数据源特定的API来发现授权数据(角色、权限等),比如JDBC、文件IO、Hibernate或JPA,或任何其他数据访问API。

Role(角色):

角色的定义可以根据你讨论的对象而有所不同。在许多应用中,它是最模糊的概念在人们使用隐式定义的安全策略。Shiro喜欢表演一个角色作为一个简单的命名权限集。这是一个聚合一个或多个权限声明的应用程序唯一名称。
这是比许多应用程序使用的隐式定义更具体的定义。如果你选择你的数据模型反映了Shiro的假设,你会发现你会拥有更大的力量控制的安全策略。

Sesssion(会话):

会话是与在一段时间内与一个软件系统交互的单个用户/主体关联的有状态数据上下文。当主体使用该应用程序时,数据可以从会话中添加/读取/删除,而应用程序可以在必要时使用该数据。当用户/主体从应用程序中注销或由于不活动而超时时,会话将终止。
对于那些熟悉HttpSession的人来说,Shiro会话具有相同的目的,除了Shiro会话可以在任何环境中使用,即使没有Servlet容器或EJB容器可用。

Subject(主题):

一个主题只是一个花哨的安全术语,基本上是指应用程序用户的特定于安全的“视图”。一个主题并不总是需要反映一个人——它可以代表一个调用您的应用程序的外部进程,或者可能是一个后台系统帐户,在一段时间内(比如cron作业)中间歇性地执行某个操作。它基本上是任何使用应用程序的实体的表示。


















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值