【分布式技术专题】「授权认证体系」OAuth2.0协议的入门到精通系列之授权码模式

这里写目录标题

  • OAuth2.0是什么
    • OAuth2.0协议体系的Roles角色
      • OAuth定义了四个角色
      • 资源所有者
      • 资源服务器
      • 客户端
      • 授权服务器
    • 传统的客户机-服务器身份验证模型的问题
  • 协议流程
    • 认证授权
      • 授权码

OAuth2.0是什么

OAuth 2.0是用于授权的行业标准协议。OAuth 2.0专注于简化客户端开发人员,同时为web应用程序、桌面应用程序、移动电话和客厅设备提供特定的授权流程。该规范及其扩展正在IETF OAuth工作组内开发。OAuth 2.1是一项正在进行的工作,它将OAuth 2.0和许多常见扩展合并到一个新名称下。

OAuth 2.0授权框架允许第三方应用程序获取对HTTP服务的有限访问权限通过编排审批交互来代表资源所有者在资源所有者和HTTP服务之间,或者通过允许第三方应用程序以自己的名义获得访问权限。这规范取代并废弃了所描述的OAuth 1.0协议在RFC 5849。

OAuth2.0协议体系的Roles角色

OAuth定义了四个角色

OAuth2.0主要包含了四个角色类,如下图所示。
在这里插入图片描述

资源所有者

能够授予对受保护资源的访问权限的实体。当资源所有者是一个人时,它被称为终端用户。

资源服务器

承载受保护资源的服务器,能够接受并使用访问令牌响应受保护的资源请求。

客户端

发出受保护资源请求的应用程序资源所有者及其授权。“客户端”一词就是这样不暗示任何特定的实现特征(例如,应用程序是在服务器、桌面还是其他设备上执行设备)。

授权服务器

服务器向客户端发出访问令牌验证资源所有者并获取授权。授权服务器和资源服务器之间的交互超出了本规范的范围。授权服务器可以是与资源服务器相同的服务器,也可以是单独的实体。单个授权服务器可以发出访问令牌多个资源服务器。

传统的客户机-服务器身份验证模型的问题

在传统的客户机-服务器身份验证模型中请求访问受限的资源(受保护的资源),服务器通过使用资源所有者的服务器进行身份验证凭证。以便提供第三方应用程序访问受限制的资源,资源所有者与之共享其凭据第三方。这就产生了一些问题和限制。

  • 需要第三方应用程序来存储该资源供将来使用的所有者凭据,通常是一个密码以明文。
  • 服务器需要支持密码身份验证,尽管密码固有的安全弱点。
  • 第三方应用程序对资源的访问过于广泛所有者受保护的资源,使资源所有者没有任何的有限子集限制持续时间或访问的能力资源。
  • 资源所有者不能撤销对单个第三方的访问不得撤销所有第三方的访问权限,并且必须通过修改第三方密码。
  • 任何第三方应用程序的泄露都会导致的泄露终端用户的密码以及受其保护的所有数据密码。

协议流程

在这里插入图片描述
上图中所示的抽象OAuth 2.0流描述了这四个角色之间的交互包括以下步骤:

  1. 客户端向资源所有者请求授权。的可以直接向资源所有者发出授权请求(如图所示),或者最好是间接通过授权服务器作为中介。
  2. 客户端接收授权授权,这是表示资源所有者授权的凭证,使用本规范中定义的四种授权类型之一或使用扩展授权类型表示。授权授予类型取决于客户端请求授权所使用的方法和授权服务器支持的类型。
  3. 客户端通过向授权服务器进行身份验证并提供授权授予来请求访问令牌。
  4. 授权服务器对客户端进行身份验证并验证授权授权,如果授权授权有效,则发出访问令牌。
  5. 客户端向资源服务器请求受保护的资源,并通过提供访问令牌进行身份验证。
  6. 资源服务器验证访问令牌,如果有效,则为请求提供服务。

认证授权

授权授予是表示资源的凭据的所有者授权(访问其受保护的资源)客户端获取访问令牌。该规范定义了四个
授权类型——授权代码、隐式、资源所有者密码凭据和客户端凭据——以及可扩展性定义附加类型的机制。

授权码

授权码通过授权服务器获取作为客户端和资源所有者之间的中介。而不是直接从资源所有者,即客户端请求授权将资源所有者定向到授权服务器,它反过来指导将资源所有者带授权码返回给客户端。

将资源所有者引导回客户端之前授权码,授权服务器对资源所有者,获取授权。因为资源所有者仅使用授权服务器(即资源)进行身份验证所有者的凭证永远不会与客户端共享。

授权码提供了一些重要的安全好处,例如验证客户端的能力,以及将访问令牌直接传输到客户端而无需
通过资源所有者的用户代理传递它,并且可能将其公开给其他人,包括资源所有者。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/17656.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文介绍Linux EAS

能量感知调度(Energy Aware Scheduling,简称EAS)是目前Android手机中Linux线程调度器的基础功能,它使调度器能预测其决策对CPU能耗的影响。依靠CPU的能量模型(Energy Model,简称EM),…

疑难问题定位案例复盘(三)

今天我们分享一个数据库被异常改写的案例,通过该案例我们可以学习总结出常规的文件被改写问题定位思路。 问题现象 1、测试环境在进行特定压力测试时发现页面登陆异常,且调试日志多个进程持续打印“数据库打开失败”日志。 2、测试环境在进行多个压力测…

【机器学习】决策树(实战)

决策树(实战) 目录 一、准备工作(设置 jupyter notebook 中的字体大小样式等)二、树模型的可视化展示1、通过鸢尾花数据集构建一个决策树模型2、对决策树进行可视化展示的具体步骤3、概率估计 三、决策边界展示四、决策树的正则化…

