OAuth2 流程

Posted by hurshi on 2019.12.03

知识以及图片来自于henCoder plus,感谢凯哥。

预备

  1. 下面将举例第三方 接入 Github 登陆。
  2. 在开发人员接入 Github 登陆之前,需要在 Github 填写信息,比如网站,图标等等;Github 会返回给开发者 client_id,以及 client_secret,一般 client_id 可以泄露没关系,但是 client_secret 不能泄露,不能保存在客户端或移动App端,只能保存在自己公司服务器中。

流程

  1. Step1: 第三方客户端发起请求到 github,携带 Github授予第三方的 client_id。

  2. Step2: Github 返回 code 给第三方服务器。(这是一个凭证,但不是token)

    为什么不直接返回 token 呢?

    1. 第三方客户端(浏览器,移动App)都是不可靠的,有可能正在钓鱼呢。
    2. 返回 code 这个过程是不强制 https 的,换句话说,这里有可能是 http。
  3. Step3: 第三方客户端 将 code 发送给自己的服务器(第三方服务器)

  4. Step4: 第三方服务器 携带 code 以及 client_secret ,使用 https 连接向 Github 索要 token。

  5. Step5: Github 将 token 返回给第三方服务器。

后续

  1. token 应该只有 第三方服务器 持有,而不应该把 token 给客户端或浏览器。

  2. 所有的需要 Github 信息的请求,比如获得用户 Github 头像,都要通过第三方服务器去获取: