OAuth1和OAuth2授权协议
OAuth 1 授权协议
1. 概述
OAuth1 是 OAuth 标准的第一个正式版本,它通过 签名和令牌 的方式,实现用户授权第三方访问其资源的功能。在 OAuth1 中,安全性依赖于签名机制,无需传递用户密码。
2. 核心特性
- 使用 签名(Signature) 来验证请求,提供高安全性。
- 每次请求需要签名,因此客户端和服务器必须具备一致的签名计算能力。
- 授权流程较复杂,尤其是在客户端上实现。
3. 授权流程
OAuth1 的流程包括以下步骤:
-
获取请求令牌(Request Token):
- 客户端向授权服务器请求一个临时的请求令牌。
- 授权服务器返回
oauth_token和oauth_token_secret。
-
用户授权(User Authorization):
- 用户被引导到授权页面(通过
oauth_token标识)。 - 用户授权后,授权服务器返回验证代码(
oauth_verifier)。
- 用户被引导到授权页面(通过
-
获取访问令牌(Access Token):
- 客户端用
oauth_token和oauth_verifier请求访问令牌。 - 授权服务器返回
access_token和access_token_secret。
- 客户端用
-
资源访问(Resource Access):
- 客户端使用
access_token访问资源。
- 客户端使用
4. 安全机制
- 签名机制:
- 使用 HMAC-SHA1 或 RSA-SHA1 对每个请求进行签名。
- 签名保护了请求头、参数和正文,防止数据篡改。
- 加密密钥:
- 客户端必须持有私钥用于签名。
OAuth 2 授权协议
1. 概述
OAuth2 是 OAuth1 的升级版本,设计上更简化,更灵活。OAuth2 使用 访问令牌(Access Token) 进行授权,与 OAuth1 的签名机制相比,OAuth2 更容易实现。
2. 核心特性
- 令牌驱动:
- OAuth2 通过短时有效的访问令牌授权资源访问。
- 多种授权模式:
- 支持多种授权模式(授权码、密码、简化模式、客户端模式),适应不同场景。
- 易于实现:
- 无需签名机制,减少实现的复杂度。
3. 授权流程
OAuth2 的授权流程根据授权模式不同而有所变化,以下是常用的 授权码模式 流程:
-
用户授权(Authorization):
- 用户通过浏览器被重定向到授权页面。
- 授权服务器返回一个 授权码(Authorization Code)。
-
获取访问令牌(Access Token):
- 客户端用授权码向授权服务器请求访问令牌。
- 授权服务器返回 访问令牌 和(可选)刷新令牌(Refresh Token)。
-
资源访问(Resource Access):
- 客户端使用访问令牌访问资源。
- 如果令牌过期,可用刷新令牌获取新的访问令牌。
4. 安全机制
- 使用 HTTPS 保证传输安全。
- 作用域(Scope) 控制令牌的访问范围。
- 刷新令牌(Refresh Token) 实现长期授权。
OAuth1 和 OAuth2 的对比
| 特性 | OAuth1 | OAuth2 |
|---|---|---|
| 标准化时间 | 2010 年正式发布 | 2012 年发布 |
| 安全机制 | 签名机制(HMAC-SHA1 或 RSA-SHA1) | HTTPS 传输、短时令牌机制 |
| 授权模式 | 仅支持一种流程 | 支持多种授权模式(授权码、简化模式、密码模式等) |
| 实现复杂性 | 高,需要实现签名计算和验证 | 低,基于令牌的简单传输 |
| 适用场景 | 安全性较高、敏感资源的访问 | 灵活、适应多种场景 |
| 传输安全 | 签名保护请求数据,传输可用 HTTP 或 HTTPS | 强制 HTTPS 保护数据传输 |
| 客户端密钥 | 需要客户端持有密钥用于签名 | 可选择是否需要客户端密钥 |
| 刷新令牌 | 不支持 | 支持,用于延长访问会话 |
| 使用广泛性 | 主要用于早期的服务(如 Twitter、JIRA Server) | 现代服务广泛支持(如 Google、Facebook、JIRA Cloud) |
| 学习曲线 | 较陡,签名计算较复杂 | 平缓,易于理解和使用 |
优劣势对比
OAuth1 优势
- 安全性更高:
- 使用签名保护数据,即使在非 HTTPS 环境中也具有较好的安全性。
- 数据完整性:
- 签名机制验证数据未被篡改。
OAuth1 劣势
- 实现复杂:
- 签名计算过程复杂,增加了开发和调试难度。
- 灵活性不足:
- 不支持多种授权模式,适用范围较窄。
OAuth2 优势
- 简单易用:
- 基于访问令牌的机制,无需计算签名。
- 灵活性高:
- 提供多种授权模式,适应不同类型的客户端和场景。
- 现代化设计:
- 支持刷新令牌,减少用户重复授权。
OAuth2 劣势
- 依赖 HTTPS:
- OAuth2 的安全性高度依赖 HTTPS,需保证传输层安全。
- 相对安全性低:
- 如果访问令牌泄露,可能导致资源被滥用。
总结
| 适用场景 | 推荐协议 |
|---|---|
| 高度安全、复杂的系统 | OAuth1 |
| 现代化服务、多样化应用场景 | OAuth2 |
- OAuth1 更适合需要高安全性的数据访问,但实现复杂度较高。
- OAuth2 是现代服务的主流选择,具有更强的灵活性和简单性,广泛应用于各种 Web 和移动应用中。
相关文章:
OAuth1和OAuth2授权协议
OAuth 1 授权协议 1. 概述 OAuth1 是 OAuth 标准的第一个正式版本,它通过 签名和令牌 的方式,实现用户授权第三方访问其资源的功能。在 OAuth1 中,安全性依赖于签名机制,无需传递用户密码。 2. 核心特性 使用 签名(…...
AI学习(vscode+deepseek+cline)
1、网页生成不成功时,直接根据提示让模型替你解决问题 2、http://localhost:3000 拒绝链接时,cmd输入命令InetMgr,网站右键新建-配置你的网页代码物理地址,这里我还输入本机登录名及密码了,并把端口地址由默认80修改为…...
04-机器学习-网页数据抓取
网络爬取(Web Scraping)深度指南 1. 网络爬取全流程设计 一个完整的网络爬取项目通常包含以下步骤: 目标分析: 明确需求:需要哪些数据(如商品价格、评论、图片)?网站结构分析&…...
计网week1+2
计网 一.概念 1.什么是Internet 节点:主机及其运行的应用程序、路由器、交换机 边:通信链路,接入网链路主机连接到互联网的链路,光纤、网输电缆 协议:对等层的实体之间通信要遵守的标准,规定了语法、语义…...
重定向与缓冲区
4种重定向 我们有如下的代码: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <string.h>#define FILE_NAME "log.txt"int main() {close(1)…...
练习题 - Django 4.x File 文件上传使用示例和配置方法
在现代的 web 应用开发中,文件上传是一个常见的功能,无论是用户上传头像、上传文档,还是其他类型的文件,处理文件上传都是开发者必须掌握的技能之一。Django 作为一个流行的 Python web 框架,提供了便捷的文件上传功能和配置方法。学习如何在 Django 中实现文件上传,不仅…...
[VSCode] vscode下载安装及安装中文插件详解(附下载链接)
VSCode 是一款由微软开发且跨平台的免费源代码编辑器;该软件支持语法高亮、代码自动补全、代码重构、查看定义功能,并且内置了命令行工具和Git版本控制系统。 下载链接:https://pan.quark.cn/s/3a90aef4b645 提取码:NFy5 通过上面…...
JVM常见知识点
在《深入理解Java虚拟机》一书中,介绍了JVM的相关特性。 1、JVM的内存区域划分 在真实的操作系统中,对于地址空间进行了分区域的设计,由于JVM是仿照真实的机器进行设计的,那么也进行了分区域的设计。核心区域有四个,…...
深入探索 Vue 3 Markdown 编辑器:高级功能与实现
目录 1. 为什么选择 Markdown 编辑器?2. 选择合适的 Markdown 编辑器3. 安装与基本配置安装 配置 Markdown 编辑器代码说明 4. 高级功能实现4.1 实时预览与双向绑定4.2 插入图片和图像上传安装图像上传插件配置图像上传插件 4.3 数学公式支持安装 KaTeX配置 KaTeX 插…...
vscode无法格式化go代码的问题
CTRLshiftp 点击Go:Install/Update Tools 点击全选,OK!...
《Java程序设计》课程考核试卷
一、单项选择题(本大题共10个小题,每小题2分,共20分) 1.下列用来编译Java源文件为字节码文件的工具是( )。 A.java B.javadoc C.jar D.javac 2…...
one-hot (独热编码)
一、目的 假设我们现在需要对猫、 狗、 人这三个类别进行分类。 若以 0 代表猫, 以 1 代表狗, 以 2 代表人,会发现那么猫和狗之间距离为 1, 狗和人之间距离为 1, 而猫和人之间距离为 2。 假设真实标签是猫࿰…...
寒假1.23
题解 web:[极客大挑战 2019]Secret File(文件包含漏洞) 打开链接是一个普通的文字界面 查看一下源代码 发现一个链接,点进去看看 再点一次看看,没什么用 仔细看,有一个问题,当点击./action.ph…...
unity 粒子系统设置触发
1、勾选Triggers选项 2、将作为触发器的物体拉入队列当中,物体上必须挂载collider 3、将想要触发的方式(Inide、Outside、Enter和Exit)选择为”Callback“,其他默认为”Ignore“ 4、Collider Query Mode 设置为All:…...
【C++】类和对象(五)
1、初始化列表 作用:C提供了初始化列表语法,用来初始化属性。 语法: 构造函数():属性1(值1),属性2(值2)...{}示例: #include<i…...
超分辨率体积重建实现术前前列腺MRI和大病理切片组织病理学图像的3D配准
摘要: 磁共振成像(MRI)在前列腺癌诊断和治疗中的应用正在迅速增加。然而,在MRI上识别癌症的存在和范围仍然具有挑战性,导致即使是专家放射科医生在检测结果上也存在高度变异性。提高MRI上的癌症检测能力对于减少这种变异性并最大化MRI的临床效用至关重要。迄今为止,这种改…...
第13章 深入volatile关键字(Java高并发编程详解:多线程与系统设计)
1.并发编程的三个重要特性 并发编程有三个至关重要的特性,分别是原子性、有序性和可见性 1.1 原子性 所谓原子性是指在一次的操作或者多次操作中,要么所有的操作全部都得到了执行并 且不会受到任何因素的干扰而中断,要么所有的操作都不执行…...
[STM32 标准库]定时器输出PWM配置流程 PWM模式解析
前言: 本文内容基本来自江协,整理起来方便日后开发使用。MCU:STM32F103C8T6。 一、配置流程 1、开启GPIO,TIM的时钟 /*开启时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //开启TIM2的时钟RCC_APB2PeriphClockC…...
web3py+flask+ganache的智能合约教育平台
最近在学习web3的接口文档,使用web3pyflaskganache写了一个简易的智能合约教育平台,语言用的是python,ganche直接使用的本地区块链网络,用web3py进行交互。 代码逻辑不难,可以私信或者到我的闲鱼号夏沫mds获取我的代码…...
< OS 有关 > 阿里云:轻量应用服务器 的使用 :轻量化 阿里云 vpm 主机
原因: < OS 有关 > 阿里云:轻量应用服务器 的使用 :从新开始 配置 SSH 主机名 DNS Tailscale 更新OS安装包 最主要是 清除阿里云客户端这个性能杀手-CSDN博客 防止 I/O 祸害系统 操作: 查看进程&#x…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
6.9本日总结
一、英语 复习默写list11list18,订正07年第3篇阅读 二、数学 学习线代第一讲,写15讲课后题 三、408 学习计组第二章,写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语:复习l默写sit12list17&#…...
多模态大语言模型arxiv论文略读(110)
CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文标题:CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文作者:Hidehisa Arai, Keita Miwa, Kento Sasaki, Yu Yamaguchi, …...
【向量库】Weaviate概述与架构解析
文章目录 一、什么是weaviate二、High-Level Architecture1. Core Components2. Storage Layer3. 组件交互流程 三、核心组件1. API Layer2. Schema Management3. Vector Indexing3.1. 查询原理3.2. 左侧:Search Process(搜索流程)3.3. 右侧&…...
