[计算机网络]_应用层_ OAuth2流程

93 阅读1分钟

OAuth2流程

举例在掘金中使用github(第三方)进行第三方登录(假象)

实际上是第三方授权,github给掘金授权(第三方)(真相)

  1. 第三⽅⽹站向授权⽅⽹站申请第三⽅授权合作,拿到 client_id 和 client_secret

  2. ⽤户在使⽤第三⽅⽹站时,点击「通过 XX (如 GitHub) 授权」按钮,第三⽅

⽹站将⻚⾯跳转到授权⽅⽹站,并传⼊ client id 作为⾃⼰的身份标识

  1. 授权⽅⽹站根据 client id ,将第三⽅⽹站的信息和第三⽅⽹站需要的⽤户权

限展示给⽤户,并询问⽤户是否同意授权

  1. 当你点击确认授权之后,第三方给github发送client_id

  1. github给第三方返回一个Authorization code,此码用于接下来获取token用(为了安全),因为在这个请求中可以不是https,所以就会有人窃听,所以不能直接返回token

  1. 第三方拿到code后需要其后端向github发送这个code

  1. 第三方后端向github发送code和client_secret(掘金向github申请的)用来请求token,此请求必须是https

拿到token后整个OAuth2流程就结束了

为什么 OAuth 要引⼊ Authorization code,并需要申请授权的第三⽅将 Authorization code 发送回⾃⼰的服务器,再从服务器来获取 access token,⽽不是直接返回 access token ?这样复杂的流程意义何在? 为了安全。

OAuth不强制授权流程必须使⽤ HTTPS,因此需要保证当通信路径中存在窃听者时,依然具有⾜够⾼的安全性

ps:感谢扔物线的课程。