OAuth2.0 详细介绍


OAuth2.0支持4种登陆方式:
授权码登陆(最完善的登陆方式),隐式授权登陆,密码授权登陆,客户端授权登陆。
以下是原版官方文档中对授权码登陆的示意图

1:Client(第三方客户端):去请求用户代理,需要用户信息。
1:User-Agent(用户代理):使用客户端标识加回调用户代理接口的URI,作为参数传给Authorization Server(验证服务器).
2:用户代理通知用户,第三方客户端请求获得你的信息
2:用户点了同意后,用户代理直接像验证服务器发送请求授权。
3:验证服务收到请求后生成code(授权码),调用刚才给的URI将授权码传给用户代理
3:用户代理将收到的授权码响应给第三方客户端。
4:第三方客户端将收到的:授权码和自己要被回调接收URI作为参数传给验证服务器请求获得Access Token(令牌)。
5:验证服务收到授权码后看是验证授权码中的信息,若信息没问题就直接生成令牌传给第三方客户端。
有了令牌的第三方客户端就可以拿着令牌请求资源服务器获得资源。
例子:抖音使用微信登陆。
  客户端:抖音客户端。
  用户代理:抖音/微信各自的用户代理。
  资源:微信资源服务器。
  验证服务器:微信认证服务器。
  用户:用户本人

  参考上面步骤:
    1:用户点击微信登陆抖音客户端。
    1:抖音代理请求微信认证服务器。并传参数:回调抖音代理的回调抖音代理URI,以及抖音唯一标识。
    2:抖音代理拉起微信页面等待确认登陆。
    2:用户点击确定后,微信代理请求微信认证服务器给抖音授权。
    3:微信认证生成code码(授权码),按照回调的抖音代理URI传给抖音代理。
    3:抖音代理将最终获得的code码给到抖音。
    4:抖音向微信认证服索要access_token(令牌),参数:code码,回调的抖音URI。
    5:微信认证服验证code码无误后生成access_token并调用抖音URI将access_token给到抖音。 

博客参考:https://www.codenong.com/cs110901082/
文档参考:https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-1-01