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

news2024/11/16 17:45:46

这里写目录标题

  • 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. 资源服务器验证访问令牌,如果有效,则为请求提供服务。

认证授权

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

授权码

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从【连接受限】看Android网络

从连接受限看Android网络 现象摸索从通知开始是Handler发的通知看看NetworkStateTrackerHandler NetworkMonitor做了什么NetworkMonitor是一个状态机CaptivePortalProbeResult从何而来连接受限的直接原因 嗅探是怎样进行的ProbeThread 回过头看看InternalHanderregisterNetwork…

GRE 隧道协议

1.GRE协议简介 GRE(General Routing Encapsulation ,通用路由封装)是对某些网络层协议(如IP和IPX)的数据报文进行封装,使这些被封装的报文能够在另一网络层协议(如IP)中传输。此外 GRE协议也可以作为VPN的第三层隧道协议连接两个…

ES6之迭代器

文章目录 前言迭代器1.原生具备Iterator接口的数据(可用for...of遍历)2.工作原理3.自定义遍历数据 总结 前言 迭代器(Iterator) for…of遍历 迭代器 迭代器是一种接口,为各种不同数据结构提供统一的访问机制。任何数…

c++ 11标准模板(STL) std::vector (八)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…

智慧工地烟火识别算法 opencv

智慧工地烟火识别系统应用pythonopencv深度学习算法模型技术分析前端视频信息&#xff0c;智慧工地烟火识别算法模型主动发现工地或者厂区现场区域内的烟雾和火灾苗头及时进行告警。OpenCV的全称是Open Source Computer Vision Library&#xff0c;是一个跨平台的计算机视觉处理…

前端三剑客 - HTML

前言 前面都是一些基础的铺垫&#xff0c;现在就正式进入到web开发环节了。 我们的目标就是通过学习 JavaEE初阶&#xff0c;搭建出一个网站出来。 一个网站分成两个部分&#xff1a; 前端&#xff08;客户端&#xff09; 后端&#xff08;服务器&#xff09; 通常这里的客户端…

ASP.NET Core Web API用户身份验证

一、JWT介绍 ASP.NET Core Web API用户身份验证的方法有很多&#xff0c;本文只介绍JWT方法。JWT实现了服务端无状态&#xff0c;在分布式服务、会话一致性、单点登录等方面凸显优势&#xff0c;不占用服务端资源。简单来说&#xff0c;JWT的验证过程如下所示&#xff1a; &a…

基于微服务架构的水果销售系统的设计与实现

访问【WRITE-BUG数字空间】_[内附完整源码和文档] 整体上为微服务架构&#xff0c;使用 SpringCloud 技术&#xff0c;每个独立的服务为一个单独的 SpringBoot 工程&#xff1b;数据库使用 MySQL 数据库&#xff1b;分布式缓存使用 Redis&#xff0c;消息队列使用 Kafka。包括…

基于matlab的相控阵系统仿真场景可视化

一、前言 此示例演示如何使用方案查看器可视化系统级仿真。 二、介绍 相控阵系统仿真通常包括许多移动物体。例如&#xff0c;阵列和目标都可以处于运动状态。此外&#xff0c;每个移动物体可能都有自己的方向&#xff0c;因此当模拟中出现更多玩家时&#xff0c;簿记变得越来越…

是人就能学会的Spring源码教学-Spring的简单使用

是人就能学会的Spring源码教学-Spring的简单使用 Spring的最简单入门使用第一步 创建项目第二步 配置项目第三步 启动项目 Spring的最简单入门使用 各位道友且跟我一道来学习Spring的最简单的入门使用&#xff0c;为了方便和简单&#xff0c;我使用了Spring Boot项目&#xff…

解决NixOS在Vmware中无法自适应显示缩放问题

解决NixOS在Vmware中无法自适应显示缩放问题 此方法同样适用于所有虚拟机&#xff0c;主要解决的是 虚拟机界面显示无法自适应操作虚拟机时&#xff0c;过渡动画卡顿看视频时&#xff0c;分辨率不高&#xff0c;伴随卡顿 起因 在为 NixOS安 装完 Vmware Tools 后&#xff0c;…

2023年最新水果DAW编曲软件fl studio21 macOS - 21.0.3.3036简体中文版免费下载支持苹果M1/M2处理器

一直梦想制作自己的音乐(无论是作为一名制作人还是艺术家)&#xff0c;你可能会想你出生在这个时代是你的幸运星。这个水果圈工作室和上一版之间的改进水平确实令人钦佩。这仅仅是FL Studio 21所提供的皮毛。你的音乐项目的选择真的会让你大吃一惊。你以前从未有过这样的多才多…

【LeetCode】《LeetCode 101》第七章:动态规划

文章目录 7.1 算法解释7.2 基本动态规划&#xff1a;一维70. 爬楼梯&#xff08;简单&#xff09;198.打家劫舍&#xff08;中等&#xff09;413. 等差数列划分&#xff08;中等&#xff09; 7.3 基本动态规划&#xff1a;二维64. 最小路径和&#xff08;中等&#xff09;542. …

【项目经理】论项目经理的自我修养

项目经理的非职权领导力 文章目录 项目经理的非职权领导力一、权利的类型二、构成权利的三要素三、沟通是实施影响力的重要手段3.1 沟通的主要类型3.2 沟通的内容和形式3.3 沟通的主要困难 四、综合沟通协调的技巧4.1 常见的负面反馈4.2 沟通技巧 五、论项目经理的自我修养5.1 …

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

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

如何将PDF文件转换为Excel表格?这两个方法方便实用!

如何将PDF文件转换为Excel表格&#xff1f; 很多人在编辑和处理表格内容时&#xff0c;需要将PDF文件转换为Excel表格&#xff0c;以更好地修改和排版。虽然PDF文件往往起到展示整体效果的作用&#xff0c;但是PDF转Excel也是办公中老生常谈的文档处理操作。如果您还不知道如何…

Java架构中VO、DTO、DO、BO的区别与联系(超详解)

VO、DTO、DO、BO的区别与联系 前言一、概念1、VO (View Object)2、DTO(Data Transfer Object)3、DO(Data Object)4、BO&#xff08;Business Object&#xff09; 二、为什么会存在Vo&#xff1f;三、总结 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识…

深入理解 node 中的文件流

为什么要使用文件流 想象这样一个场景&#xff0c;我要处理一个 10G 的文件&#xff0c;但我的内存大小只有 2G&#xff0c;该怎么办&#xff1f; 我们可以分 5 次读取文件&#xff0c;每次只读取 2G 的数据&#xff0c;这样就可以解决这个问题&#xff0c;那么这个分段读取的过…

HTML基本标签介绍

HTML的基本认识&#xff01; 文章目录 HTML基本标签介绍1. HTML是什么&#xff1f;1.1 HTML代码的样子1.2 HTML文件的展示1.3 VSCode配置 2. HTML常用标签介绍2.1 注释标签2.2 标题标签2.3 段落标签2.4 换行标签2.5 格式化标签2.6 图片标签2.7 超链接标签2.8 表格标签2.9 列表标…

Windows下 ffmpeg 的 “Protocol not found“ 的解决

文章目录 1. 问题描述2. 排查方法记录2.1 检查代码中编码器是否安装2.2 确定ffmpeg版本号2.3 打印编译参数2.4 查看运行中调用dll 1. 问题描述 调用ffmpeg库中&#xff0c;如果使用 avformat_open_input 打开返回 -1330794744,使用 av_strerror char buf[1024]{0};int result …