OAuth2授权机制介绍指南

news2024/11/18 14:43:00

目录

一、什么是OAuth2?

二、OAuth2中有哪些角色?

三、OAuth2的授权流程?

四、OAuth2令牌的特点?

五、OAuth2有哪些授权方式?

        5.1 授权码

        5.2 隐藏方式

        5.3 密码方式

        5.4 凭证方式


一、什么是OAuth2?

OAuth2就是当前使用非常广泛的一种授权机制,用于授权第三方应用获取用户的数据。 

例如:

就比如我们平常用的京东,我们可以选择其他方式来进行登录,这样就是用到了第三方登录。

其中的流程用官方的话来讲的话就是:

OAuth 引入了一个授权层,用来分离两种不同的角色:客户端和资源所有者。......资源所有者同意

以后,资源服务器可以向客户端颁发令牌。客户端通过令牌,去请求数据。
第一次接触OAuth2的可能有点看不懂,没关系,后面我会逐个举例解释!

二、OAuth2中有哪些角色?

上面我们提到了一些名词,客户端、资源所有者...等等,其实这些就是OAuth2中的角色,这里我们就用大白话解释一下它们分别代表着什么?

① 资源所有者

能够授予被保护资源的访问权限的实体,就相当于我们使用微信登录、微信的账号所有人;

② 资源服务器

存储有受保护资源的服务器, 能够接受并验证访问令牌,并响应受保护资源的访问请求,这个就相当于第三方登录平台,比如微信、它的服务器;

③ 客户

需要被授权,然后再访问受保护资源的实体。客户这个术语,并不是特指应用程序,服务器,计算机等,在我们的日常例子中就相当于我们要登录的京东;

④ 授权服务器

验证资源所有者并获取授权成功后,向客户发出访问令牌;

三、OAuth2的授权流程?

这个授权流程我也就直接用我们生活中基本都经历过的实例来说明:

例子:使用第三方平台授权登录京东;

就如下图,Client相当于京东,ResourceOwner相当于我们自己(资源所有者),AuthorizationServer相当于授权服务器,ResourceServer相当于微信(资源服务器),京东发出授权请求,我们点击同意,然后京东就告诉授权服务器,授权服务器就会发送令牌给京东,京东拿着令牌就向微信请求数据,微信得到令牌返回数据;


四、OAuth2令牌的特点?

使用令牌方式的优点:
令牌有时效性,一般是短期的,且不能修改,密码一般是长期有效的 令牌可以由颁发者撤销,且即时生效,密码一般可以不用修改而长期有效
令牌可以设定权限的范围,且使用者无法修改
在使用令牌时需要保证令牌的保密,令牌验证有效即可进入系统,不会再做其他的验证。

五、OAuth2有哪些授权方式?

