• 1
  • 0
分享

1、引言

小屌丝:鱼哥,啥是认证,啥是鉴权?

小鱼:嗯?? 做了这么多年码农,这个还不知道呢?

小屌丝:唉~~ 没整明白啊,能不能给我讲一讲啊

小鱼:好吧,正好今晚有时间,我就把 认证、鉴权、授权及权限控制这点事,都给你说一说。

小屌丝:奈斯啊。

2、鉴权方案

2.1 认证

定义:

认证(Identification) :是指根据声明者所特有的识别信息,确认声明者的身份。

常见的认证技术:

身份证;

用户名和密码;

用户手机:手机短信、手机二维码扫描、手势密码;

用户的电子邮箱;

用户的生物学特征:指纹、语音、眼睛虹膜;

用户的大数据识别;

2.2 鉴权

定义:

鉴权(Authentication) :在信息安全领域是指对于一个声明者所声明的身份权利,对其所声明的真实性进行鉴别确认的过程。

若从授权出发,则会更加容易理解鉴权。

授权和鉴权是两个上下游相匹配的关系,先授权,后鉴权。

应用场景:

在现实生活领域: 门禁卡需要通过门禁卡识别器,银行卡需要通过银行卡识别器;

在互联网领域: 校验 session/cookie/token 的合法性和有效性

鉴权 是一个承上启下的一个环节,上游它接受授权的输出,校验其真实性后,然后获取权限(permission),这个将会为下一步的权限控制做好准备。

2.3 授权

定义:

授权(Authorization):在信息安全领域是指资源所有者委派执行者,赋予执行者指定范围的资源操作权限,以便对资源的相关操作。

应用场景:

在现实生活领域: 银行卡(由银行派发)、门禁卡(由物业管理处派发)、钥匙(由房东派发),这些都是现实生活中授权的实现方式。

在互联网领域例如: web 服务器的 session 机制、web 浏览器的 cookie 机制、颁发授权令牌(token)等都是一个授权的机制。

2.4 权限控制

定义:

权限控制(Access/Permission Control): 将可执行的操作定义为权限列表,然后判断操作是否允许/禁止。

对于权限控制,可以分为两部分进行理解:

权限,

控制。

权限是抽象的逻辑概念,而控制是具体的实现方式。

应用场景:

在现实生活领域: 以门禁卡的权限实现为例,一个门禁卡,拥有开公司所有的门的权限;一个门禁卡,拥有管理员角色的权限,因而可以开公司所有的门。

在互联网领域: 通过 web 后端服务,来控制接口访问,允许或拒绝访问请求。

2.5 认证,鉴权,授权及权限控制的关系

这四个关系,就是这种:

认证→授权→鉴权→权限控制

注意

在以下场景,这四个环节会同时发生:

使用门禁卡开门: 认证、授权、鉴权、权限控制四个环节同时发生。

网站登录: 用户在使用用户名和密码进行登录时,认证和授权两个环节一同完成,而鉴权和权限控制则发生在后续的请求访问中,比如在选购物品或支付时。

3、总结

关于认证、鉴权、授权、权限控制 及四者的关系,今天就分享到这里。

下一篇,我会分享 HTTP 基本鉴权、Session-Cookie 鉴权、Token鉴权等等。

我是奕然

CSDN博客专家

51Testing认证讲师

关注我,带你学习更多更专业的测试开发技术。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 基本技术问题:游戏测试的基本流程:分析测试需求-制定测试计划-设计测试用例-(可能会进行冒烟测试)-执行测试-生成测试报告OSI七层协议:应用层-表示层-会话层-传输层-网络层-数据链路层-物理层TCP与UDP的差别:游戏测试与软件测试之间的关系:1、游戏测试是软件测试的一部分游戏测试简单说就是发现游戏里的问题(BUG)并进行改进,从而提升游戏产品的质量。游戏测试作为软件测试的一部分,它具备了软件测试所有的一切共同的特性:①测试的目的是发现软件中存在的缺陷。②测试都是需要测试人员按照产品行为描述来实施。产品行为描述可以是书面的规格说明书,需求文档,产品文件,或是用户手册,源代码,或是工作的可执...
            10 10 5272
            分享
          • 软件测试中什么是冒烟测试?什么时候执行冒烟测试?怎么执行冒烟测试?冒烟测试与回归测试的区别是什么呢?何为冒烟测试?这一术语源自硬件行业,是对一个硬件或硬件组件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试。如果冒烟了,该硬件组件亦为废品。那么在软件测试中,“冒烟测试”这一术语描述的是在将代码更改集成到产品系统中之前对这些更改进行验证的过程。在检查了代码后,冒烟测试是确定和修复软件缺陷的最经济有效的方法。冒烟测试设计用于确认代码中的更改是否按预期运行,且不会破坏整个版本的稳定性。简单点就是,发现BUG后开发人员修复BUG后,测试人员针对该BUG进行再次测试。冒烟测试的成功与...
            1 1 2081
            分享
          • 在 Vue 3 的 Composition API 中,采用了 setup() 作为组件的入口函数。在结合了 TypeScript 的情况下,传统的 Vue.extend 等定义方法无法对此类组件给出正确的参数类型推断,这就需要引入 defineComponent() 组件包装函数,其在 rfc 文档中的说明为:https://composition-api.vuejs.org/api.html#setup interface Data {   [key: string]: unknown }   interface&nbs...
            0 0 851
            分享
          •   在经过一段时间的内测之后,微信现在大规模上线了朋友圈置顶功能。  在更新到最新版本微信之后,可以在自己朋友圈中点击右上角的三个点,此时会弹出一个菜单,出现“置顶”选项。  需要注意的是,目前微信依然提示不要过于依赖该功能,目前依然在测试中,后续随时可能会取消。  有网友表示,这个功能对于微商、销售人员来说堪称完美,可以将店铺链接、二维码等置顶,被第一时间看到。  而对于普通用户而言,其实作用并不是很大,除非是将一些婚纱照、结婚纪念、生日纪念等比较有意义的内容置顶,其他内容也没啥置顶的必要。  最重要的是,大多数普通人都习惯了将朋友圈设置三天可见,并不愿意随时随地分享自己的生活。  不过,新...
            0 0 598
            分享
          • 一、保证Bug的有效性提交的bug必须是有效的,所以我们在提交bug时,需要确定以下几点:交付过程中测试人员需按照设定好的模块,对bug进行归类提交;bug的类型默认为UI问题、功能问题、崩溃问题,提交bug时不可混淆;需求是否明确、前提条件是否满足、输入数据是否正确、操作步骤是否清楚、 bug是否具有唯一性;避免提交操作错误、重复的、已知的Bug。二、Bug标题要简洁明了bug标题要简明扼要的阐述问题本质,让开发能快速了解你所提的bug的大概内容。需要写明在哪个页面执行什么操作出现什么现象。举个例子!正确示例: 在我的设置页面不填写任何内容点击保存后,客户端崩溃。错误示例:设置页面...
            11 11 3706
            分享
      • 51testing软件测试圈微信