shiro实战系列(十二)之常用专业术语

请花 2 分钟来阅读和理解它——这很重要。真的。这里的术语和概念在文档的任何地方都被涉及到,它将在总体上 大大简化你对 Shiro 和安全的理解。   由于所使用的术语使得安全可能令人困惑。我们将通过澄清一些核心概念使生活更容易,你将会看到 Shiro API 是如 何很好地反映了它们:

(1)Authentication

身份验证是验证 Subject 身份的过程——实质上是证明某些人是否真的是他们所说的他们是谁。当认证尝试成 功后,应用程序能够相信该 subject 被保证是其所期望的。   (2)Authorization

授权,又称为访问控制,是决定一个 user/Subject 是否被允许做某事的过程。它通常是通过检查和解释 Subject 的角色和权限(见下文),然后允许或拒绝到一个请求的资源或功能来完成的。

(3)Cipher 密码是进行加密或解密的一种算法。该算法一般依赖于一块被称为 key 的信息。基于不同的 key 的加密算法 也是不一样的,所有解密没有它是非常困难的。   密码有不同的表现形式。分组密码致力于符号块,通常是固定大小的,而流密码致力于连续的符号流。对称 性密码加密和解密使用相同的密钥(key),而非对称性加密使用不同的密钥。如果非对称性加密的密钥不能 从其他地方得到,那么可以创建公钥/私钥对公开共享。   (4)Credential 凭证是一块信息,用来验证 user/Subject 的身份。在认证尝试期间,一个(或多个)凭证与 Principals(s)被一 同提交,来验证 user/Subject 所提交的确实是所关联的用户。证书通常是非常秘密的东西,只有特定的 user/Subject 才知道,如密码或 PGP 密钥或生物属性或类似的机制。

这个想法是为 principal 设置的,只有一个人会知道正确的证书来“匹配”该 principal。如果当前 user/Subject 提供了正确的凭证匹配了存储在系统中的,那么系统可以假定并信任当前 user/Subject 是真的他们所说的他们 是谁。信任度随着更安全的凭证类型加深(如,生物识别签名 > 密码)。

(5) Cryptography 加密是保护信息不受不希望的访问的习惯做法,通过隐藏信息或将它转化成无意义的东西,这样没人可以理 解它。Shiro 致力于加密的两个核心要素:加密数据的密码,如使用公钥或私钥的邮件,以及散列表(也称消 息摘要),它对数据进行不可逆的加密,如密码。

(6) Hash 散列函数是单向的,不可逆转的输入源,有时也被称为消息,在一个编码的哈希值内部,有时也被称为消息 摘要。它通常用于密码,数字指纹,或以字节数组为基础的数据。

(7) Permission 权限,至少按照 Shiro 的解释,是在应用程序中描述原始功能的一份声明并没有更多的功能。权限是在安全策 略中最低级别的概念。它们仅定义了应用程序能够做“什么”。它们没有说明“谁”能够执行这些操作。权 限只是行为的声明,仅此而已。   一些权限的例子:

打开文件

浏览‘/user/list‘页面

打印文档

删除‘jsmith‘用户

(8)Principal

Principal 是一个应用程序用户(Subject)的任何标志属性。“标志属性”可以是任何对你应用程序有意义的东 西——用户名,姓,名,社会安全号码,用户 ID 等。这就是它——没什么古怪的。   Shiro 也引用一些我们称之为 Subject 的 primary principal 的东西。一个 primary principal 是在整个应用程序中唯 一标识 Subject 的 principal。理想的 primary principal 是用户名或 RDBMS 用户表主键——用户 ID。对于在应用 程序中的用户(Subject)来说,只有一个 primary principal

(9)Realm

Realm 是一个能够访问应用程序特定的安全数据(如用户,角色和权限)的组件。它可以被看作是一个特定 安全的 DAO(Data Access Object)。Realm 将这些应用程序特定的数据转换成 Shiro 能够理解的格式,这样 Shiro 反过来能够提供一个单一的易于理解的 Subject 编程 API,无论有多少数据源存在或无论你的数据是什么样的 应用程序特定的格式。   Realm 通常和数据源是一对一的对应关系,如关系数据库,LDAP 目录,文件系统,或其他类似资源。因此, Realm 接口的实现使用数据源特定的 API 来展示授权数据(角色,权限等),如 JDBC,文件 IO,Hibernate 或 JPA,或其他数据访问 API。

(10) Role

基于你对话的对象,一个角色的定义是可以多变的。在许多应用程序中,它充其量是个模糊不清的概念,人 们用它来隐式定义安全策略。Shiro 偏向于把角色简单地解释为一组命名的权限的集合。这就是它——一个应 用程序的唯一名称,聚集一个或多个权限声明。   这是一个比许多应用程序使用的隐式的定义更为具体的定义。如果你选择了你的数据模型反映 Shiro 的假设, 你会发现将有更多控制安全策略的权力。

(11) Session

