认证、授权、鉴权和权限控制

2023-05-16

原文地址
https://www.cnblogs.com/badboyh2o/p/11068779.html
如有侵权,请联系删除,谢谢!

本文将对信息安全领域中认证、授权、鉴权和权限控制这四个概念给出相应的定义,并对这个概念之间的相互关系进行梳理。本文给出的概念定义将有助于后续文章中对互联网应用开发用户登录功能的更多讨论

1. 认证

认证是指根据声明者所特有的识别信息,确认声明者的身份。认证在英文中对应于identification这个单词。
最常见的认证实现方式是通过用户名和密码,但认证方式不限于此。下面都是当前常见到的认证技术,

  • 身份证
  • 用户名和密码
  • 用户手机:手机短信、手机二维码扫描、手势密码
  • 用户的电子邮箱
  • 基于时间序列和用户相关的一次性口令
  • 用户的生物学特征:指纹、语音、眼睛虹膜
  • 用户的大数据识别

为了确认用户的身份,防止伪造,在安全要求高的场合,经常会使用组合认证(或者叫多因素认证),也就是同时使用多个认证方式对用户的身份进行校验。

2. 授权

简单来说,授权一般是指获取用户的委派权限。在英文中对应于authorization这个单词。
在信息安全领域,授权是指资源所有者委派执行者,赋予执行者指定范围的资源操作权限,以便执行者代理执行对资源的相关操作。这里面包含有如下四个重要概念,

  • 资源所有者:拥有资源的所有权利,一般就是资源的拥有者。
  • 资源执行者:被委派去执行资源的相关操作。
  • 操作权限:可以对资源进行的某种操作。
  • 资源:有价值的信息或数据等,受到安全保护。

授权的实现方式非常多也很广泛,我们常见的银行卡、门禁卡、钥匙、公证书,这些都是现实生活中授权的实现方式。其实现方式主要通过一个共信的媒介完成,这个媒介不可被篡改,不可随意伪造,很多时候需要受保护,防止被窃取。

在互联网应用开发领域,授权所用到的授信媒介主要包括如下几种:

  • 通过web服务器的session机制,一个访问会话保持着用户的授权信息
  • 通过web浏览器的cookie机制,一个网站的cookie保持着用户的授权信息
  • 颁发授权令牌(token),一个合法有效的令牌中保持着用户的授权信息

3. 鉴权

鉴权是指对于一个声明者所声明的身份权利,对其所声明的真实性进行鉴别确认的过程。在英文中对应于authentication这个单词。

鉴权主要是对声明者所声明的真实性进行校验。若从授权出发,则会更加容易理解鉴权。授权和鉴权是两个上下游相匹配的关系,先授权,后鉴权。授权和鉴权两个词中的“权”,是同一个概念,就是所委派的权利,在实现上即为授信媒介的表达形式。

因此,鉴权的实现方式是和授权方式有一一对应关系。对授权所颁发授信媒介进行解析,确认其真实性。下面是鉴权的一些实现方式:

  • 门禁卡:通过门禁卡识别器
  • 钥匙:通过相匹配的锁
  • 银行卡:通过银行卡识别器
  • 互联网web开发领域的session/cookie/token:校验session/cookie/token的合法性和有效性

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

4. 权限控制

权限控制是指对可执行的各种操作组合配置为权限列表,然后根据执行者的权限,若其操作在权限范围内,则允许执行,否则禁止。权限控制在英文中对应于access/permission control。

对于权限控制,可以分为两部分进行理解:一个是权限,另一个是控制。权限是抽象的逻辑概念,而控制是具体的实现方式

先看权限(Permission),这是一个抽象的概念,一般预先定义和配置好,以便控制的具体实现。权限的定义,若简单点,可以直接对应于一个可执行的操作集合。而一般情况下,会有基于角色的方式来定义权限,由角色来封装可执行的操作集合。

若以门禁卡的权限实现为例,上述两种定义方式则可以各自表达为

  • 这是一个门禁卡,拥有开公司所有的门的权限
  • 这是一个门禁卡,拥有管理员角色的权限,因而可以开公司所有的门

可以看到,权限作为一个抽象的概念,将执行者和可具体执行的操作相分离
在上文的讨论中,鉴权的输出是权限(Permission)。一旦有了权限,便知道了可执行的操作,接下来就是控制的事情了。
对于控制,是根据执行者的权限,对其所执行的操作进行判断,决定允许或禁止当前操作的执行。现实生活中控制的实现方式,多种多样,

  • 门禁:控制门的开关
  • 自行车锁:控制车轮
  • 互联网web后端服务:控制接口访问,允许或拒绝访问请求

