OAuth 2.0

OAuth 2.0

标准

https://tools.ietf.org/html/rfc6749

是什么

OAuth 2.0 授权框架使得第三方可以获取对用户资源的访问(有限访问或者完全访问)。

举个例子:通过你的允许,bilibili 可以去微信服务器获取你的头像,昵称,openid 等等。

为什么

传统授权方式,用户和第三方共享密码。缺点如下:

  1. 未来可能持续需要访问各种受限资源。所以第三方要存储用户密码,一般情况密码是明文,显然不安全。
  2. 第三方将可以访问所有的资源,而实际上它只应当有权限访问部分资源。
  3. 用户不能撤销单个第三方的访问权限。改密码,所有第三方都会失效。
术语

案例:用户通过“微信登陆”登陆 bilibili 。

专业称呼通俗叫法
资源所有者用户
资源服务器保存用户信息的服务器并且能够验证令牌是否合法(比如说,微信服务器,保存你的微信头像等)
客户端第三方应用程序(比如说,bilibili)
授权服务器发送令牌给第三方的服务器(可以和资源服务器是同一个)

授权码模式、隐式模式、密码模式、客户端模式

授权码模式(适用前后端分离)

最常用的模式,微信、QQ、Github 登陆第三方网站就是这种模式。优点前后端分离,避免令牌泄露。

  1. 哔哩哔哩提供一个“微信登陆”的链接,用户点击跳转到微信授权服务器。
  2. 用户根据微信授权服务器提示登陆微信并确认授权给哔哩哔哩。
  3. 微信授权服务器返回用户代理(浏览器)一个授权码。
  4. 用户代理(浏览器)把这个授权码传给哔哩哔哩。
  5. 哔哩哔哩凭借授权码向微信授权服务器请求令牌。
  6. 微信授权服务器发送令牌给哔哩哔哩。

之后哔哩哔哩就可以带着令牌去微信资源服务器读取用户资料。

三个问题:

  1. 为什么要有授权码?
  2. 为什么要重定向?
  3. 授权码为什么不直接返回给 bilibili ?
隐式模式(不推荐使用)(适合没有后台的第三方)
  1. 哔哩哔哩提供一个“微信登陆”的链接,用户点击跳转到微信授权服务器。
  2. 用户根据微信授权服务器提示登陆微信并确认授权给哔哩哔哩。
  3. 微信授权服务器发送令牌给哔哩哔哩。
https://weixin.com/oauth/authorize?
  response_type=token&
  client_id=123&
  redirect_uri=http://www.bilibili.com/callback&
  scope=read
密码模式(适合用户极其信任第三方)
  1. 哔哩哔哩使用用户给的微信登陆账号和密码直接向微信授权服务器索要令牌。
  2. 微信授权服务器发送令牌给哔哩哔哩。
https://weixin.com/token?
  grant_type=password&
  username=张三&
  password=123456&
  client_id=123
客户端模式(适合没有前端的第三方,整个过程没有用户参与)
  1. 哔哩哔哩向微信授权服务器请求令牌。
  2. 微信授权服务器发送令牌给哔哩哔哩。
https://weixin.com/token?
  grant_type=client_credentials&
  client_id=123&
  client_secret=xxxxx
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值