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)。它基本上是任何使用应用程序做某事的实体的一个 代表。
shiro实战系列(十二)之常用专业术语的更多相关文章
- MP实战系列(十二)之封装方法详解(续二)
继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectB ...
- shiro实战系列(十四)之配置
Shiro 被设计成能够在任何环境下工作,从最简单的命令行应用程序到最大的的企业群集应用.由于环境的多样性,使得许多配置机制适用于它的配置. 一. 许多配置选项 Shiro的SecurityManag ...
- shiro实战系列(十五)之Spring集成Shiro
Shiro 的 JavaBean 兼容性使得它非常适合通过 Spring XML 或其他基于 Spring 的配置机制.Shiro 应用程序需要一个具 有单例 SecurityManager 实例的应 ...
- shiro实战系列(十)之Subject
毫无疑问,在 Apache Shiro 中最重要的概念就是 Subject.'Subject'仅仅是一个安全术语,是指应用程序用户的特定 安全的“视图”.一个 Shiro Subject 实例代表了一 ...
- MP实战系列(十四)之分页使用
MyBatis Plus的分页,有插件式的,也有其自带了,插件需要配置,说麻烦也不是特别麻烦,不过觉得现有的MyBatis Plus足以解决,就懒得配置插件了. MyBatis Plus的资料不算是太 ...
- SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据
原文:SQL Server 2008空间数据应用系列十二:Bing Maps中呈现GeoRSS订阅的空间数据 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Se ...
- 爬虫系列(十二) selenium的基本使用
一.selenium 简介 随着网络技术的发展,目前大部分网站都采用动态加载技术,常见的有 JavaScript 动态渲染和 Ajax 动态加载 对于爬取这些网站,一般有两种思路: 分析 Ajax 请 ...
- Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】
2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...
- AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码
AspNetCore - MVC实战系列目录 . 爱留图网站诞生 . AspNetCore - MVC实战系列(一)之Sqlserver表映射实体模型 . AspNetCore-MVC实战系列(二)之 ...
随机推荐
- zookeeper 知识点汇总
目录 Zookeeper 是什么 Zookeeper 树状模型 Zookeeper 集群结构 如何使用 ZooKeeper 运行 Zookeeper 步骤1 修改 ZooKeeper 配置文件 步骤 ...
- 233 Matrix(hdu5015 矩阵)
233 Matrix Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- zsh: command not found: pip 解决方法
出现zsh: command not found: xxx解决方法: 把 bash shell 中.bash_profile 全部环境变量加入zsh shell里就好 step1: Term执行 op ...
- 树莓派 MPG视频硬件解码破解 Raspberry Pi Patch for MPEG-2, VC-1 license
Enable the Pi's hardware decoding of MPEG-2 and VC-1 MPEG2 patents have expired If you have start.e ...
- Linux CentOS下Python+robot framework环境搭建
Linux CentOS下Python+robot framework环境搭建 by:授客 QQ:1033553122 操作系统环境:CentOS 6.5-x86_64 下载地址:http://w ...
- SQLServer 学习笔记之超详细基础SQL语句 Part 4
Sqlserver 学习笔记 by:授客 QQ:1033553122 -----------------------接Part 3------------------- 17 带比较运算符的嵌套查询 ...
- Sqlserver2008及以上使用全文索引排除干扰词 (转载)
关于SQLServer2008全文索引干扰词使用SQL SERVER 2008全文索引进行搜索 contains(Keywords, '"xx of xx*"') (注意是后面有包 ...
- TCP的socket资源被耗尽的问题
一. 故障现象 部分机顶盒用户出现大面积登录APP时,界面停留在登陆页面,无反应. 二. 现象初步分析 本次问题出现时,所有AAA出现了异常流量波动,在AAA异常流量段期间接到用户故障报障.此时主要表 ...
- 学习笔记:Rick's RoTs -- Rules of Thumb for MySQL
Table of Contents SELECTs -- do's and don'tsINDEXingENGINE DifferencesOptimizations, and notPARTITIO ...
- http的断点续传
要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段. HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Co ...