当前位置: 首页 > news >正文

认证与授权

在开发或者管理一个应用程序的时候,我们往往会看到两个名词——认证和授权,在英文中这两个词更为相近 —— authentication 和 authorization。尽管这两个术语经常出现在相同的上下文中,但是两者在概念上是非常不同的。

认证意味着确认你自己的身份,而授权意味着授予对系统的访问权限。简单来说,认证是验证你的身份的过程,而授权是验证你有权访问的过程。

什么是认证

认证是关于验证你的凭据,如用户名/邮箱和密码,以验证访问者的身份。系统确定你是否就是你所说的使用凭据。在公共和专用网络中,系统通过登录密码验证用户身份。身份认证通常通过用户名和密码完成,有时与认证可以不仅仅通过密码的形式,也可以通过手机验证码或者生物特征等其他因素。

在某些应用系统中,为了追求更高的安全性,往往会要求多种认证因素叠加使用,这就是我们经常说的多因素认证。

常见的认证方式

  • 用户名密码认证
  • 手机和短信验证码认证
  • 邮箱和邮件验证码认证
  • 人脸识别/指纹识别的生物因素认证
  • OTP 认证
  • Radius 网络认证

什么是授权

授权发生在系统完成身份认证之后,最终会授予你访问资源(如信息,文件,数据库,资金,位置,几乎任何内容)的完全权限。简单来说,授权决定了你访问系统的能力以及达到的程度。

授权是确定经过身份验证的用户是否可以访问特定资源的过程。它验证你是否有权授予你访问信息,数据库,文件等资源的权限。授权通常在验证后确认你的权限。简单来说,就像给予某人官方许可做某事或任何事情。

例如,验证和确认组织中的邮箱和密码的过程称为认证,但确定哪个员工可以访问哪个楼层称为授权。假设你正在旅行而且即将登机。当你在登记前出示机票和一些身份证明时,你会收到一张登机牌,证明机场管理局已对你的身份进行了身份验证。但那不是它。乘务员必须授权你登上你应该乘坐的航班,让你可以进入飞机内部及其资源。

认证与授权的对比

认证授权
验证确认身份以授予对系统的访问权限。授权确定你是否有权访问资源。
这是验证用户凭据以获得用户访问权限的过程这是验证是否允许访问的过程。
它决定用户是否是他声称的用户它确定用户可以访问和不访问的内容。
身份验证通常需要用户名和密码。授权所需的身份验证因素可能有所不同,具体取决于安全级别。
身份验证是授权的第一步,因此始终是第一步。授权在成功验证后完成。
例如,特定大学的学生在访问大学官方网站的学生链接之前需要进行身份验证。这称为身份验证。例如,授权确定成功验证后学生有权在大学网站上访问哪些信息。

以下转自http://blog.csdn.net/cruise_h/article/details/50749652

以前一直分不清 authentication 和 authorization,其实很简单,举个例子来说:

你要登机,你需要出示你的 passport 和 ticket,passport 是为了证明你张三确实是你张三,这就是 authentication;而机票是为了证明你张三确实买了票可以上飞机,这就是 authorization。

在 computer science 领域再举个例子:

你要登陆论坛,输入用户名张三,密码1234,密码正确,证明你张三确实是张三,这就是 authentication;再一check用户张三是个版主,所以有权限加精删别人帖,这就是 authorization。

----------------------------------------------------------------------------------------------------------

>>分割线

----------------------------------------------------------------------------------------------------------

Authentication 鉴别

判断使用者是不是他所宣称的那个人,
如帐号密码机制,是基于帐号密码为 只有本人跟系统本身才知道的shared secret,所以只要可以正确输入密码,系统就可判断使用者为这个帐号所代表的人物。
主要回答这些问题: 
  • 用户是谁?
  • 用户真的是他/她代表自己的那个人吗?

Authorization 授权

判断当前使用者 所拥有对系统资源存取的权限(等级),例如会员登入后拥有读写资源的权力,而访客只有读的权力。
主要回答这些问题: 
  • 用户 X 是否有权访问资源 R?
  • 用户 X 是否被授权执行操作 P?
  • 用户 X 是否有权对资源 R 执行操作 P?

Identification 识别

判断使用者是谁,Identification必须是 独一无二的,才能正确的分辨出每个人。

主要回答这些问题: 

  • 用户是谁?

上面三者的关系: 

系统要知道某个使用者对系统资源的存取权力,包含三个部分
  1. 使用者告诉系统他是谁(Identification 机制)。例:输入ID
  2. 系统判断使用者是否真的是他宣称的那个人(Authentication 机制)。例:输入Password
  3. 系统根据该帐号所拥有的权限验证该使用者(Auorization 机制)。例:系统判断该使用者为会员,给予读及写的权利

相关文章:

  • Linux常用命令英文全称与中文解释
  • Linux相关概念
  • 指针与句柄的区别
  • 持续集成是什么
  • PaddlePaddle-飞桨
  • anaconda
  • CUDA详解
  • Windows系统查看CUDA版本号
  • GPU,CUDA,cuDNN的理解
  • whl是什么
  • PaddleOCR
  • CPU指令集介绍
  • BLAS、OpenBLAS、ATLAS、MKL
  • 深度学习训练和推理之间有什么差异
  • PaddleOCR安装步骤
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • ➹使用webpack配置多页面应用(MPA)
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • AngularJS指令开发(1)——参数详解
  • canvas 高仿 Apple Watch 表盘
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • ES6简单总结(搭配简单的讲解和小案例)
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java深入 - 深入理解Java集合
  • js作用域和this的理解
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • Python 基础起步 (十) 什么叫函数?
  • Python_网络编程
  • Redis字符串类型内部编码剖析
  • 分享几个不错的工具
  • 高程读书笔记 第六章 面向对象程序设计
  • 机器学习 vs. 深度学习
  • 将 Measurements 和 Units 应用到物理学
  • 前端面试题总结
  • 算法---两个栈实现一个队列
  • 微服务入门【系列视频课程】
  • 一文看透浏览器架构
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 怎么将电脑中的声音录制成WAV格式
  • linux 淘宝开源监控工具tsar
  • Mac 上flink的安装与启动
  • MPAndroidChart 教程:Y轴 YAxis
  • ​2020 年大前端技术趋势解读
  • # 透过事物看本质的能力怎么培养?
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (3)(3.5) 遥测无线电区域条例
  • (二)换源+apt-get基础配置+搜狗拼音
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四)linux文件内容查看
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)