会话是一个在一段时间内有状态的数据,其上下文与一个单一的与软件系统交互的 user/Subject 相关联。当 Subject 使用应用程序时,能够从会话中添加/读取/删除数据,并且应用程序稍后能够在需要的地方使用该数 据。会话会被终止,由于 user/Subject 注销或会话不活动而超时。   对于那些熟悉 HttpSession 的,Shiro Session 服务于同一目标,除了 Shiro 会话能够在任何环境下使用,甚至在 没有 Servlet 容器或 EJB 容器的环境。   (12)Subject

Subject 只是一个精挑细选的安全术语,基本上的意思是一个应用程序用户的安全特定的“视图”。然而 Subject 不总是需要反映为一个人——它可以代表一个调用你应用程序的外部进程,或许是一个系统帐户的守护进程, 在一段时间内执行一些间歇性的东西(如一个 cron job)。它基本上是任何使用应用程序做某事的实体的一个 代表。

原文地址:https://www.cnblogs.com/youcong/p/9194028.html

时间: 2024-10-09 08:20:05

shiro实战系列(十二)之常用专业术语的相关文章

MP实战系列(十二)之封装方法详解(续二)

继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectById()方法 演示示例: UserEntity user = ud.selectById(33); System.out.println(user.getEmail()); 简单的说明: 如果是在MyBatis中,需要再对应的xml编写这样的sql select column1,column2..

shiro实战系列(十)之Subject

毫无疑问,在 Apache Shiro 中最重要的概念就是 Subject.'Subject'仅仅是一个安全术语,是指应用程序用户的特定 安全的"视图".一个 Shiro Subject 实例代表了一个单一应用程序用户的安全状态和操作. 这些操作包括: authentication(login) authorization(access control) session access logout 我们原本希望把它称为"User"由于这样"很有意义&quo

shiro实战系列(十五)之Spring集成Shiro

Shiro 的 JavaBean 兼容性使得它非常适合通过 Spring XML 或其他基于 Spring 的配置机制.Shiro 应用程序需要一个具 有单例 SecurityManager 实例的应用程序.请注意,这不会是一个静态的单例,但应该只有一个应用程序能够使用 的实例,无论它是否是静态单例的. Web Applications Shiro 拥有对 Spring Web 应用程序的一流支持.在 Web 应用程序中,所有 Shiro 可访问的万恶不请求必须通过一个 主要的 Shiro 过滤

openstack运维实战系列(十二)之nova aggregate资源分组

1. 背景说明    openstack设计时的宗旨是能够为企业提供大规模的云计算服务,包括计算,存储,网络等资源,以服务的形式交付给用户,在一个非常大的环境中,需要将openstack的资源划分,openstack nova支持三种划分的方式:Region区域,Zone空间和Aggregate分组,其中Region是指一个地区或者地域,如可以将中国划分为:华南地区,华中地区,东北地区,西南地区:Zone则可以按照机房的形式来划分,如北京兆维机房为一个Zone,北京鲁谷机房为另外一个Zone:A

SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据

原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC规范.KML规范)的GIS专业理论知识.

Exchange Server 2013系列十二:邮箱的基本管理

杜飞 邮箱是 Exchange 组织中信息工作人员最常用的收件人类型.每个邮箱都与一个 Active Directory 用户帐户关联.用户可以使用邮箱发送和接收邮件,并可以存储邮件.约会.任务.便笺和文档.邮箱是 Exchange 组织中用户的主要邮件传递和协作工具.每个邮箱由 Active Directory 用户以及存储在 Exchange 邮箱数据库中的邮箱数据组成(如下图所示).邮箱的所有配置数据都存储在 Exchange 用户对象的 Active Directory 属性中.邮箱数据

SCCM 2012 R2实战系列之二:前提工作准备

在上一篇中,我们完成了SQL Server 2012的安装和配置.现在跟大家分享SCCM安装前的准备工作. 2.1 SCCM 2012 R2 准备工作 2.1.1 创建并分配System Management容器权限 打开ADSI编辑器,连接到"默认命名上下文"---右击"system"新建对象---选择"container"-下一步---填写值"system management"---下一步---完成 分配System M

struts2官方 中文教程 系列十二:控制标签

介绍 struts2有一些控制语句的标签,本教程中我们将讨论如何使用 if 和iterator 标签.更多的控制标签可以参见 tags reference. 到此我们新建一个struts2 web 项目:struts_basic2 本帖地址:struts2官方 中文教程 系列十二:控制标签 即 http://www.cnblogs.com/linghaoxinpian/p/6941683.html 下载本章节代码 struts2 if标签 我们在thankyou.jsp中添加如下代码: <s:i

ZooKeeper系列之二:Zookeeper常用命令

ZooKeeper系列之二:Zookeeper常用命令 http://blog.csdn.net/xiaolang85/article/details/13021339 ZooKeeper服务命令: 在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作 1. 启动ZK服务:       sh bin/zkServer.sh start 2. 查看ZK服务状态: sh bin/zkServer.sh status 3. 停止ZK服务:       sh bin/z