【OAuth】OAuth2.0四种授权模式

news2025/2/22 22:08:43

什么是OAuth?

开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务器提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供的某些特定信息,而非所有内容。

OAuth2.0是OAuth协议的下一个版本,但不向下兼容OAuth1.0。OAuth2.0关注客户端开发者的简易性,同时为Web应用、桌面应用、手机和智能设备提供专门的认证流程。

资源拥有者凭证许可(Resource Owner Password Credentials Grant)

资源拥有者的凭证,就是用户的凭据,就是用户名和密码。

在这里插入图片描述

  1. 小明(资源拥有者)访问小兔软件,录入用户名和密码,索要用户名和密码,就是资源拥有者凭据许可类型的特点。
  2. 携带用户名和密码请求访问令牌access_token值。
  3. 授权服务在验证用户名和密码之后,生成access_token的值并返回给第三方软件。
  4. 后面用户访问受保护资源的时候就附带着access_token值去访问。

客户端凭证许可(Client Credentials Grant)

在客户端凭证许可授权流程中,就不再需要资源拥有者这个角色了。当然,你也可以形象地理解为“资源拥有者被塞进了第三方软件中”或者“第三方软件就是资源拥有者”。这种场景下的授权,便是客户端凭证许可,第三方软件可以直接使用注册时的app_idapp_secret来换回访问令牌token的值。

A

  1. 第三方软件通过后端服务项授权服务发送请求,告诉授权服务要使用第三方软件凭据的方式去请求访问。
  2. 在验证app_id 和 app_secret的合法性之后,生成access_token的值并返回。
  3. 用户访问受保护资源的时候就附带着access_token值去访问

隐式许可(Implicit Grant)

如果使用的软件应用没有后端服务,就是在浏览器执行的,比如纯粹的JavaScript应用,应该如何使用OAuth 2.0 呢?

这种情况的授权流程就可以使用隐式许可流程,可以理解为第三方软件小兔直接嵌入浏览器中了。

因此,隐式许可授权流程的安全性会降低很多。再授权流程中,没有服务端的小兔软件相当于是嵌入到了浏览器中,访问浏览器的过程相当于接触了小兔软件的全部。

在这里插入图片描述

  1. 用户通过浏览器访问第三方软件。此时,第三方软件实际上是嵌入浏览器中执行的应用程序。
  2. 请求访问令牌access_token值。
  3. 生成access_token的值,通过前端通信返回给第三方软件。
  4. 用户访问受保护资源的时候就附带着access_token值去访问

授权码授权模式(Authorization code Grant)

在这里插入图片描述

  1. 用户访问页面
  2. 访问页面重定向到认证服务器(也可以叫做认证中心)
  3. 认证服务器向用户展示授权页面,等待用户授权
  4. 用户授权,认证服务器生成一个code和带上client_id发送给应用服务器
  5. 应用服务器拿到code,client_id去后台查询对应的client_secret
  6. 将code、client_id、client_secret传给认证服务器换取access_token和refresh_token
  7. 将access_token和refresh_token传给应用服务器
  8. 验证token,访问真正的资源页面。

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

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

相关文章

和为 K 的子数组

题目链接 和为 K 的子数组 题目描述 注意点 -1000 < nums[i] < 1000子数组是数组中元素的连续非空序列 解答思路 最初想到的思路是使用递归&#xff0c;遍历整个数组&#xff0c;当访问到idx位置处的元素时&#xff0c;可以根据idx - 1作为末尾元素的子数组和推出id…

SAP router的问题 dev_out 大文件 ,bat 关闭服务,删除文件,重启服务

跟老师确认后&#xff0c;dev_out可以删除 具体时先把sap-router停掉&#xff0c;删除dev_out 重启服务 问题&#xff1a; 1、问题是saprouter 不能停止&#xff0c;停止的话 外网都要用VPN&#xff0c;那就避开高峰时间 可以后半夜搞这个事情 2、如何定时执行 &#xff…

C++的高手之旅

要学习C并成为C大佬&#xff0c;以下是一些建议&#xff1a; 掌握C基础知识&#xff1a;C是一种面向对象的编程语言&#xff0c;它包含了C语言的大部分语法和特性。因此&#xff0c;学习C之前&#xff0c;建议先掌握C语言的基础知识&#xff0c;包括数据类型、控制流、指针、内…

详解cv2.copyMakeBorder函数【OpenCV图像边界填充Python版本】

文章目录 简介函数原型代码示例参考资料 简介 做深度学习图像数据集时&#xff0c;有时候需要调整一张图片的长和宽。如果直接使用cv2.resize函数会造成图像扭曲失真&#xff0c;因此我们可以采取填充图像短边的方法解决这个问题。cv2.copyMakeBorder函数提供了相关操作。本篇…

[Machine Learning][Part 5]监督学习——逻辑回归

之前文章中提到监督学习的应用可分为两类&#xff1a;线性回归和逻辑回归。和线性回归不同&#xff0c;逻辑回归输出只有0和1。对于一个逻辑回归任务&#xff0c;可以先使用线性回归来预测y。然而我们希望逻辑回归预测模型输出的是0和1&#xff0c;为了达到这个目的&#xff0c…

javascript将html中的dom元素转图片

javascript将html中的dom元素转图片 百度网盘下载html2canvas.min.js&#xff1a; 全部文件-》js插件-》 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>网页中的某个区域转图片</title></head><body styl…

精准突击!GitHub星标103k,2023年整理1658页JAVA秋招面试题

