oauth2学习

oauth2

  1. 生词:

    1. 授权码模式(authorization code)
    2. 简化模式(implicit)
    3. 密码模式(resource owner password credentials)
    4. 客户端模式(client credentials)
  2. 问题:

    1. 分享目标:大致了解oauth的运行流程,及如何使用oauth(代码实现)。
    2. oauth是什么?
      1. oauth是目前最流行的一套授权机制标准。
    3. oauth的应用场景?
      1. 假设一个例子:
        1. 有一个在线读取pdf的网站。极速PDF在线阅读
        2. 我们想要在线阅读百度云存储的pdf文档,那么就需要让极速pdf来读取百度云存储的pdf,那么极速pdf是怎样获取到用户的授权呢?
        3. 传统的做法是我们将百度云账号密码告诉极速pdf,这样后者就可以进行读取pdf文档了
        4. 这样的做法会有几个严重的缺点
          1. 极速pdf为了后续的在线阅读服务可能会保存我们的百度云账号密码
          2. 极速pdf会读取我们百度云所有资料。
          3. 只有我们修改密码后才能控制极速pdf的权利,于此同时我们用的其他第三方应用也都失效了
        5. 这时由国外的几位大佬共同发起的,为API访问授权提供一套标准:Oauth
  3. oauth2.0 运行流程

    1. A:第三方请求用户获取授权

      B:用户同意授权

      C:第三方带着用户授权向认证服务器获取token

      D:认证服务器校验用户授权后,返回token

      E:带着token请求资源服务器

      F:资源服务器校验token 后返回所需资源

  4. 授权码模式(authorization code)

      1. 第三方服务跟用户索要授权
      2. 用户给予授权
      3. 浏览器拿着加密的用户信息和回调地址给认证服务器
      4. 认证服务器校验用户信息和回调地址后返回授权码。
      5. 第三方应用再根据授权码和回调地址请求认证服务器
      6. 认证服务器校验后返回token
  5. 简化模式(implicit grant type)

    1. 执行流程:

      1. 获取用户授权
      2. 将用户client信息和回调地址发送到认证服务器
      3. 认证服务器校验成功后返回重定向地址和token对象的哈希值
      4. 浏览器带着重定向地址向资源服务器发出请求
      5. 资源服务器返回一个页面,根据hash值获取token信息
  6. 密码模式(Resource Owner Password Credentials Grant)

    1. 执行流程

      1. 用户向客户端提供账号密码
      2. 客户端用账号密码请求认证服务器
      3. 认证服务器校验成功后返回token
  7. 客户端模式(Client Credentials Grant)

    1. 第三方服务带上client信息向认证服务器请求获取token

    2. 认证服务器校验client信息后返回token

posted @ 2019-07-19 20:23  渔阳nice  阅读(220)  评论(0编辑  收藏  举报