Oauth

Oauth2.0

作用: 客户端和资源所有者 颁发令牌 授权机制
三方: 1、服务提供方 2、用户 3、客户端

授权码

先申请授权码 后用其获取令牌

  • 优势
    • 避免令牌泄漏 前端 授权码 后端存储令牌
  • 流程
    • A前端请求B 请求授权码
    • B要求用户登录 后问用户是否同意给予A网站授权 同意跳转redirect_uri
    • A拿到授权码在后端向B请求令牌
    • B颁发令牌 access_token
https://b.com/oauth/authorize?
  response_type=code&
  client_id=CLIENT_ID&
  redirect_uri=CALLBACK_URL&
  scope=read
  //说明
  response_type 返回授权码code
  client_id 让B知道是谁在请求
  redirect_uri B接受或拒绝请求后的跳转网址
  scope 表示要求的授权范围(只读)
https://b.com/oauth/token?
 client_id=CLIENT_ID&
 client_secret=CLIENT_SECRET&
 grant_type=authorization_code&
 code=AUTHORIZATION_CODE&
 redirect_uri=CALLBACK_URL
 //说明
 client_secret 参数是保密的 只能在后端发请求
 grant_type 授权方式 授权码/隐藏式/密码式/凭证

在这里插入图片描述

implicit(隐藏式)

有些 Web 应用是纯前端应用,没有后端必须将令牌储存在前端
A 网站提供一个链接,要求用户跳转到 B 网站,授权用户数据给 A 网站使用。
用户跳转到 B 网站,登录后同意给予 A 网站授权。这时,B 网站就会跳回redirect_uri参数指定的跳转网址,并且把令牌作为 URL 参数,传给 A 网站
https://a.com/callback#token=ACCESS_TOKEN

password(密码式):

用户高度信任的应用 使用密码 申请令牌
第一步,A 网站要求用户提供 B 网站的用户名和密码。拿到以后,A 就直接向 B 请求令牌
第二步,B 网站验证身份通过后,直接给出令牌。注意,这时不需要跳转,而是把令牌放在 JSON 数据里面,作为 HTTP 回应,A 因此拿到令牌。

client credentials(客户端凭证)

适用于没有前端的命令行应用,即在命令行下请求令牌
不是针对用户的,即有可能多个用户共享同一个令牌。
第一步,A 应用在命令行向 B 发出请求。
第二步,B 网站验证通过以后,直接返回令牌。

参考文档

OAuth 2.0 的一个简单解释:https://www.ruanyifeng.com/blog/2019/04/oauth_design.html
OAuth 2.0 的四种方式:https://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html
GitHub OAuth 第三方登录示例教程:https://www.ruanyifeng.com/blog/2019/04/github-oauth.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值