5. 认证、授权、鉴权和权限控制的关系

认证、授权、鉴权和权限控制这四个环节是一个前后依次发生、上下游的关系,
认证–>授权–>鉴权–>权限控制
需要说明的是,这四个环节在有些时候会同时发生。 例如在下面的几个场景,

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

无论怎样,若从时间顺序方面来看,这四个环节是按时间前后、依次相继发生的关系

6. 认证和鉴权的关系

这两个概念在很多时候是被混淆最多的概念。被混淆的主要原因,如上文所述,很多时候认证、授权、鉴权和权限控制一同发生,以至于被误解为,认证就是鉴权,鉴权就是认证。

其实两者是不一样的概念,两者都有对身份的确认过程,但是两者的主要区别在于,

  • 认证是确认声明者的本身身份,其作为授权的上游衔接而存在
  • 鉴权是对声明者所声明的真实性进行确认的过程,其作为授权的下游衔接而存在

7. 小结

下面对本文讨论的四个概念用一个表格进行小结,

定义英文实现方式
认证确认声明者的身份identification根据声明者独特的识别信息
授权获取用户的委派权限authorization颁发一个授信媒介,不可被篡改,不可伪造,受保护
鉴权对所声明的权限真实性进行鉴别的过程权限是一个抽象的逻辑概念,定义和配置可执行的操作,而控制是具体的实现方式,通过一定的方式控制操作的允许和禁止authentication鉴权和授权是一一对应关系,解析授信媒介,确认其合法性、有效性
权限控制权限是一个抽象的逻辑概念,定义和配置可执行的操作,而控制是具体的实现方式,通过一定的方式控制操作的允许和禁止access/permission control实现方式多样,根据具体情况来实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

