Oauth2.0的授权码模式-全网最详细

       最近笔者在项目中用到了Oauth2.0相关的技术,之前对Oauth的授权一直出于简单了解的状态,对于Oauth2.0其中的跳转,也是比较懵逼的状态,不太能理解为什么要一直跳来跳去.后来查阅了许多资料之后,终于能大概理清楚其中的原因.这边文章附上一张时序图,我会详细解释每个时序图的步骤,以及为什么要这么设计, 详细说明在我的blog,文章目前处于未完成待续的状态
       如果理解的有什么不对的地方,欢迎大家指正,时序图中的我标明了每一步的顺序.

Oauth2.0

这里我们首先理清楚图中的四个角色,这里我以微信的小程序来举例

  • 用户: 这个很好理解,指的就是我们自己.在oauth其实上代指的时候你想要访问的资源的所有者
  • app: 就是各个微信小程序
  • 用户资源: 其实就是微信服务上存储的我们用户的一些信息,比如我们的微信头像,昵称或者更加隐私的手机号码
  • Auth服务: 就是微信的鉴权的服务
     

第一步/第二步:
       步骤一[时序图上画的1的那一步].对于我们是无感知的,用户一进入小程序的时候,小程序的开发者已经把地址拼接好了,
各位想一想,是不是我们在微信上访问小程序的时候,实际上是先访问各个小程序开发者拼接好的一个固定的URL地址,
这个地址对于一个的小程序来说是固定的,所有人看到的都是一样.有兴趣的小伙伴可以自己去抓包看.
步骤二当小程序的开发者把地址返回给我们的时候,我们只要在页面点击登录/注册/或者任意地方即可,这样
前二步骤就已经完成了.中途对于我们用户来说没有任何感知
第三步:
       当我们点击小程序的任意地方[大部分情况是登录],实际上是由用户自己带上小程序的appId表示访问微信的授权服务器
第四步/第五步:
       当授权服务器接收到请求之后,会拉起弹窗,告诉用户小程序想访问你的头像/昵称/手机号码等信息,这一步是需要用户授权的
用户同意授权之后,进入第五步
第六步:
       微信的授权服务器这时候会生成一个code码,返回给小程序后台.注意!这里的小程序后台指的是开发者的后台,请勿混淆.
至于为什么生成code码,而不是直接返回所以AccessToken这些敏感的操作等信息,因为这是这些信息的交互还是在小程序的页面上的,用户如果通过
抓包等技术手段是可以窃取到所有信息的,所以AccessToken这些敏感的操作,只能放在小程序后台和微信授权服务器之间完成
,毕竟服务器和服务器之间的通讯相对于用户环境还是要安全的
第七步/第八步:
       这里小程序的后台会拿到用户返回给他的code+appId+appSecrt等信息去微信的授权服务器换取用户的访问令牌,微信的授权服务器在校验和确认这些信息合法后会返回该用户的访问令牌给小程序.这是小程序后台一般会存储该访问令牌,
第九步/第十步:
       小程序后续会利用该用户的访问令牌去访问用户的信息数据.当访问令牌过期的时候,可能会利用RefreshToken去刷新访问令牌

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值