OAuth 系列(一)序言

本来是要接着写 最适合入门的Laravel中级教程 的 Passport OAuth 认证 ;
但是想着如果对 OAuth 不了解的话直接看教程会有点迷茫;
于是这里先开个 OAuth 系列做个铺垫;

每项技术的诞生都是为了解决某个需求;
因此当我们学习技术的时候要搞清楚两个问题;

  1. 这项技术解决的是什么问题
  2. 这项技术是怎么解决问题的

本系列教程就是要对 OAuth 进行讲解;
我们先来回答上面第一个问题;

在互联网上有很多的应用;
这些应用是不同公司或个人开发的;
比如说 github 和 白俊遥博客 https://baijunyao.com
很多时候多个应用之间的用户都是交叉的;
比如说正在看这篇文章的你;
如果你已经有了 github 账号;
那白俊遥博客可不可以使用你在 github 上面的用户名和头像?

最简单粗暴的传统方案就是把你的 github 的账号密码给白俊遥博客;
白俊遥博客用你的 github 账号密码获取用户名和头像;
但是这个方案至少有两个方面的问题;

安全

  1. 白俊遥博客需要保存你的 github 账号明文密码这让人很不放心
  2. 即便你信任白俊遥博客;但是因为一些安全漏洞之类的原因你的 github 账号密码仍然可能被泄露;
  3. 如果你更改了 github 的账号密码;你还需要在白俊遥博客上重新保存新的账号密码;

权限

  1. 如何限制白俊遥博客只能获取你 github 上的用户名和头像;不能操作你的 github 仓库之类的内容;
  2. 如何撤销白俊遥博客获取你 github 上的用户名和头像这个权限;

OAuth 就是为了解决上面这些问题而诞生的;
Oauth 的解决方案是:
将角色和资源分离;
通过授权获取资源;
达到的目标是即不暴露你的账号密码还能划定权限;

OAuth 划分了4个角色:

  1. 资源服务器(resource server):github 服务器
  2. 授权服务器(authorization server):github 服务器
  3. 资源所有者(resource owner):用户你
  4. 客户端(Client):第三方白俊遥博客

OAuth 授权类型也有 4 种:

  1. 授权码模式(Authorization Code)
  2. 简化模式(也叫隐式授权)(Implicit)
  3. 密码模式(Resource Owner Password Credentials)
  4. 客户端模式(Client Credentials)

我将在后续的系列文章中挨个讲解;

白俊遥博客
请先登录后发表评论
  • latest comments
  • 总共4条评论
白俊遥博客

拯救地球ing:get~

2019-04-16 15:04:24 回复

白俊遥博客

lestat220255白俊遥博客

2019-04-09 16:46:10 回复

白俊遥博客

随心:慢悠悠地慢慢游:这个喜欢,期待下集

2019-04-02 17:28:26 回复

白俊遥博客

慢悠悠地慢慢游:这个喜欢,期待下集

2019-03-25 09:28:44 回复