认证、授权、鉴权和权限控制 的相关文章

  • Keil 查看文件路径的方法

    目录 方法一 xff1a 方法二 xff1a 方法一 xff1a 在工程种选择任意一个文件 xff0c 然后点击右键 xff0c 选择 34 Option for File 34 就可以看到这个文件的路径了 方法二 xff1a 在文件框种右
  • Linux下CMake简明教程

    CMake是开源 跨平台的构建工具 xff0c 可以让我们通过编写简单的配置文件去生成本地的Makefile xff0c 这个配置文件是独立于运行平台和编译器的 xff0c 这样就不用亲自去编写Makefile了 xff0c 而且配置文件可
  • unity3d TextMeshPro使用中文字体(秒懂)

    1 打开C Windows Fonts 目录选择中文字体 2 将选中的字体拖拽到Unity编辑器中 3 将已下这段文字保存至zh cn txt文件 注意编码格式为Unicode xff0c 不然会出现乱码 并且拖入Unity编辑器 的一是了
  • Windows下cmd命令行远程传输sftp命令

    sftp 用户名 64 ip地址
  • laravel 500 Server Error,完美解决

    在安装laravel项目后 xff0c 首次打开laravel出现 解决方案 xff1a 1 打开配置文件 laravel config app php 3 找到 39 debug 39 项 设置为 true 4 刷新网页 抛出运行异常 x
  • ubuntu下C++两种方法解析json

    第一种 用jsoncpp xff0c 不过本人目前不知道如何在clion里面使用 xff0c 只知道在命令行g 43 43 使用 xff0c 哪位知道如何在clion里使用可以告诉我 xff0c 谢谢 如下步骤本人操作过两边 xff0c 所
  • unity3d鼠标控制物体 移动 旋转 缩放

    需求 xff1a 制作一个鼠标中键移动缩放和鼠标右键旋转的功能 xff08 鼠标右键旋转可以自行改成鼠标左键旋转 xff09 效果图 xff1a 1 新建一个名为Target的立方体cube 2 新建一个材质球 Yellow颜色的并挂载到T
  • Centos Apache2设置禁止浏览目录,绝对生效。

    1 打开httpd配置文件 vi etc httpd conf httpd conf 2 找到 Options Indexes FollowSymLinks 注释掉 xff0c 并在下面添加一行 Options None Options I
  • Ubuntu查看某端口是否开放

    1 例如查看80端口是否开放 xff0c 输入 lsof i 端口号 xff0c 如果没有信息出现则说明该端口还未开放 lsof i 80 telnet 192 168 0 1 80 2 也可以通过以下命令 xff0c 查看所有开放的端口
  • 集群和分布式的区别,还不理解的你打我!!!

    1 老师布置作业 xff0c 让你抄10遍白居易的 长恨歌 xff0c 抄一份需要5分钟 xff0c 10份需要50分钟 xff0c 这时你觉得要是有9个人帮我抄另外9份 xff0c 那你5分钟就能交作业了 xff0c 这就是集群处理 2
  • windows下查找并关闭端口

    1 查找端口 8080 gt netstat ano findstr 8080 找到8080端口对应的pid 19060 2 关闭8080端口 gt taskkill f pid 19060
  • Unity3D 制作调色板

    一个很好用的调色板 源码 xff1a http websol cn 2021 01 27 unity e8 b0 83 e8 89 b2 e6 9d bf e6 ba 90 e7 a0 81
  • vs2017生成C++/C语言的DLL以及调用 极简讲解 秒懂

    为了尽可能缩减文字描述 xff0c 减少阅读疲劳 xff0c 就直接上图了 1 VS2017下C 43 43 创建dll动态链接库 2 VS2017下C语言代码创建dll动态链接库 xff08 导出方式较于C 43 43 有点差别 xff0
  • Unity页面滑动Slider

    第一步 xff1a 创建三个Image xff08 或者多个都行 xff09 xff0c 并且设置Canvas的CanvasScaler脚本组件UI Scale Mode和Reference Resolution的值 设置Canvas 第二
  • linux的TCP连接数量真的不能超过65535个吗?

    原文链接 xff1a https blog csdn net daocaokafei article details 115410761 首先 xff0c 问题中描述的65535个连接指的是客户端连接数的限制 在tcp应用中 xff0c s
  • 关于网页实现串口或者TCP通讯的说明

    概述 最近经常有网页联系我 xff0c 反馈为什么他按我说的方法 xff0c 写的HTML代码 xff0c 无法在chrome网页中运行 这里我统一做一个解释 xff0c 我发现好多网页并没有理解我的意思 其实 xff0c 要实现在HTML
  • Intel RealSense(实感技术)概览

    Intel RealSense 实感技术 概览 1 Reply 版权声明 xff1a 本文系本站作者自己翻译整理 xff0c 欢迎转载 xff0c 但转载请以超链接形式注明文章来源 planckscale info 作者信息和本声明 xff
  • postman安装使用教程

    无聊的夜晚 xff0c 没有酒喝 xff0c 也没妹子陪 xff0c 闲来没事研究下postman xff0c 之前接触过有点 xff0c 还不错的工具 先从最基本的开始 postman是谷歌的一款非常好用的工具 xff0c 可用来做手工的

