阅读 208

前端该了解的oauth2(前后端分离oauth2)

密码式

如果你高度信任某个应用,RFC 6749 也允许用户把用户名和密码,直接告诉该应用。该应用就使用你的密码,申请令牌,这种方式称为"密码式"(password)。

实现流程
  1. 第一步,A 网站要求用户提供 B 网站的用户名和密码。拿到以后,A 就直接向 B 请求令牌。

    https://oauth.b.com/token?   grant_type=password&   username=USERNAME&   password=PASSWORD&   client_id=CLIENT_ID 复制代码

    • grant_type = password   授权方式为密码的形式进行授权

    • username && userpassword B网站的登录用户名及密码

    • client_id     用户申请令牌的身份标识

  2. B 网站验证身份通过后,直接给出令牌。注意,这时不需要跳转,而是把令牌放在 JSON 数据里面,作为 HTTP 回应,A 因此拿到令牌。

    这种方式需要用户给出自己的用户名/密码,显然风险很大,因此只适用于其他授权方式都无法采用的情况,而且必须是用户高度信任的应


凭证式

凭证式和密码式很相似,主要适用于那些没有前端的命令行应用,可以用最简单的方式获取令牌,在请求响应的 JSON 结果中返回 token

实现流程
  1. 第一步,A 应用在命令行向 B 发出请求。

https://oauth.b.com/token?   grant_type=client_credentials&   client_id=CLIENT_ID&   client_secret=CLIENT_SECRET 复制代码

grant_typeclient_credentials 表示凭证式授权,client_idclient_secret 用来识别身份。

  1. B 网站验证通过以后,直接返回令牌。

令牌的使用/更新

使用

A 网站拿到令牌以后,就可以向 B 网站的 API 请求数据了。使用方法为在请求头中将 token 放在 http 请求头部的一个Authorization字段里。

更新

token是有时效性的,一旦过期就需要重新获取,令牌的有效期到了,如果让用户重新走一遍上面的流程,再申请一个新的令牌,很可能体验不好,而且也没有必要。OAuth 2.0 允许用户自动更新令牌

实现方法

具体方法是,B 网站颁发令牌的时候,一次性颁发两个令牌,一个用于获取数据,另一个用于获取新的令牌(refresh token 字段)。令牌到期前,用户使用 refresh token 发一个请求,去更新令牌。

https://b.com/oauth/token?   grant_type=refresh_token&   client_id=CLIENT_ID&   client_secret=CLIENT_SECRET&   refresh_token=REFRESH_TOKEN 复制代码

grant_type参数为refresh_token表示要求更新令牌;

client_id参数和client_secret参数用于确认身份;

refresh_token参数就是用于更新令牌的令牌。

B 网站验证通过以后,就会颁发新的令牌


作者:漆黑之牙_
链接:https://juejin.cn/post/7034824162027765774

文章分类
前端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