[简易图解]『 OAuth2.0』 猴子都能懂的图解 转本站chihokyo

一,写在前面的

这两天在看论坛的 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

    oauth Oauth2.0

本作品采用《CC 协议》,转载必须注明作者和本文链接

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 3

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!