由于互联网有多种场景, OAuth2 定义了四种获取令牌的方式,可以选择合适与自己的方式
授权码( authorization-code
隐藏式( implicit
密码式( password ):
客户端凭证( client credentials)

        5.1 授权码

第三方应用先申请一个授权码,然后再用该码获取令牌。
最常见的用法,安全性高,适合 web 应用。 授权码通过前端传送,令牌则是储存在后端,而且所有与资
源服务器的通信都在后端完成。这样的前后端分离,可以避免令牌泄漏。
流程如下:
1. 资源服务器提供一个链接,用户点击后就会跳转到认证服务器,授权用户数据给资源服务器使用,
资源服务器提供的连接的示例:
response_type=code ,表示使用授权码方式
client_id=CLIENT_ID ,请求者的身份 ID
https : //b.com/oauth/authorize?
response_type = code &
client_id = CLIENT_ID &
redirect_uri = CALLBACK_URL &
scope = read
redirect_uri=CALLBACK_URL, 认证服务器接受请求之后的调转连接,可以根据这个连接将生成
code 发送给资源服务器
scope=read ,授权范围为只读
1. 页面跳转后,用户登录认证服务器,同意或拒绝资源服务器的授权请求,认证服务器根据上一步的
redirect_uri 地址,将生成的授权码返回给资源服务器。
code 返回的认证码
1. 客户拿到认证码之后,向认证服务器发给请求,申请令牌
client_id 资源服务器的身份 ID
client_secret=CLIENT_SECRET 安全参数,只能在后端发请求
grant_type=authorization_code 表示授权的方式为授权码
code=AUTHORIZATION_CODE 用来获取令牌的授权码
redirect_uri=CALLBACK_URL 令牌生成后的颁发地址
1. 认证服务器对授权码进行认证,通过后颁发令牌,
6.2 隐藏方式
隐藏方式合适的场景:
web 应用为纯前端应用没有后端,此时必须将令牌放在前端保存,省略了申请授权码的步骤。
https : //resouce.com/callback_url?code=AUTHORIZATION_CODE
https : //b.com/oauth/token?
client_id = CLIENT_ID &
client_secret = CLIENT_SECRET &
grant_type = authorization_code &
code = AUTHORIZATION_CODE &
redirect_uri = CALLBACK_URL
{
"access_token" : 访问令牌 ,
"token_type" : "bearer" ,
"expires_in" : 过期时间 ,
"refresh_token" : "REFRESH_TOKEN" ,
"scope" : "read" ,
"uid" : 用户 ID ,
"info" :{ ... }
}

        5.2 隐藏方式

        5.3 密码方式

        5.4 凭证方式

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

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

相关文章

PowerCLi 批量多esxi主机创建登陆用户

官网PowerCLI参数配置参考 New-VMHostAccount 创建用户参考New-VIRole 创建权限组参考Get-VIPrivilege 查询所有角色层配置信息参考创建esxi登陆用户一键脚本,目前只能单

2023年软考报哪门比较好?

2023年软考报名还有一个月左右就会启动了,大家有想好报考哪门吗?不妨看看下文,让你的思路更加清晰。 软考科目汇总: (1)高级资格:网络规划设计师、系统规划与管理师、系统架构设计师、信息系统项目管理师、系统分析师…

磨金石教育技能干货分享|年味摄影作品选登:你的春节怎么过的

要问年味是什么?味,是一种感觉,年味就是:除夕夜里,红灯笼挂满街道,各种年货摆满长街。各种美食充满餐桌,亲人团聚,欢笑一堂。这种让人放松、快乐的感觉就是过年特有的味道。最近由长…

MySQL(一)

性能监控 使用show profile查询剖析工具,可以指定具体的type type all:显示所有性能信息 show profile all for query n block io:显示块io操作的次数 show profile block io for query n context switches:显示上下文切换次数&a…

【算法基础】整数二分查找法

👦个人主页:Weraphael ✍🏻作者简介:目前是C语言学习者 ✈️专栏:【C/C】算法 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞…

[golang Web开发] 1.golang web开发简介以及web服务器的搭建以及http协议简介

一.web开发简介 1.简介 Web应用在我们的生活中无处不在,看看我们日常使用的各个应用程序,它们要么是 Web应用,要么是移动 App 这类 web应用的变种,无论哪一种编程语言,只要它能够开发出与人类交互的软件,它就必然会支持 Web应用开发,对一门崭…

高精度压缩Transformer,NNI剪枝一站式指南

无论在学术界还是产业界,今年人工智能大模型都是爆款话题。但面对这些动不动就数十亿级别参数的模型,使用传统方法微调,宛如水中捞月、海底捞针。作为微软亚洲研究院为科研人员和算法工程师量身定制的一站式 AutoML(自动机器学习&…

Vertical-align属性值区分

先简单看一下官方文档上的Vertical-align这些属性值的描述,虽然只有简单的描述,但其实描述的很清楚,但有时只看文字并不能很好的理解其含义。 下面结合代码图说明: 首先,我建造了一个背景颜色为绿色的div盒子&#xf…

9、app稳定性测试之monkey工具使用

简介 方法:利用Monkey工具,选择某些场景做持续反复操作,以衡量系统的稳定性 工具: monkey 友盟埋点 日志分析工具 系统监控工具GT 场景: * 随机测试 可以用monkey模拟 * 多个运行中app切换测试; * 各种事件打扰,如插拔数据线、电话打扰、收…

软件测试之冒烟测试须知

冒烟测试的介入时间? 开发编码完成,自测通过以后为最佳介入时间。 如果开发无自测直接提交,一般冒烟测试通过率会很低【除非你遇到的是大内高手】 什么需求需要做冒烟测试? 理论上,所有的需求均可以做冒烟测试。 冒烟测试需要做几轮? 一轮…

分享会上狂吹MySQL的4大索引结构,没想到大家的鉴赏能力如此的~~~~

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构 上实现高…

企业需要做哪些准备,来落地商业智能 BI 系统

随着新一代信息化、数字化技术的应用,引发了新一轮的科技革命,现代化社会和数字化的联系越来越紧密,数据也变成继土地、劳动力、资本、技术之后的第五大生产要素,这一切都表明世界已经找准未来方向,前沿科技也与落地并…

中国电子学会2022年09月份青少年软件编程Scratch图形化等级考试试卷四级真题(含答案)

2022-09 Scratch四级真题 分数:100 题数:29 测试时长:60min 一、单选题(共15题,共30分) 1.运行下列程序,说法正确的是?(D) A.列表中的数字全部小于11 B.列表的长度为10 C.变量…

项目管理:甘特图的作用是什么?

在我们工作和学习中,有一个提高工作效率,简单又实用的神器——甘特图。 甘特图以表格进度条,展示任务列表和时间表示出项目的持续时间及进度。并根据实际执行时间和工期对计划进行动态调整的进度控制方法。 甘特图将各个任务的完成情况在时间…

论Unity_InputSystem如何使用(三)

PlayerInput InputSystem提供专门用来处理玩家输入的组件,通过关联配置输入文件,可以不需要编写设备输入的相关逻辑,专注于编写输入触发后的逻辑。 如何添加 创建一个Cube,点击Add Component,搜索Player Input即可添…

【C语言 数据机构】时间复杂度与空间复杂度

文章目录时间复杂度空间复杂度时间复杂度 判断一个算法所编程序运行时间的多少,并不是将程序编写出来,通过在计算机上运行所消耗的时间来度量。原因很简单,一方面,解决一个问题的算法可能有很多种,一一实现的工作量无疑…

cocoapods安装失败到成功的记录贴

mac系统版本:10.15.5 (19F101) 最优解安装顺序:Xcode > HomeBrew > RVM > Ruby > CocoaPods 1. 安装方案1(百度常用法) 1.1 更新gems和换国产源: RubyGems 镜像 - Ruby Chinahttps://gems.ruby-china.co…

使用VBA获取电脑MAC地址

实例需求:如何使用VBA读取电脑的MAC地址,包含有线网卡和无线网卡。 这个需求看似有些无厘头,为嘛要用VBA来读取MAC地址,存在的就是合理的。例如使用MAC地址和其他硬件信息可以生成电脑的唯一识别号,用于软件注册和实现…

Vue Node

Vue配置代理服务器 一、运行后台服务 启动后台Node服务器,运行后台程序,学习资料node代码,服务5000开启 FeHelper - Awesome 二、Ajax请求 xhr 【不常用】Windows 内部 new XMLHttpRequest()xhr.open() xhr.send()内部公司封装xhr开源封装…

力扣 2325. 解密消息

题目 给你字符串 key 和 message ,分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下: 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐,形成对照表。 按照对照表 替换…