我欲乘风九万里
梦的起点
心灵之声
珊瑚礁
编码之舞
梦中的微风
项目编码
聚合登录文档
建议
AI助手
简易图解OAuth2.0
本文转自https://learnku.com/articles/87108#5263ba ## 写在前面的 这两天在看论坛的 L03API 教程上面的 oAuth,对于 oAuth 这个概念,一直还很模糊,找了很多国内的一些东西看的,当然还有论坛推荐的阮一峰的说明,但是总是感觉有种理不清楚的感觉。 加之国内很多教程对于非计算机专业的人理解不友好。 恰好在日本网站上看到了一些说明特别容易理解。就按照他们的思路自己写了这一段图。 顺便说下,没别的意思,对于 IT 一些术语的解释,国内还是偏向于专业化了,甚至很多也只是翻译国外的文章,没有自己的理解,还有可能是我。。看的太少了吧。也有可能是我的实力不够。 国外有很多感觉真的是写给猴子看的,还有面向儿童的一些书,很适合我这种刚开始接触某个概念的人来看。 > 废话不多说了,上图了。这是根据 PPT 做出来的简图。 如果想一次性看完的,可以去下面这里直接看。 新手理解,不吝赐教。 PPT 幻灯片 ------------ > 为了不引起歧义补充说明一下,这篇只是很概括的说明了一下什么是 OAuth。 真正的授权肯定不是这么简单,到具体的 OAuth 授权模式上会更加复杂,看完这篇可以看看这篇我总结的授权模式,授权模式总结,比这个稍微没这么好懂一点,但我非计算机专业的我都能懂的话,应该认真看问题不大。本篇文章就不做赘述啦。 # 二、步骤图 ### 1. 我们这里有一份用户的数据  ### 2.用户的数据我们保存在资源服务器 (Resource server) 里  ### 3. 这时候有个 第三方应用程序(Third-party application)想要请求资源服务器要用户数据  ### 4. 为了让用户数据和第三方程序程序良好的交互,资源服务器准备了一个 API 接口  ### 5. 第三方应用程序向资源服务器请求用户的数据  ### 6. 资源服务器表示好的给你了  ### 7. 但如果这个第三方应用程序是恶意的第三方呢?那么就会有以下的场景出现  ### 8. 所以我们需要一个机制来保护 API 接口,不能随随便便毫无安全可言的把用户的数据送出去  ### 9. 这个最佳实践就事先在第三方程序里保存一个令牌 access_token  ### 10. 第三方应用程序在向资源服务器请求用户数据的时候会出示这个 access_token  ### 11. 然后资源服务器取出授权码并且验证是否有授权  ### 12. 授权通过,资源服务器才会把用户数据传递给第三方应用程序  ### 13. 但这种方案需要事先给第三方 access_token  ### 14. 所以我们需要一个东西用来发行这个 access_token,这时候认证服务器 (Authorization server)登场了  ### 15. 认证服务器负责生成并且发行 access_token 给第三方应用程序  ### 16. 接下来我们看一下目前的登场的人物有 - 第三方应用程序 - 资源服务器 - 认证服务器 - access_token - 用户数据 > 资源服务器和认证服务器有时候是同一台服务器  ### 17. 接下来我们来走一下流程 认证服务器生成 access_token  ### 18. 认证服务器发行 access_token 授权给第三方应用程序  ### 19. 第三方应用程序拿着 access_token 去找资源服务器要用户数据  ### 20. 资源服务器取出来 access_token 并验证  ### 21. 验证通过 用户数据送出  ### 22. 问题点来了 > 到上面为止有个很大的问题就是,认证服务器生成 access_token 竟然没人管!那岂不是随便发行了,这不行,于是我们的用户 (Resource Owner:资源所有者)出现了!  ### 23. 解决 > 认证服务器在发行 access_token 之前要先通过用户的同意 ### 24. 于是接下来就是 1. 第三方应用程序向认证服务器要 access_token  2. 认证服务器生成之前先问问用户能不能授权啊  3. 用户说好的可以给  4. 认证服务器生成 access_token 并且发行给第三方应用程序  ### 25. oAuth2.0 > 第三方应用程序和这个认证服务器之间围绕着 access_token 进行请求和响应的等等就是 oAuth2.0 
ysian
我雾化科所
1
聚合登录之创建应用篇
2024-07-30
645
0
2
php函数之match
2024-07-29
583
0
3
聚合登录之常见问题
2024-07-30
489
0
4
聚合登录之前后端示例代码
2024-07-30
483
0
5
聚合登录之获取登录链接
2024-07-30
422
0
6
服务器瘦身
2023-11-01
414
5
7
centos下升级openssl
2023-11-30
414
0
8
我的第一篇博客
2023-09-28
403
0
9
supervisor的安装与使用
2023-11-02
384
0
10
editor.md 代码块没有下拉框
2023-10-06
353
2
PHP [9]
linux [4]
sh [1]
闲谈 [1]
css [2]
redis [2]
Cluster集群 [1]
git [1]
centos [1]
webman [2]
工具 [1]
OAuth2.0 [1]
项目 [1]
初始化 [1]
thinkphp [1]
Nginx [1]
往事 [1]
Mysql [1]
支付宝 [2]
抖音 [2]
qq [2]
聚合 [1]
登录 [1]
聚合登录 [4]
cache [1]
html [1]
queue [1]
Workerman版本
4.1.15
Webman版本
1.5.9
PHP版本
8.3.6
MYSQL版本
8.2.24
操作系统
CENTOS