首页 > 其他分享 >什么是OAuth 2.0?OAuth 2.0的工作流程是什么?与OAuth 1.0有哪些区别?

什么是OAuth 2.0?OAuth 2.0的工作流程是什么?与OAuth 1.0有哪些区别?

时间:2024-09-11 21:49:41浏览次数:3  
标签:1.0 用户 应用程序 访问 OAuth 2.0

在浏览网页时,你肯定会遇到允许你使用社交媒体账户登录的网站。此功能一般是使用流行的OAuth 2.0框架构建的。OAuth 2.0是对OAuth 1.0的彻底重写,OAuth 2.0与OAuth 1.0或1.1不向后兼容。

通过QQ来登录知乎时提示用户授予知乎网相关权限

1. OAuth产生背景

为了更好的理解OAuth,我们假设有如下场景:有一个提供云冲印的网站,该网站可以将用户储存在百度网盘的照片冲印出来。用户为了使用该服务,必须让云冲印网站读取自己存储在百度网盘上的照片。

传统方式需要用户将自己的百度网盘用户名和密码告诉云冲印服务提供者,后者就可以读取用户的照片了。然而这种做法有着严重的缺点

  • 云冲印为了后续持续提供服务就会保存用户的密码,这样很不安全;
  • 云冲印拥有了获取用户存储在百度网盘所有资源的权力,用户无法限制云冲印获得授权的范围和有效期;
  • 用户只有修改密码,才能收回赋予云冲印的权力。但这样做又会使得其他所有获得用户授权的第三方应用程序全部访问失效;
  • 只要有一个第三方应用程序被攻破,就会导致用户密码泄露,最终导致此密码保护的所有数据泄露。

为了解决以上问题就引入本文的主角OAuth。

2. 什么是OAuth?

OAuth是一种常用的授权框架,使网站和web应用程序能够请求对另一个应用程序上的用户账户的有限访问。OAuth允许用户在不向请求的应用程序公开其登录凭据的情况下授予此访问权限。这意味着用户可以调整他们想要共享的数据,而不必将其账户的完全控制权交给第三方。

基本的OAuth过程有两种应用场景:

  • 集成需要从用户账户访问某些数据的第三方功能(设计之初的场景)。例如,应用程序可能会使用OAuth请求访问你的电子邮件联系人列表,以便建议与之联系的人员。
  • 提供第三方身份验证服务(广泛使用的场景),允许用户使用他们在不同网站上的账户登录。

3. OAuth 2.0是如何工作的?

OAuth 2.0 最初是作为一种在应用程序之间共享对特定数据的访问的方式而开发的。它通过定义三个不同方(即客户端应用程序、资源所有者和OAuth服务提供商)之间的一系列交互来工作。

  • 客户端应用程序:希望访问用户数据的网站或web应用程序。
  • 资源所有者:客户端应用程序要访问的数据所属的用户。
  • OAuth服务提供商:控制用户数据和访问数据的网站或应用程序。他们通过提供API与授权服务器和资源服务器交互来支持OAuth。

3.1. 工作流程

有许多不同的方式可以实现实际的OAuth流程,这些被称为OAuth“流”或“授予类型”,但总的来说,这两种类型都涉及以下阶段:

  • 客户端应用程序请求访问用户数据的一个子集,指定他们想要使用的授权类型以及他们想要的访问类型。

  • 系统会提示用户登录到OAuth服务,并明确表示同意请求的访问。

    典型场景

  • 客户端应用程序接收一个唯一的访问令牌,该令牌证明它拥有来自用户的访问请求数据的权限。

  • 客户端应用程序使用此访问令牌进行API调用,从资源服务器获取相关数据

OAuth 2.0工作流程

4. OAuth 2.0与OAuth 1.0的区别

OAuth 2.0 和 OAuth 1.0 都是授权框架,用于允许第三方应用访问用户资源,但它们在实现细节和设计理念上存在显著差异。OAuth 2.0不兼容OAuth 1.0,以下是 OAuth 2.0 与 OAuth 1.0 之间的主要区别。

4.1. 设计目的和用途

OAuth 1.0主要用于保护API资源, OAuth 2.0设计得更加通用,适用于各种类型的资源和应用,包括Web应用、移动应用和桌面应用。

4.2. 角色分离

OAuth 2.0允许API Server 和 Authorization Server分离,即API Server和Authorization Server可以独立部署,独立扩容。比如Google 的 OAuth 2.0 使用 “accounts.google.com” 作为Authorization Server,使用 “www.gooogleapis.com” 作为API Server。其中:

  • Authorization Server:可以只是负责获得用户的授权并向应用分配access token。授权服务器需要知道应用的client_id和client_secret;
  • API Server:只需要能够识别access token即可。

4.3. 认证流程

  • OAuth 1.0:使用签名、临时令牌(token)和请求令牌(request token)进行认证,过程较为复杂。
  • OAuth 2.0:使用访问令牌(access token)进行认证,流程相对简单。

4.4. 令牌类型

  • OAuth 1.0:主要使用临时令牌和访问令牌。
  • OAuth 2.0:除了访问令牌,还包括刷新令牌(refresh token),允许应用在访问令牌过期后重新获取。

4.5. 扩展性和灵活性

  • OAuth 1.0:扩展性有限,需要自定义参数和签名。
  • OAuth 2.0:提供了更多的扩展点,如资源服务器配置、客户端认证等。

4.6. 兼容性

  • OAuth 1.0:由于实现复杂,兼容性可能较差。
  • OAuth 2.0:设计得更加通用,兼容性较好。

总结来说,OAuth 2.0 相对于 OAuth 1.0 更加简单、灵活,OAuth 2.0 授权框架已成为提供对 Web API 安全访问的行业标准。OAuth 允许用户授予第三方应用程序访问其数据(如个人资料数据、照片和电子邮件)的权限,而不会损害安全性。

若想了解更多关于OAuth的细节,可以参阅如下官方文档:

5. 参考链接


标签:1.0,用户,应用程序,访问,OAuth,2.0
From: https://blog.csdn.net/u013129300/article/details/142071791

相关文章

  • Blazor开发框架Known-V2.0.10
    Known今天迎来了2.0的第11个版本,同时网站网址和板块也进行了一次升级改造,虽不完美,但一直在努力改变,之前一直在完善框架功能,忽略了文档的重要性,所以这次更新了文档和API。交流互动板块也在进行当中,尽请期待。官方网站:http://known.org.cn最新版本:V2.0.10下面是本次版本的更新......
  • VS2022 17.12.0 Preview2版本对Copilot的功能增强
    前提条件,使用最新版的17.12.0Preview2,并且有有效的CopilotAI订阅,那么可以体验这些新鲜好用的功能增强了CopilotAI对IEnumerableVisualizer的可编辑表达式功能我们可以通过AI实现一些复杂的条件筛查,并且可以即时验证结果是否符合预期,对于开发和调试提供了极大的便利性......
  • 基于Java Swing的简易人事信息管理系统设计与实现1.0
    目录概述数据库设计创建数据库创建表登录表 land员工信息表 empinfoJava代码实现连接数据库的类 Connect登录界面 Login功能对话框 MyDialog主界面 System运行效果截图:结论 概述在软件开发过程中,利用JavaSwing框架构建图形用户界面(GUI)是一种常见的做......
  • 计件工资系统V1.1.0
    小型计件工资管理系统,支持后台制定工价,核算工资。支持员工H5端报工,和查看工资情况。V1.1.0功能新增1增加企业微信、钉钉授权登录2增加订单功能。按订单每天领取任务3增加自定义项设置商品档案,需求订单,人员档案4修正锁定报工机制。即填写月度工资单锁定报工。防止汇总后修改......
  • 经销商订货管理系统V1.0.1
    订货管理系统适用于经销商订货、连锁加盟门店订货、批发贸易订货等。为连锁型品牌、商贸批发类或工厂企业客户提供支持业务模式的分成数字化营销方案。提供前后端无加密源码,独立部署,不受限制。V1.0.1增加差价分成1、增加差价分成2、增加再次订购3、其他优化......
  • CMS内容管理系统V2.0.9
    CMS内容管理系统,自定义内容模型、自定义单页、自定义表单、专题、统计报表、会员发布等,提供全部前后台无加密源代码和数据库私有化部署,UniAPP版本提供全部无加密UniAPP源码V2.0.9新增内容管理栏目联动功能修复api写入数据报错的问题修复展开折叠失效的BUG修复定时发布判断模式为后......
  • XYkeep健身小程序V2.1.0
    健身相关行业微信小程序,程序适用于健身房、瑜伽馆、游泳馆、篮球馆等健身培训场所。平台拥有课程售卖、课程预约、多门店管理、私教预约、教练端、会员卡办理、在线商城、分销模块(高级授权)、页面自定义装修等功能,为健身场馆提供智慧型运营解决方案,平台简单便捷,能有效提升场馆办公......
  • AJAX家政系统V1.0.1
    原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统,用户端、服务端(高级授权)、门店端(高级授权)各端相互依赖又相互独立,支持选择项目、选择服务人员、选择门店多种下单方式,支持上门服务和到店核销两种服务方式,支持自营和多商家联营(高级授权)两种运营模式,同时支持多城......
  • 沃德校友会管理系统V1.0.1
    校友会综合服务平台,即校友信息管理平台、活动管理平台、校友服务大厅、校友企业服务平台等,实现集中学校、学院、校友会于一体的基础服务平台的搭建,建设一个满足校友信息化长期发展的、可扩展的综合校友服务平台,提供全部无加密源代码,支持私有化部署。目前Uniapp仅支持编译微信小程序......
  • 【Azure Logic App】使用Event Hub 连接器配置 Active Directory OAuth 认证无法成功
    问题描述在上一次的博文中,我们提到了使用“ 【AzureLogicApp】使用EventHub连接器配置ActiveDirectoryOAuth认证无法成功连接到中国区EventHub ”无法成功连接到EventHub,报错“ 2024-08-17T08:40:30Z  [Error]  Anexceptionoccurredwhileretrievingprope......