为什么 OAuth 2.0 是互联网繁荣的基石技术
|
admin
2025年4月13日 16:58
本文热度 168
|
就如同牵拉一根丝会引起整个蜘蛛网的伸展和重塑一样,一项新技术的到来会引起经济中的价格和生产网络在各行各业伸展、重塑。
OAuth 2.0 是互联网应用程序之间授权认证的行业标准协议。它的全称是OAuth 2.0 授权框架(The OAuth 2.0 Authorization Framework),该规范及其扩展由互联网工程任务组(IETF)的 OAuth 工作组内开发,对应协议文档为 RFC 6749。OAuth 2.0 协议定义了第三方应用程序如何安全地访问 HTTP 服务所开放的资源和功能,以实现应用程序之间在功能上的互联互通。现在大家都可以在微信/支付宝上交社保(以及完成其他政企事务),非常方便。传统上缴纳社保都应该去社保中心,至少需要在国家社保中心app/小程序上完成,为什么在微信和支付宝上也可以?微信和支付宝是民企,并不是国企事业单位,也不是国企控股子公司,所以他们的数据必然不是互通的。在不共享数据但又想要共享部分功能的情况下,这又是如何实现的呢?最直接想到的方法是:把我们社保中心的账户和密码直接交给微信和支付宝,让他们帮我们登录社保中心,然后把钱转给社保中心。这样做可以实现交社保这个目的,但是用户信息却面临巨大的不安全。理论上微信/支付宝这些平台拿到我们的账号和密码之后,除了交社保会不会偷偷做其他事情?如果账号和密码在他们平台泄露了怎么办?等等,这些疑问都说明显然这不是一个很好的解决问题的方式。OAuth 授权框架就是在这样的背景下诞生的。OAuth 1.0 的草案在 2007 年被提出,引入了授权码和访问令牌的机制,使得第三方应用程序可以在不获取用户凭据(即账号+密码)的情况下访问受保护资源,从而降低了用户凭据泄露的风险。简单说来就是:任何需要使用用户信息地方需要得到授权;任何访问用户信息的请求需要验证授权。继续上面交社保的例子(为简单说明问题暂时隐去实现细节):
- 小Q选择同意,社保中心则给小Q下发令牌(有一定时效性),小A把令牌交给微信
- 微信拿着令牌请求社保中心访问小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 协议的实现流程。
- 场景2:用户使用微信账号授权登录小红书(即第三方应用)
关于场景2的实现过程如下(即:小红书如何拿到用户在微信侧的登录授权):注:上图红色部分的6个步骤即 OAuth 2.0 协议的基本原理
那么:涉及用户、应用和平台之间的互联互通场景,OAuth 2.0 的实现原理基本一致,作为开发者接入这些平台需要实现的业务逻辑也基本趋同。下面是一些平台/应用公司的开放平台说明,可以看到他们的实现流程基本与上述过程无异:
Oracle软件
腾讯广告
微信开放平台
微信小程序
小米开放平台
- https://datatracker.ietf.org/doc/html/rfc6749
- https://netapinotes.com/eran-hammers-oauth-20-road-to-hell/
阅读原文:原文链接
该文章在 2025/4/14 10:25:51 编辑过