【简易图解】『 OAuth2.0』 猴子都能懂的图解
150

一,写在前面的

这两天在看论坛的L03API教程上面的oAuth,对于oAuth这个概念,一直还很模糊,找了很多国内的一些东西看的,当然还有论坛推荐的阮一峰的说明,但是总是感觉有种理不清楚的感觉。
加之国内很多教程对于非计算机专业的人理解不友好。
恰好在日本网站上看到了一些说明特别容易理解。就按照他们的思路自己写了这一段图。
顺便说下,没别的意思,对于IT一些术语的解释,国内还是偏向于专业化了,甚至很多也只是翻译国外的文章,没有自己的理解,还有可能是我。。看的太少了吧。也有可能是我的实力不够。
国外有很多感觉真的是写给猴子看的,还有面向儿童的一些书,很适合我这种刚开始接触某个概念的人来看。

  • 废话不多说了,上图了。这是根据PPT做出来的简图。
  • 如果想一次性看完的,可以去下面这里直接看。
  • 新手理解,不吝赐教。
  • PPT幻灯片

为了不引起歧义补充说明一下,这篇只是很概括的说明了一下什么是OAuth。
真正的授权肯定不是这么简单,到具体的OAuth授权模式上会更加复杂,看完这篇可以看看这篇我总结的授权模式,授权模式总结,比这个稍微没这么好懂一点,但我非计算机专业的我都能懂的话,应该认真看问题不大。本篇文章就不做赘述啦。

二,步骤图

1.我们这里有一份用户的数据

file

2.用户的数据我们保存在资源服务器(Resource server)

file

3.这时候有个 第三方应用程序(Third-party application)想要请求资源服务器要用户数据

file

4.为了让用户数据和第三方程序程序良好的交互,资源服务器准备了一个API接口

file

5.第三方应用程序向资源服务器请求用户的数据

file

6.资源服务器表示好的给你了

file

7.但如果这个第三方应用程序是恶意的第三方呢?那么就会有以下的场景出现

file

8.所以我们需要一个机制来保护API接口,不能随随便便毫无安全可言的把用户的数据送出去

file

9.这个最佳实践就事先在第三方程序里保存一个令牌access_token

file

10.第三方应用程序在向资源服务器请求用户数据的时候会出示这个access_token

file

11.然后资源服务器取出授权码并且验证是否有授权

file

12.授权通过,资源服务器才会把用户数据传递给第三方应用程序

file

13.但这种方案需要事先给第三方access_token

file

14.所以我们需要一个东西用来发行这个access_token,这时候认证服务器 (Authorization server)登场了

file

15.认证服务器负责生成并且发行access_token给第三方应用程序

file

16.接下来我们看一下目前的登场的人物有

  • 第三方应用程序
  • 资源服务器
  • 认证服务器
  • access_token
  • 用户数据

    资源服务器和认证服务器有时候是同一台服务器

file

17.接下来我们来走一下流程 认证服务器生成access_token

file

18.认证服务器发行access_token授权给第三方应用程序

file

19.第三方应用程序拿着access_token去找资源服务器要用户数据

file

20.资源服务器取出来access_token并验证

file

21.验证通过 用户数据送出

file

22. 问题点来了

到上面为止有个很大的问题就是,认证服务器生成access_token竟然没人管!那岂不是随便发行了,这不行,于是我们的用户Resource Owner:资源所有者)出现了!

file

23. 解决

认证服务器在发行access_token之前要先通过用户的同意

24. 于是接下来就是

  1. 第三方应用程序向认证服务器要access_tokenfile
  2. 认证服务器生成之前先问问用户能不能授权啊file
  3. 用户说好的可以给file
  4. 认证服务器生成access_token并且发行给第三方应用程序file

    25. oAuth2.0

    第三方应有程序和这个认证服务器之间围绕着access_token进行请求和响应的等等就是oAuth2.0
    file

あきらめたらそこで試合終了ですよ・・・?
一旦放弃比赛就结束了。

本帖由系统于 3周前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 38
郝合心

借你的博客又复习了一遍

3周前
chihokyo

@郝合心 谢谢支持哦。

3周前
Everan

:+1:

3周前

一个月左右就这么熟练啦,厉害

3周前
chihokyo

@dengminfeng 一二个月也不快啦。自己领悟能力很低的,论坛好多说 一读就懂的的文章我好多看了都觉得没太懂。。估计领悟能力太低!:joy:

3周前

真的很通俗易懂 :thumbsup:

3周前

写的不错,感谢分享!

3周前
韩槑槑

:flushed: "可以的 给吧",用户同意授权后应该是授权服务器通过第三方请求时的传递的回调 url 去主动调用第三方接口,然后把 code 给第三方。第三方再通过使用 code 来获取 access_token

3周前
chihokyo

@韩槑槑
谢谢您的阅读。
您说的这个授权模式是接下来我要图解的oAuth具体的授权模式,内容会更细致和具体。
上面只是粗略了讲述了什么是oAuth,至于具体的四种模式因为略难,对于新人来说刚开始理解概念就是轮廓性质的。
此篇文章不做赘述。

3周前
韩槑槑

@chihokyo :joy: 就是感觉读到最后少了一步,"给我code" - "询问用户" - "同意授权" - "给他code" - "给我令牌",就是少了个 "给我code",就刚刚读到最后有点怪怪的没别的意思哈

3周前
chihokyo

@韩槑槑 嗯嗯,懂您的意思。
其实需要code的也就是授权码模式,其他的三种模式下都没有code这一步。
所以从统一的角度来说,是不需要加code的。

3周前

讲得很清晰明了,加油:+1:

3周前

are you a monkey? i'm monkey! :wink:

3周前
chihokyo

@lcyitar 我属猴的

3周前

我就喜欢这种猴子也能看懂的,很形象符合我的大脑构造。我也是属猴的

3周前
万能付博

写的帮帮的哦,意思理解了

3周前

慕课网也有对 OAuth2.0 的讲解,当个参考 https://www.imooc.com/learn/557

3周前

24.1 资源服务器向认证服务器要access_token……貌似笔误?因为图画上面画的是第3方程序向认证服务器要access_token的……总之这组图画得很好懂!终于理解了访问令牌的存在意义了。感谢博主的分享!

3周前
chihokyo

@zhaiduting
谢谢您的提醒,已经修改好了。
多谢鼓励,愿图解有助于您的理解。

3周前

老哥。多发文章啊。关注你了。你这弄得简单易懂、很好、赞一个、

3周前
chihokyo

@echofree313 其实我是女生。。。谢谢鼓励。会继续有的。

3周前

PPT幻灯片链接挂啦,google doc

3周前
chihokyo

@两说 我这里显示的没有问题哦 您翻墙了吗?

3周前

@chihokyo 2333 梯子折了

3周前

想问一下,资源服务器是如何判断 access_token 有效的?

3周前
chihokyo

@chexj
您好,资源服务器内的验证您看下我发表的关于OAuth的第二篇进阶文章,这里只说了OAuth是什么,具体的授权模式,有四种,建议您看一下第一种授权码模式。估计就可以解答您的问题。

3周前

通俗易懂,超赞~~~

2周前

学到了。

2周前

灵魂流程图,不过真的简单易懂。

2周前

写的很好

2周前

大家好我是猴子我听懂了

2周前

@chihokyo 你是中国人吗?:snowflake:

1周前
chihokyo

@lcyitar 当然啊 - -

1周前
fresh1204

真的不错,继续加油

4天前

@王成涛 谢谢分享,正好周末看看

3天前

:laughing:

2天前

还好还好,看懂啦,还是比猴子强点!!!

2天前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!