OAuth2.0认证和授权机制

Auth2.0

什么是Auth2.0?

  1. OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。

授权(authorization)的开放网络标准的流程?

  1. 看下面流程图:
    在这里插入图片描述
    (A)用户打开客户端以后,客户端要求用户给予授权。

(B)用户同意给予客户端授权。

(C)客户端使用上一步获得的授权,向认证服务器申请令牌。

(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。

(E)客户端使用令牌,向资源服务器申请获取资源。

(F)资源服务器确认令牌无误,同意向客户端开放资源。
这么一个过程
2. 看到上面的流程,我们大概都有一个疑问,就是用户同意授权后这个步骤是如何授权的?怎么就算授权成功,通过什么东西去向认证服务器申请令牌?

  • Auth2.0中在这个步骤有4种模式(客户端的授权模式)?
    1. 授权码模式(authorization code)
    2. 简化模式(implicit)
    3. 密码模式(resource owner password credentials)
    4. 客户端模式(client credentials)
  1. 授权码模式(authorization code)
    在这里插入图片描述
  • 如上图
  1. 用户先在第三方服务点击请求登录,且通过了1,2,3的步骤(这个步骤就等于去访问认证权限服务的门槛)
  2. A用户在进行登录授权的时候发送请求给认证服务器,此时需要附上参数 APPID(你需要登录的第三方服务在认证服务器上维护的ID),redirection URI(第三方服务的地址)…等。
  3. B步骤是认证服务器跳转到需要用户去确认授权的页面,得到用户的意见。
  4. C用户同意授权,反馈给认证服务器
  5. D认证服务器将之前得到的,redirection URI+ code去请求第三方服务的地址,如果用户没有同意的话,就只会,redirection URI地址则会登录失败
  6. E CODE码通过第三方的客户端发送给后台服务,后台服务使用CODE+APPID+appSecret去请求认证服务器拿到令牌AccessToken。认证结束
  7. 上面的这种请求方式是从第三方应用开始(例如:通过微信号登录CSDN)
    还有就是直接在resource Owner(用户服务)开始登录
    如通过将第三方应用嵌入到微信公众平台上如下图
    在这里插入图片描述
  8. 其他模式就不在这个赘述 想了解可以点击这里
  9. 从上面看下来Outh2.0 的最终目的是什么呢?
  • 首先我们需要知道两点:
  1. 用户授权信息在授权服务器中是有记录的,当用户第一次授权给相应的第三方应用后,不需要进行再次授权
  2. 每个用户在资源服务器中都有一个唯一的ID,第三方应用可以将其存储起来并与本地用户系统一一对应起来
  3. 如微信公众号的大三方应用就是为了拿微信用户的唯一标识openId来和第三方应用的用户表关联起来或者创建用户。
原创文章 92 获赞 11 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_40413961/article/details/104447423