PyCharm2023.1下载、安装、注册以及简单使用【全过程讲解】

在使用PyCharm IDE之前,请确保自己的计算机里面安装了Python解释器环境,若没有下载和安装可以看看我之前的文章>>>Python环境设置>>>或者还可以观看视频讲解。 注意:本文软件的配置方式仅供个人学习使用,如有侵…

02- 目标检测基础知识及优化思路汇总 (目标检测)

要点: 参考综述:深度学习目标检测最全综述 - 爱码网参考表达:https://www.cnblogs.com/xjxy/p/13588772.html 一 发展历程 分类网络是目标检测的基础,必须熟练掌握。 1.1 传统算法 V.J Detector 19年前,P. Viola 和 …

【java】Java 异常处理的十个建议

文章目录 前言一、尽量不要使用e.printStackTrace(),而是使用log打印。二、catch了异常,但是没有打印出具体的exception,无法更好定位问题三、不要用一个Exception捕捉所有可能的异常四、记得使用finally关闭流资源或者直接使用try-with-resource五、捕获…

全注解下的SpringIoc 续4-条件装配bean

Spring Boot默认启动时会加载bean,如果加载失败,则应用就会启动失败。但是部分场景下,我们希望某个bean只有满足一定的条件下,才允许Spring Boot加载,所以,这里就需要使用Conditional注解来协助我们达到这样…

Java面试题总结 | Java面试题总结10- Feign和设计模式模块(持续更新)

文章目录 Feign项目中如何进行通信Feign原理简述 设计模式spring用到的设计模式项目的场景中运用了哪些设计模式写单例的时候需要注意什么工厂模式的理解设计模式了解么工厂设计模式单例设计模式代理设计模式策略模式**模板方法模式**观察者模式**适配器模式**观察者模式**适配…

HNU-操作系统OS-实验Lab2

OS_Lab2_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf (学号 202108010XXX) 前言 实验一过后大家做出来了一个可以启动的系统,实验二主要涉及操作系统的物理内存管理。操作系统为了使用内存,还需高效地管理…

【算法与数据结构】顺序表

顺序表 数据结构 结构定义结构操作 顺序表:结构定义 一个数组,添加额外的几个属性:size, count等 size: 数组有多大 count: 数组中当前存储了多少元素 顺序表三部分: 一段连续的存储区:顺序表存储元素的地方整型…

利用css实现视差滚动和抖动效果

背景: 前端的设计效果,越来越炫酷,而这些炫酷的效果,利用css3的动画效果和js就可以实现,简单的代码就能实现非常炫酷的效果。 原理: 利用 js监控scrollTop的位置,通过 top定位图片的位置&#x…

HDOJ 1022 Train Problem Ⅰ 模拟栈操作

🍑 OJ专栏 🍑 HDOJ 1022 Train Problem Ⅰ 输入 3 123 321 3 123 312输出 Yes. in in in out out out FINISH No. FINISH🍑 思路 🍤 栈顶元素与目标元素不匹配就进栈,匹配就出栈 🍤 匹配完:y…

『python爬虫』10. 数据解析之xpath解析(保姆级图文)

目录 安装库xpath入门怎么快速得到xpath路径xpath节点的关系xpath方法小型实战总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 安装库 pip install lxmlxpath入门 怎么快速得到xpath路径 (相对路…

webpack plugin原理以及自定义plugin

通过插件我们可以拓展webpack,加入自定义的构建行为,使webpack可以执行更广泛的任务。 plugin工作原理: webpack工作就像是生产流水线,要通过一系列处理流程后才能将源文件转为输出结果,在不同阶段做不同的事&#x…

二、PEMFC基础之电化学与反应动力学

二、PEMFC基础之电化学与反应动力学 1.电流、电流密度2.反应速率常数3.交换电流密度4.电化学动力学奠基石B-V方程5.活化损失计算Tafel公式6.计算案例 1.电流、电流密度 由法拉第定律 i d Q d t n F d N d t i\frac{dQ}{dt}\frac{nFdN}{dt} idtdQ​dtnFdN​ j i A j\frac{…

【五一创作】ERP实施-委外业务-委外采购业务

委外业务主要有两种业务形态:委外采购和工序外协,委外采购主要是在MM模块中实现,工序外协主要由PP模块实现,工序外协中的采购订单创建和采购收货由MM模块实现。 委外采购概念 委外采购,有些企业也称为带料委外或者分包…

牛客刷SQL题Day5

SQL69 返回产品并且按照价格排序 select prod_name , prod_price from Products where prod_price between 3 and 6 select prod_name , prod_price from Products where 6>prod_price and prod_price >3 踩坑1: between......and.......包括边界。 踩坑2&am…

网卡丢失导致集群异常

假期晚上有个电话,说集群故障,应用无法连接,节点一可以ssh登录,节点二已无法正常登录了,在节点一上需要ssh 私网ip地址才可以登录节点二,虽不是重点客户,有问题还是需要积极处理。 首先看集群状…

Cartesi 2023 年 4 月回顾

查看你不想错过的更新 2023年5月1日,感谢Cartesi生态系统中所有了不起的构建者! 在一个激动人心的旅程之后,我们的首届全球线上黑客马拉松正式结束了!有超过200名注册建造者参加,见证了所有参与者展示的巨大才华和奉献…

有必要给孩子买台灯吗?分享四款高品质的护眼台灯

有必要使用护眼台灯,尤其是有近视现象的孩子们。 现在很多孩子小学就开始近视了,保护视力刻不容缓呀! 很多人不知道,其实劣质光线是最大的眼睛杀手 给孩子随便买便宜的台灯,看着一样能用,其实时间久了 对孩子眼睛的…