【OAuth】OAuth2.0四种授权模式

什么是OAuth?

开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务器提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供的某些特定信息,而非所有内容。

OAuth2.0是OAuth协议的下一个版本,但不向下兼容OAuth1.0。OAuth2.0关注客户端开发者的简易性,同时为Web应用、桌面应用、手机和智能设备提供专门的认证流程。

资源拥有者凭证许可(Resource Owner Password Credentials Grant)

资源拥有者的凭证,就是用户的凭据,就是用户名和密码。

在这里插入图片描述

  1. 小明(资源拥有者)访问小兔软件,录入用户名和密码,索要用户名和密码,就是资源拥有者凭据许可类型的特点。
  2. 携带用户名和密码请求访问令牌access_token值。
  3. 授权服务在验证用户名和密码之后,生成access_token的值并返回给第三方软件。
  4. 后面用户访问受保护资源的时候就附带着access_token值去访问。

客户端凭证许可(Client Credentials Grant)

在客户端凭证许可授权流程中,就不再需要资源拥有者这个角色了。当然,你也可以形象地理解为“资源拥有者被塞进了第三方软件中”或者“第三方软件就是资源拥有者”。这种场景下的授权,便是客户端凭证许可,第三方软件可以直接使用注册时的app_idapp_secret来换回访问令牌token的值。

A

  1. 第三方软件通过后端服务项授权服务发送请求,告诉授权服务要使用第三方软件凭据的方式去请求访问。
  2. 在验证app_id 和 app_secret的合法性之后,生成access_token的值并返回。
  3. 用户访问受保护资源的时候就附带着access_token值去访问

隐式许可(Implicit Grant)

如果使用的软件应用没有后端服务,就是在浏览器执行的,比如纯粹的JavaScript应用,应该如何使用OAuth 2.0 呢?

这种情况的授权流程就可以使用隐式许可流程,可以理解为第三方软件小兔直接嵌入浏览器中了。

因此,隐式许可授权流程的安全性会降低很多。再授权流程中,没有服务端的小兔软件相当于是嵌入到了浏览器中,访问浏览器的过程相当于接触了小兔软件的全部。

在这里插入图片描述

  1. 用户通过浏览器访问第三方软件。此时,第三方软件实际上是嵌入浏览器中执行的应用程序。
  2. 请求访问令牌access_token值。
  3. 生成access_token的值,通过前端通信返回给第三方软件。
  4. 用户访问受保护资源的时候就附带着access_token值去访问

授权码授权模式(Authorization code Grant)

在这里插入图片描述

  1. 用户访问页面
  2. 访问页面重定向到认证服务器(也可以叫做认证中心)
  3. 认证服务器向用户展示授权页面,等待用户授权
  4. 用户授权,认证服务器生成一个code和带上client_id发送给应用服务器
  5. 应用服务器拿到code,client_id去后台查询对应的client_secret
  6. 将code、client_id、client_secret传给认证服务器换取access_token和refresh_token
  7. 将access_token和refresh_token传给应用服务器
  8. 验证token,访问真正的资源页面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值