OAuth 2.0 的一个简朴表明,一看就懂

程序员 2024-9-16 19:56:13 76 0 来自 中国
【转载】原文链接
OAuth 2.0

OAuth 2.0 是现在最盛行的授权机制,用来授权第三方应用,获取用户数据。
这个标准比力抽象,使用了很多术语,初学者不轻易明白。实在提及来并不复杂,下面我就通过一个简朴的类比,资助各人轻松明白,OAuth 2.0 到底是什么。
一、快递员标题

我住在一个大型的住民小区,小区有门禁体系,进入的时间必要输入暗码。
我经常网购和外卖,天天都有快递员来送货。我必须找到一个办法,让快递员通过门禁体系,进入小区。
假如我把本身的暗码,告诉快递员,他就拥有了与我同样的权限,这样似乎不太符合。万一我想取消他进入小区的权利,也很贫困,我本身的暗码也得跟着改了,还得关照其他的快递员。
有没有一种办法,让快递员可以大概自由进入小区,又不必知道小区住民的暗码,而且他的唯一权限就是送货,其他必要暗码的场合,他都没有权限?
二、授权机制的筹划

于是,我筹划了一套授权机制。
第一步,门禁体系的暗码输入器下面,增长一个按钮,叫做"获取授权"。快递员必要起首按这个按钮,去申请授权。

第二步,他按下按钮以后,屋主(也就是我)的手机就会跳出对话框:有人正在要求授权。体系还会体现该快递员的姓名、工号和所属的快递公司。

我确认哀求属实,就点击按钮,告诉门禁体系,我同意给予他进入小区的授权。
第三步,门禁体系得到我简直认以后,向快递员体现一个进入小区的令牌(access token)。令牌就是类似暗码的一串数字,只在短期内(比如七天)有效。

第四步,快递员向门禁体系输入令牌,进入小区。

有人大概会问,为什么不是长途为快递员开门,而要为他单独天生一个令牌?这是由于快递员大概天天都会来送货,第二天他还可以复用这个令牌。别的,有的小区有多重门禁,快递员可以使用同一个令牌通过它们。
三、互联网场景

我们把上面的例子搬到互联网,就是 OAuth 的筹划了。
起首,住民小区就是储存用户数据的网络服务。比如,微信储存了我的好友信息,获取这些信息,就必须颠末微信的"门禁体系"。
其次,快递员(大概说快递公司)就是第三方应用,想要穿过门禁体系,进入小区。
末了,我就是用户本人,同意授权第三方应用进入小区,获取我的数据。
简朴说,OAuth 就是一种授权机制。数据的全部者告诉体系,同意授权第三方应用进入体系,获取这些数据。体系从而产生一个短期的进入令牌(token),用来取代暗码,供第三方应用使用。
四、令牌与暗码

令牌(token)与暗码(password)的作用是一样的,都可以进入体系,但是有三点差异。

  • 令牌是短期的,到期会自动失效,用户本身无法修改。暗码一样平常长期有效,用户不修改,就不会发生变化。
  • 令牌可以被数据全部者取消,会立即失效。以上例而言,屋主可以随时取消快递员的令牌。暗码一样平常不答应被他人取消。
  • 令牌有权限范围(scope),比如只能进小区的二号门。对于网络服务来说,只读令牌就比读写令牌更安全。暗码一样平常是完备权限。
上面这些筹划,包管了令牌既可以让第三方应用得到权限,同时又随时可控,不会危及体系安全。这就是 OAuth 2.0 的优点。
注意,只要知道了令牌,就能进入体系。体系一样平常不会再次确认身份,以是令牌必须保密,走漏令牌与走漏暗码的结果是一样的。 这也是为什么令牌的有效期,一样平常都设置得很短的缘故原由。
OAuth 2.0 对于怎样颁发令牌的细节,规定得非常详细。详细来说,一共分成四种授权范例(authorization grant),即四种颁发令牌的方式,实用于差异的互联网场景。
四种方式

第一种授权方式:授权码

授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。
这种方式是最常用的流程,安全性也最高,它实用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且全部与资源服务器的通讯都在后端完成。这样的前后端分离,可以制止令牌走漏。
第一步,A 网站提供一个链接,用户点击后就会跳转到 B 网站,授权用户数据给 A 网站使用。下面就是 A 网站跳转 B 网站的一个体现链接。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-22 01:50, Processed in 0.176251 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表