LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

为什么 OAuth 2.0 是互联网繁荣的基石技术

admin
2025年4月13日 16:58 本文热度 168

就如同牵拉一根丝会引起整个蜘蛛网的伸展和重塑一样,一项新技术的到来会引起经济中的价格和生产网络在各行各业伸展、重塑。

布莱恩·阿瑟《技术的本质》


1/ 什么是 OAuth 2.0
OAuth 2.0 是互联网应用程序之间授权认证的行业标准协议。它的全称是OAuth 2.0 授权框架(The OAuth 2.0 Authorization Framework,该规范及其扩展由互联网工程任务组(IETF)的 OAuth 工作组内开发,对应协议文档为 RFC 6749
OAuth 2.0 协议定义了第三方应用程序如何安全地访问 HTTP 服务所开放的资源和功能,以实现应用程序之间在功能上的互联互通。
2/ OAuth 2.0 解决了什么问题
举一个打工人都熟悉的例子交社保
现在大家都可以在微信/支付宝上交社保(以及完成其他政企事务),非常方便。传统上缴纳社保都应该去社保中心,至少需要在国家社保中心app/小程序上完成,为什么在微信和支付宝上也可以?微信和支付宝是民企,并不是国企事业单位,也不是国企控股子公司,所以他们的数据必然不是互通的。
在不共享数据但又想要共享部分功能的情况下,这又是如何实现的呢?
1)分享密码的方式
最直接想到的方法是:把我们社保中心的账户和密码直接交给微信和支付宝,让他们帮我们登录社保中心,然后把钱转给社保中心。这样做可以实现交社保这个目的,但是用户信息却面临巨大的不安全。理论上微信/支付宝这些平台拿到我们的账号和密码之后,除了交社保会不会偷偷做其他事情?如果账号和密码在他们平台泄露了怎么办?等等,这些疑问都说明显然这不是一个很好的解决问题的方式。
2)授权认证服务
OAuth 授权框架就是在这样的背景下诞生的。OAuth 1.0 的草案在 2007 年被提出,引入了授权码和访问令牌的机制,使得第三方应用程序可以在不获取用户凭据(即账号+密码)的情况下访问受保护资源,从而降低了用户凭据泄露的风险。简单说来就是:任何需要使用用户信息地方需要得到授权;任何访问用户信息的请求需要验证授权。
继续上面交社保例子(为简单说明问题暂时隐去实现细节):

  1. 用户小Q登录微信,点击交社保
  2. 微信请求国家社保中心,申请访问小Q的社保账户
  3. 社保中心询问小Q是否同意微信访问社保账户
  4. 小Q选择同意,社保中心则给小Q下发令牌(有一定时效性),小A把令牌交给微信
  5. 微信拿着令牌请求社保中心访问小Q的社保账户,缴纳社保

整个流程期间,微信不需要知晓用户小Q的账户密码。
交社保如此,酒店入住、征信授权、登录授权等衣食住行应用皆如此。
OAuth 2.0 在 OAuth 1.0 的基础上进行了显著的改进,2012 年成为提案标准,它解决了 OAuth 1.0 的复杂性(简化流程)、安全性(依赖 SSL/TLS 加密传输)问题,适应了 Web 应用、移动应用和桌面应用等多种场景,成为了一个更安全、更简单、更通用的授权框架,它是各个应用之间互联互通的事实标准。
:OAuth 2.0 的发展也不是一帆风顺的,有兴趣的读者可以读一读OAuth 1.0 的作者 Eran Hammer 那篇著名的文章《OAuth 2.0 :通往地狱之路》,底部引用处有链接。
3/ OAuth 2.0 为什么可以称之为基石技术
评价一样东西是不是重要的,可以想象一下如果没有它,事情会变成怎样的。
如果没有 OAuth 2.0 这类安全授权认证框架,各个互联网平台之间无法互通,至少无法安全的互通,没有互通,那便没有交易往来,便不会有繁荣。
如果说PC互联网时代,网络上的信息是一个巨大的数字花园,大家都可以从这个花园中生产和分享信息,但移动互联网的出现,数字花园逐渐被围栏花园所替代,每一个app都是独立的数据孤岛,每一家平台都是各自为战。如果围栏花园之间没有互联,如果没有开放平台,那互联网的发展不会繁荣至今。
4/ OAuth 2.0 框架的实现流程 - 以第三方登录场景说明
上面写了那么多,有点抽象,还是不够直接具体。考虑到交社保的例子在实现方面涉及很多非本篇讨论的金融知识,本段落以一个用户通过微信账号登陆第三方应用的例子,来简单说明 OAuth 2.0 协议的实现流程。
对比两个场景:

  • 场景1:用户输入用户名+密码登录微信
  • 场景2:用户使用微信账号授权登录小红书(即第三方应用)

一图胜千言万语,直接上图:
关于场景2的实现过程如下(即:小红书如何拿到用户在微信侧的登录授权):
注:上图红色部分的6个步骤即 OAuth 2.0 协议的基本原理
假设:

  • 把登录信息抽象为一切用户信息资源
  • 把第三方应用和微信抽象为一切平台与应用

那么:涉及用户、应用和平台之间的互联互通场景,OAuth 2.0 的实现原理基本一致,作为开发者接入这些平台需要实现的业务逻辑也基本趋同。
下面是一些平台/应用公司的开放平台说明,可以看到他们的实现流程基本与上述过程无异:

  • Oracle软件

    • https://docs.oracle.com/cd/E50612_01/doc.11122/oauth_guide/content/oauth_flows.html

  • 腾讯广告

    • https://developers.e.qq.com/v3.0/pages/authorization_and_authentication

  • 微信开放平台

    • https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html

  • 微信小程序

    • https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

  • 小米开放平台

    • https://dev.mi.com/console/doc/detail?pId=711


References

  • https://oauth.net/2/
  • https://datatracker.ietf.org/doc/html/rfc6749
  • https://netapinotes.com/eran-hammers-oauth-20-road-to-hell/


阅读原文:原文链接


该文章在 2025/4/14 10:25:51 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved