什么是OAuth2.0

news2025/2/8 10:06:02

前言

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.coloradmin.cn/o/1336143.html

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

相关文章

【华为机试】2023年真题B卷(python)-分糖果

一、题目 题目描述: 小明从糖果盒中随意抓一把糖果,每次小明会取出一半的糖果分给同学们。 当糖果不能平均分配时,小明可以选择从糖果盒中(假设盒中糖果足够)取出一个糖果或放回一个糖果。 小明最少需要多少次&#xf…

虚拟机服务器中了lockbit2.0/3.0勒索病毒怎么处理,数据恢复应对步骤

网络技术的不断发展也为网络威胁带来了安全隐患,近期,对于许多大型企业来说,许多企业的虚拟机服务器系统遭到了lockbit2.0/3.0勒索病毒攻击,导致企业所有计算机系统瘫痪,无法正常工作,严重影响了企业的正常…

【Vue2+3入门到实战】(4)Vue基础之指令修饰符 、v-bind对样式增强的操作、v-model应用于其他表单元素 详细示例

目录 一、今日学习目标1.指令补充 二、指令修饰符1.什么是指令修饰符?2.按键修饰符3.v-model修饰符4.事件修饰符 三、v-bind对样式控制的增强-操作class1.语法:2.对象语法3.数组语法4.代码练习 四、京东秒杀-tab栏切换导航高亮1.需求:2.准备代…

Java 快速入门

简介 跨平台性:Java 最大的优势之一就是跨平台性,即一份 Java 程序可以在多平台上运行,而无需重写。 简单易学:Java 的语法和面向对象的开发方式非常简单易学。 安全性:Java 对于安全性的处理非常慎重,对…

Power BI 学习

补充 二维表: 二维表就是由行列组成的,知道行号列号就可以确定一个表中的数据,这是二维表的特点。在关系数据库中,存放在数据库中的数据的逻辑结构以二维表为主.在二维表中惟一标识元组的最小属性值称为该表的键或码。二维表中可能有若干个健&#xff…

分别使用OVP-UVP和OFP-UFP算法以及AFD检测算法实现反孤岛检测simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 OVP-UVP算法 4.2 OFP-UFP算法 4.3 AFD检测算法 5.完整工程文件 1.课题概述 分别使用OVP-UVP和OFP-UFP算法以及AFD检测算法实现反孤岛检测simulink建模与仿真。 2.系统仿真结果 3.核心程序与模型…

Java基础回顾——JDBC

文章目录 介绍使用JDBC事务JDBC BatchJDBC连接池 介绍 Java为关系数据库定义了一套标准的访问接口:JDBC(Java Database Connectivity) JDBC是Java程序访问数据库的标准接口 好处: 各数据库厂商使用相同的接口,Java…

基于SSM+Vue的教材信息管理系统(Java毕业设计)

点击咨询源码 大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的…

Python遥感影像深度学习指南(2)-在 PyTorch 中创建自定义数据集和加载器

在上一篇 文章中,我们Fast.ai 在卫星图像中检测云轮廓,检测物体轮廓被称为语义分割。虽然我们用几行代码就能达到 96% 的准确率,但该模型无法考虑数据集中提供的所有输入通道(红、绿、蓝和近红外)。问题在于,深度学习框架(如 Keras、Fast.ai 甚至 PyTorch)中的大多数语…

OAuth2授权码模式---详解

OAuth2简介 是一个业界标准的授权协议(authorization protocol),这里的授权是以委派代理(delegation)的方式。可以这样理解,OAuth 2.0提供一种协议交互框架,让某个应用能够以安全地方式获取到用…

利用html2Canvas将表格下载为html

给到我的需求是点击按钮时请求后端接口,根据后端返回的数据,生成表格,并将表格的内容直接下载为html,如下图。 平常做的下载都是后端返回二进制流,这次前端做下载那就必须把页面先画出来,因为下载下来的表格在页面上是不显示的&a…

知网查重链接(知网个人版)

该系统支持毕业设计(本科专科)、学位论文(研究生)、课程作业(本科专科)、课程作业(研究生)、职称评审、学术出版、学术研究、基础教育、政务公文、党团材料、新闻稿件、总结报告等各…

关于Python里xlwings库对Excel表格的操作(十九)

这篇小笔记主要记录如何【取消合并单元格】。 前面的小笔记已整理成目录,可点链接去目录寻找所需更方便。 【目录部分内容如下】【点击此处可进入目录】 (1)如何安装导入xlwings库; (2)如何在Wps下使用xlwi…

【Spring实战】05 CommandLineRunner

文章目录 1. 简介2. 用法1)单个 CommandLineRunner2)多个 CommandLineRunner 3. 优点4. 缺点总结 CommandLineRunner 是 Spring Boot 提供的一个接口,用于在 Spring Boot 应用程序启动后执行一些任务。通过实现 CommandLineRunner 接口&#…

IntelliJ IDEA [设置] 隐藏 .idea 等 .XXX 文件夹

文章目录 1. 问题描述2. 解决办法3. 最后效果总结 我们使用 IntelliJ IDEA 导入项目的时候,经常会看到一些 .XXX 的文件夹(例如:.idea,.mvn,.gradle 等)。其实这些文件夹和我们代码编写是无关的&#xff0c…

5G NR无线蜂窝系统的信道估计器设计

文章目录 DMRS简介DMRS类型DMRS频域密度 信道估计实验仿真实验参数实验实验结论 DMRS简介 DMRS类型 类型A:DMRS位于时隙的第二个或第三个OFDM符号,由14个OFDM符号组成,当数据占据大部分时隙时使用A型映射。 类型B:用在URLLC中&a…

JSON在Java中的使用

目录 第一章、快速了解JSON1.1)JSON是什么1.2)json的语法格式①键值对、字符串、数字、布尔值、数组、对象②嵌套的格式 1.3)为什么使用JSON 第二章、发送和接收JSON格式数据2.1)postman发送JSON格式数据2.2)Java后端接…

开源verilog模拟 iverilog verilator +gtkwave仿真及一点区别

开源的 iverilog verilator 和商业软件动不动几G几十G相比,体积小的几乎可以忽略不计。 两个都比较好用,各有优势。 iverilog兼容性好。 verilator速度快。 配上gtkwave 看波形,仿真工具基本就齐了。 说下基本用法 计数器 counter.v module…

根文件系统制作-移植

【1】概念 根文件系统:系统运行所必须依赖的一些文件 (比如脚本、库、配置文件...),本质就是目录和文件。根文件系统镜像:将根文件系统按照某种格式进行打包压缩后生成的单个文件 rootfs-----> ramdisk.img 文件系…

多行文本(多行字符串)中,如果每行文本前都有空格,各行文本前空格数最小为n,则删除每行文本前的n个空格。textwrap.dedent(多行字符串)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 多行文本(多行字符串)中, 如果每行文本前都有空格, 各行文本前空格数最小为n, 则删除每行文本前的n个空格。 textwrap.dedent(多行字符串) 请问以下代…