https://datatracker.ietf.org/doc/html/rfc6749#section-4.3

1. 流程图

image.png

2. 流程简介

2.1 第一步

用户将账号密码提供给第三方Client

2.2 第二步

https://datatracker.ietf.org/doc/html/rfc6749#section-4.3.2

第三方请求AuthServer, 使用 用户名和密码 获取 ACCESS_TOKEN

  1. POST /token HTTP/1.1
  2. Host: authserver.com
  3. Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
  4. Content-Type: application/x-www-form-urlencoded
  5. grant_type=password&username=johndoe&password=A3ddj3w

2.3 第三步

当AuthServer校验成功, 则返回 ACCESS_TOKEN

  1. HTTP/1.1 200 OK
  2. Content-Type: application/json;charset=UTF-8
  3. Cache-Control: no-store
  4. Pragma: no-cache
  5. {
  6. "access_token":"2YotnFZFEjr1zCsicMWpAA",
  7. "token_type":"example",
  8. "expires_in":3600,
  9. "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
  10. "example_parameter":"example_value"
  11. }

3. 适用场景

有没有发现这个方式, 几乎和正常一个应用没啥区别

如果第三方应用Client就是官方出品的应用,又要使用 OAuth 2.0 来保护我们的 Web API,那么你这种方式,采用资源拥有者凭据许可类型。

举个例子, 语雀,钉钉,支付宝 他们其实就是阿里一家的, 就可以用这种方式互相登录