前言&#xff1a; 现在的互联网开发岗招聘&#xff0c;程序员面试背八股文已经成为了不可逆转的形式&#xff0c;其中一个Java岗几百人在投简历也已经成为了常态&#xff01;更何况一份面试题动辄七八百道&#xff0c;你吃透了&#xff0c;技术只要不是很差&#xff0c;面试怎…

易点易动采购管理模块:实现全生命周期管理,助力企业采购管理的高效运作

在现代企业中&#xff0c;采购管理是一个关键的业务环节。然而&#xff0c;许多企业面临着采购流程繁琐、信息不透明、成本控制困难等问题&#xff0c;导致采购效率低下和资源浪费。为了解决这些问题&#xff0c;易点易动采购管理模块应运而生。本文将详细介绍易点易动采购管理…

PIL Image格式转Tensor

Image格式是由PIL库读入的图片格式 from PIL import Image torch.Tensor是用于深度学习计算的张量格式 import torch 1 Image格式转Tensor 先转numpy 再转tensor torch.from_numpy() np.asarray() image torch.from_numpy(np.asarray(image)) 但是报错: max_pool2d” not im…

PostGIS导入shp文件报错:dbf file (.dbf) can not be opened.

一、报错 刚开始以为是SRID输入错误&#xff0c;反复尝试SRID的输入&#xff0c;还是报错&#xff01; 后来看到了这篇博客&#xff0c;解决了&#xff01;https://blog.csdn.net/Fama_Q/article/details/117381378 二、导致报错的原因 导入的shp文件路径太深&#xff0c;换…

Maven系列第6篇:生命周期和插件详解?

maven系列目标&#xff1a;从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第6篇。 整个maven系列的内容前后是有依赖的&#xff0c;如果之前没有接触过maven&#xff0c;建议从第一篇看起&#xff0c;本文尾部有maven完整系列的连接。 前面我们使用maven…

AI 生成的唯美头像也太好看了吧!附好说 AI 一秒出图技巧

在注重线上社交的当下&#xff0c;拥有不一样的头像是提高个人辨识度的好方法。比起网上找图和人 “撞头像”&#xff0c;如今免费的 AI 生图或许是更多人的 “最优解”。 这里我们参考好说社区大家的作品&#xff0c;提炼了一些 AI 作图要点分享给大家。我们的目标很简单&…

200、使用默认 Exchange 实现 P2P 消息 之 消息生产者(发送消息) 和 消息消费者(消费消息)

RabbitMQ 工作机制图&#xff1a; Connection&#xff1a; 代表客户端&#xff08;包括消息生产者和消费者&#xff09;与RabbitMQ之间的连接。 Channel&#xff1a; 连接内部的Channel。channel&#xff1a;通道 Exchange&#xff1a; 充当消息交换机的组件。 Queue&#xff…

Leetcode---365周赛

题目列表 2873. 有序三元组中的最大值 I 2874. 有序三元组中的最大值 II 2875. 无限数组的最短子数组 2876. 有向图访问计数 一、有序三元组中的最大值I 看一眼该题的数据范围&#xff0c;直接三层for循环暴力枚举&#xff0c;时间复杂度O(n^3)&#xff0c;代码如下 class…

Avalonia常用小控件Svg

1.项目下载地址&#xff1a;https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia&#xff0c;项目地址 https://github.com/irihitech/Semi.Avalonia 3.SVG库&#xff0c;Avalonia.Svg.Skia&#xff0c;项目地址 https://github.com/wieslawsoltes/Svg.Ski…

淘宝店铺商品评论数据采集,淘宝商品评论数据接口,淘宝API接口

采集淘宝店铺商品评论数据的方法如下&#xff1a; 进入主界面&#xff0c;选择"自定义任务"。将商品信息页的网址复制粘贴到网站输入框中&#xff0c;点击"保存设置"。将页面下拉到底部&#xff0c;点击"下一页"按钮&#xff0c;在右侧的操作提…

IDEA 中SpringBoot对Run/Debug Configurations配置 SpringBoot的多环境参数指定

例如下面中有多种环境&#xff1a;dev、test、prod 等配置参数&#xff0c;运行服务时候指定其中一种 VM options:内部配置参数 -Dspring.config.namebootstrap -Dspring.spring.profilesdev # 也可以指定端口 -Dserver.port8080 -Dspring.profiles.activetest -Ddebug 参考链…

校招C#面试题整理—Unity客户端

前言 博客已经1年多没有更新了&#xff0c;这一年主要在实习并准备秋招和春招&#xff0c;目前已经上岸Unity客户端岗位&#xff0c;现将去年校招遇到的一些面试题的事后整理分享出来。答案是笔者自己整理的不一定保证准确&#xff0c;欢迎大家在评论区指出。 Unity客户端岗的…

【小巧玲珑】文件太大,怎么办?分卷压缩技术了解下,这才是压缩技术

【小巧玲珑】文件太大&#xff0c;怎么办&#xff1f;分卷压缩技术了解下&#xff0c;这才是压缩技术 1、痛点2、场景重现2.1 jar包2.1 ZIP压缩 3、压缩步骤3.1 新建压缩文件3.2 压缩结果 4、解压步骤5、效果6、jar压缩算法 1、痛点 通过浏览器客户端访问云服务&#xff0c;文…

【VR】【Unity】白马VR课堂系列-VR开发核心基础03-项目准备-VR项目设置

【内容】 详细说明 在设置Camera Rig前,我们需要针对VR游戏做一些特别的Project设置。 点击Edit菜单,Project Settings,选中最下方的XR Plugin Management,在右边面板点击Install。 安装完成后,我们需要选中相应安卓平台下的Pico VR套件,关于怎么安装PICO VR插件,请参…