随机推荐

  • 接口测试 requests的身份认证方式

    requests提供多种身份认证方式 xff0c 包括基本身份认证 netrc 认证 摘要式身份认证 OAuth 1 认证 OAuth 2 与 OpenID 连接认证 自定义认证 这些认证方式的应用场景是什么呢 xff1f 身份认证的定义
  • 使用libcurl提交POST请求

    最近在学习libcurl xff0c 并利用它提交POST请求 xff0c 可是返回的响应总是无从验证该次POST请求是否成功提交了 1 先看下根据firebug提交的一次成功的请求 xff0c 这里以login我喜欢上的xiami为例 x
  • TX2安装Realsense -L515相机并在ros下 运行yolo 总结(3)

    前面提到可以移植yolov4到平台上 这里给出几个参考链接 xff0c 重在学习移植方法 xff1a 首先是大佬的 xff1a https span class token operator span span class token op
  • VS2013 配置使用微软开源sdk: C++ REST SDK 及运行官方的 JSON例子

    转至 https blog csdn net sdsabc2000 article details 53706632 utm medium 61 distribute pc relevant none task blog BlogComme
  • Python爬虫学习4:requests.post模拟登录豆瓣(包括获取验证码)

    1 在豆瓣登录网页尝试登录后打开开发者工具 xff0c 可以查找后去Headers和Form Data信息 2 实现代码 import requests import html5lib import re from bs4 import B
  • STM32 | STM32CubeMX基础之USART

    一 USART框图 功能引脚 TX xff1a 发送引脚 xff0c Usart1一般对应PA9 RX xff1a 接收引脚 Usart1一般对应PA10 SW RX xff1a 数据接收引脚 xff0c 只用于单线和智能卡模式 xff0c
  • Android CMake 编译传递宏定义参数

    在做 C 43 43 需求开发时经常会遇到用宏定义来区分不同版本 不同平台的功能 xff0c 如下所示 xff1a ifdef DEBUG 调用 debug 版本方法 elif RELEASE 调用 release 版本方法 endif 在
  • FreeRTOS高级篇2---FreeRTOS任务创建分析

    在FreeRTOS基础系列 FreeRTOS系列第10篇 FreeRTOS任务创建和删除 中介绍了任务创建API函数xTaskCreate xff0c 我们这里先回顾一下这个函数的声明 xff1a BaseType t xTaskCreat
  • 调用百度OCR API实现身份证文字识别

    调用百度OCR API实现身份证文字识别 通过调用百度OCR的两个接口 xff0c 实现身份证图像识别 首先要在百度云注册账号 xff0c 并创建应用 xff0c 以获取AppID xff0c API Key xff0c Secret Ke
  • 一个基于TCP/IP的小项目,实现广播消息的功能。(超详细版)

    1 结合现状 功能分析 该功能基于上个项目的改进 xff0c 主要是通过对服务器端代码的修改 xff0c 以及对客户端作少许修改 xff0c 实现开启多客户端时 xff0c 一个客户端发送消息 xff0c 达到对所有客户端广播的效果 可参考
  • 中断方式和查询方式的区别?

    中断方式 xff1a 是事件触发的 xff0c 换訖只要有事件产生都会进入中断 組取得最优运行 xff0c 因此响应更快 xff0c 及时 查询方式 xff1a 就是在主函数里面不停循环 xff0c 查询端C 状态 xff0c 明显其弊端在
  • [源码解读]position_estimator_inav_main解读(如何启动光流)

    阅读工具 xff1a source insight 技术交流 xff1a zinghd 64 163 com xff0c 757012902 64 qq com 源码版本 xff1a Firmware xff08 原生固件 xff09 如有
  • C++ 程序编译过程:从代码到程序

    在大学课堂上学习 C 43 43 时 xff0c 老师并没有过多涉猎 C 43 43 语法背后的知识 也就是说 xff0c 初学 C 43 43 时 xff0c 哪怕写出了代码 xff0c 我也并不知道从代码到程序的过程中究竟发生了什么 我
  • 05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向

    05 STM32F1 串行通信UART xff0c printf xff0c scanf重定向 在C 语言标准库中 xff0c fputc 函数是printf 函数内部的一个函数 xff0c 功能是将字符ch 写入到文件指针file所指向文
  • 指针作为函数参数 进行内存释放 并置NULL

    author xff1a 张继飞 写在前面 xff0c 前面写了代码封装free函数 xff0c 但是调用封装并退出后 xff0c 指针并不为NULL xff0c 导致接下来以此作为判断条件的时候就出现问题了 先前封装函数为void fre
  • R40 gpio 寄存器地址操作【原创】

    首先要学会看手册 xff0c 下面拿PC来做说明 3 18 3 Register List Module Name Base Address PIO 0x01C20800 Register Name Offset Description P
  • 关于basic认证和digest认证的初步理解

    1 basic认证是把用户和密码通过base64加密后发送给服务器进行验证 2 digest认证则是把服务器响应的401消息里面的特定的值和用户名以及密码结合起来进行不可逆的摘要算法运算得到一个值 xff0c 然后把用户名和这个摘要值发给服
  • STM32中USART的使用方法

    USART作为一种标准接口在应用中十分常见 本文着重分析其作为 UART的配置和应用方法 1 STM32固件库使用外围设备的主要思路 在 STM32中 xff0c 外围设备的配置思路比较固定 首先是使能相关的时钟 xff0c 一方面是设备本
  • 利用 __FILE__, __LINE__输出debug信息

    include lt stdio h gt define DEBUG ifdef DEBUG define DEBUG format printf 34 File 34 FILE 34 Line 05d 34 format 34 n 34
  • 认证、授权、鉴权和权限控制

    原文地址 https www cnblogs com badboyh2o p 11068779 html 如有侵权 xff0c 请联系删除 xff0c 谢谢 xff01 本文将对信息安全领域中认证 授权 鉴权和权限控制这四个概念给出相应的定