业务小模块日记【2】

596 词

Ouath2.0的Workflow

Ouath2.0

ouath2.0是一种授权协议
它的存在是为了“一个应用如何在不拿到用户密码的情况下,访问用户在另一个系统的数据?”,平常网站里跳出来的第三方登录诸如使用google账号登录、微信登录实际上用的都是这一套协议,从而实现了比如你能够用google账号授权登录一个网站,但是网站拿不到你的google账号密码

Ouath2.0中大概可以分为这几个交互主体:

  • 用户
  • 网站前端
  • 网站后端
  • 授权服务器
  • 资源服务器

Ouath2.0流程:

以下是一种安全的通常实现

  1. 用户打开网站 example.com
  2. 网站发现用户尚未登录 ——> 跳转到授权服务器提供界面(同时也会带上后面要用到的重定向地址)
  3. 用户授权服务器提供界面上输入账号密码(或者其他授权操作)
  4. 授权成功之后授权服务器返回临时code, 用户浏览器带上code重定向到之前给的重定向地址app.com/callback?code=123
  5. 网站后端收到网站前端带来的临时code,并拿着该code去找授权服务器换Accesstoken
  6. 授权服务器确认并发送Accesstoken网站后端
  7. 网站后端使用access_token调用资源服务器获取相应资源
    //后两条是流程之后比较通用的做法
  8. 后端根据用户信息建立自己系统的登录态(session / JWT)
  9. 后续请求只使用自己系统的登录态