什么是OAuth2.0

前言

OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版

一.为什么使用OAuth2.0?

在前言我们介绍了OAuth2.0的作用,但是与其他登录方式相比我们为什么要选择OAuth2.0呢?

案例讲解:

在我们平常的生活中很多应用程序中会需要登录,但是在普通的一个App中我们常见的一般是用到账号密码登录,所以在每次进行登录操作时我们都需要进行输入账号密码,这时候肯定会有人说了,我登录一次就可以在我的设备上记住密码了,那么假设更换设备时是不是还是需要输入账号和密码,所以在频繁得使用账号密码登录的时候往往安全性就大大降低了,这时候OAuth2.0的作用就体现出来了,我们使用第三方账号进行登录时,只需要对当前App程序或者网站进行授权即可,并不需要频繁得使用账号密码进行登录,大大降低了我们账号密码泄露的风险,以我们的微信登录为例,微信拥有强大的身份验证机制的同时还可以对网站授权的权限进行管理,这不仅对我们权限的管理提供了更好的体验,也提高了我们用户信息的安全性

小结:OAuth 提供了更安全、便捷且用户友好的身份验证和授权机制,尤其适用于需要集成第三方服务的应用程序

 二.OAuth2.0授权机制

1.OAuth2.0角色

  1. 资源所有者(Resource Owner):通常是最终用户,他拥有资源(例如数据),需要授权第三方应用访问这些资源。

  2. 客户端(Client):即第三方应用程序,希望访问资源所有者的受保护资源。

  3. 授权服务器(Authorization Server):负责认证资源所有者并颁发访问令牌(Access Token)给客户端。

  4. 资源服务器(Resource Server):保护受控制的资源,只对有效的访问令牌持有者提供访问。

2.OAuth2.0授权流程 

 2.1授权码模式(Authorization Code Grant):

  1. 客户端重定向:客户端将用户重定向到授权服务器,请求授权,并提供自己的标识。

  2. 用户授权:用户在授权服务器上登录,并同意授权客户端。

  3. 授权码颁发:授权服务器生成一个授权码,并将其传递给客户端。

  4. 令牌请求:客户端使用授权码请求访问令牌(Access Token)。

  5. 访问令牌颁发:授权服务器验证授权码,如果有效,颁发访问令牌。

  6. 资源访问:客户端使用访问令牌访问资源服务器上的受保护资源。

令牌的特点:

  1. 令牌又时效性,一般是短期的,且不能修改,密码一般是长期有效的
  2. 令牌可以由颁发者撤销,且即时生效,密码一般可以不用修改而长期有效
  3. 令牌可以设定权限的范围,且使用者无法修改

在使用令牌时需要保证令牌的保密,令牌验证有效即可进入系统,不会再做其他的验证。

2.2 密码授权模式(Resource Owner Password Credentials Grant):

  1. 用户凭证:用户将用户名和密码直接提供给客户端。

  2. 令牌请求:客户端使用用户提供的凭证向授权服务器请求访问令牌。

  3. 访问令牌颁发:授权服务器验证用户凭证,如果有效,颁发访问令牌。

  4. 资源访问:客户端使用访问令牌访问资源服务器上的受保护资源。

2.3 客户端凭证模式(Client Credentials Grant):

  1. 客户端身份验证:客户端使用自己的身份凭证向授权服务器请求访问令牌。

  2. 访问令牌颁发:授权服务器验证客户端身份,如果有效,颁发访问令牌。

  3. 资源访问:客户端使用访问令牌访问资源服务器上的受保护资源。

2.4 简化(隐式)模式(Implicit Grant)

  1. 重定向到授权服务器:客户端直接将用户重定向到授权服务器,并请求授权,不同于授权码授权流程,不需要授权码交换步骤。

  2. 用户授权:用户在授权服务器上登录并同意授权请求。

  3. 直接颁发令牌:授权服务器直接向客户端返回访问令牌,不再颁发授权码。这个令牌直接由浏览器接收,并在重定向过程中传递给客户端。

  4. 访问资源:客户端使用获得的访问令牌去访问资源服务器上的受保护资源。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚信安慧AntDB数据库:引领数据库标准与性能规范,推动行业创新

近日,全国信息技术标准化技术委员会数据库标准工作组在一场重要的研讨会上召开,旨在交流并总结2023年上半年数据库标准编制情况。我国自主研发的AntDB数据库,作为国内最早的国产数据库产品之一,受邀参与了此次标准的研讨&#xff…

1-1,ZZ004 新型电力系统运行与维护赛题第一套

2023年全国职业院校技能大赛中职组 “新型电力系统运行与维护” 竞 赛 任 务 书 01 第一部分 竞赛须知 竞赛总分为100分,完成时间为7小时。 一、竞赛纪律要求 (一)正确使用设备与工具,严格遵守操作安全规范。 (二)竞赛过程中遇到任何问题,必须向现场裁判举牌示意,不…

geemap学习笔记033:可视化地理空间数据--Linked maps

前言 当有多种结果需要进行显示时,尤其是需要进行联动显示时,geemap中提供了一个linked_maps函数,可以进行对比显示,这个函数的作用就类似于ENVI中的view links功能。 1 导入库并显示地图 import ee import geemap ee.Initiali…

WEB 3D技术 three.js 通过分组顶点 给同一个物体设置多个材质

上文 WEB 3D技术 three.js 集合体 讲解三角形构建图形 顶点概念 顶点值重用 我们讲到 一个元素是由多个面组成的 那么 我们是不是可以一个物体用多个材质? 简单说 一个面用一种材质 我们还是在官网中搜索 geome 如下图选择 然后 找到 groups 顶点组 它能够将我们的…

Shell脚本应用(三)

一、使用for循环语句 1、for语句的结构 使用for 循环语句时,需要指定一个变量及可能的取值列表,针对每个不同的取值重复执行相同的命令序列.直到变量值用完退出循环。在这里."取值列表”称为for语句的执行条件,其中包括多个…

第七部分 二元关系

目录 主要内容 例1 笛卡儿积的性质 例2 注意&#xff1a;对于整除x整除y则&#xff0c;y/x为整数 例如 例3 关系的基本运算 例4 R{<1,2>,<1,3>,<2,4>,<4,3>} 例5 例6 关系运算的性质 例7 设A {a,b,c,d}, R {,,,},d>,c>,a>,b> 等价关系的…

UE和Android互相调用

ue和android互调 这两种方式都是在UE打包的Android工程之上进行的。 一、首先是UE打包Android&#xff0c;勾选下面这项 如果有多个场景需要添加场景 工程文件在这个路径下 然后可以通过Android Studio打开&#xff0c;选择gradle打开 先运行一下&#xff0c;看看是否可以发布…

第八部分 函数

定义 8.1 设 F 为二元关系 , 若 ∀ x ∈ dom F 都存在唯一的 y ∈ ran F 使 xFy 成立 , 则称 F 为 函数 对于函数 F , 如果有 xFy , 则记作 y F ( x ), 并称 y 为 F 在 x 的 值 . 例 F 1 {< x 1 , y 1 >,< x 2 , y 2 >,< x 3 , y 2 >…

Python实验:关灯游戏

文章目录 前言一、设计表二、关键代码三、运行结果小地图&#xff0c;容易难度&#xff1a;中地图&#xff0c;中等难度&#xff1a;大地图&#xff0c;困难难度&#xff1a; 四、完整代码链接总结 前言 这是一个Python实验作业&#xff0c;内容如下&#xff1a; 题目要求&am…

多维时序 | MATLAB实CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测

多维时序 | MATLAB实现CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测 目录 多维时序 | MATLAB实现CNN-BiGRU-Mutilhead-Attention卷积网络结合双向门控循环单元网络融合多头注意力机制多变量时间序列预测预测效果基本介…

NUAA-云计算-考试

19级期末 问题 答案: md格式 自己想办法看 # 随堂测验#### 一、请简述GFS 的系统架构和特点。**1. 系统架构**- GFS将整个系统节点分为三类角色&#xff1a;- Client&#xff08;客户端&#xff09;&#xff1a;Client是GFS提供给应用程序的访问接口&#xff0c;以库文件的…

SpringBoot2.x+mybatis plus3.x集成Activit7版本

文/朱季谦 在Activiti6版本当中&#xff0c;若要集成到Springboot里&#xff0c;需要写一些额外的配置类&#xff0c;我曾经在Activiti工作流框架学习笔记&#xff08;二&#xff09;之springboot2.0整合工作流Activiti6.0一文当中总结过相关配置过程&#xff0c;感兴趣的同学…