浅谈微信小程序登陆与Oauth
参考:
微信的登陆认证方式跟Oauth的授权码认证模式非常相似,接下来我大致讲解Oauth的三种常用模式以及与微信登陆认证的关联。 Oauth的三种常用模式密码模式
(此图片来源于网络,如有侵权,请联系删除! )
密码模式的登陆方式大致如上,实际场景里,当用户在登陆掘金客户端的时候,可以选择github认证登陆,而不是直接账号密码登陆时。如果这个时候掘金客户端允许用户直接在上面输入账号密码,那么客户端在用户点击登陆时,将输入的信息转发至github授权服务器上请求授权登陆。如果github服务器授权通过,会返回成功登陆信息,同时我们也成功登陆客户端。 另外在上面整个过程里,掘金客户端不允许保存用户的密码。 对应的登陆请求如下:
授权服务器返回的信息如下:
这是第一种Oauth认证方式,这种认证方式其实是用户在客户端直接录入授权账号和密码,由客户端直接发起对授权服务器的登陆认证,其中客户端不允许保存密码。 相对应的,这种认证最大的缺点就是用户账号密码全部记录在客户端的前端界面,通过请求传输给授权服务器,整个过程里密码容易泄露,安全性差 简化模式
(此图片来源于网络,如有侵权,请联系删除! )
接着,我们来看第二种认证模式。相比上面那种直接在客户端输入账号密码的方式,我们转换下思路,在授权登陆的时候,客户端带上之前在授权服务器里注册过的AppId、AppSecret和登陆成功后的重定向URI,直接访问对应的授权服务器。授权服务器接收请求,转至登陆认证界面。 用户在授权服务器的认证中心下进行账号密码的录入,点击登陆时,授权服务器通过AppId和App_Secret来识别客户端,如果识别通过,将token通过hash fagment的形式附着在重定向地址上,返回给客户端。 在整个过程里,客户端都不接触用户名和密码,只需要保存授权服务器返回的token,在后续的API请求里带上token即可。 客户端发起的请求如下:
授权服务器返回的信息:
这种方式最大的缺点是token通过重定向地址直接返回客户端,安全性差,容易被人通过浏览器的历史记录或者访问日志里窃取 授权码模式
(此图片来源于网络,如有侵权,请联系删除! )
基于第二种模式里,token是直接通过URL地址返回给客户端导致安全性差的问题,那么我们可以变通一下,在授权服务器重定向至客户端时,不要直接带上token,带上某个特殊的授权码code表示服务器已经同意授权认证。 接着让客户端的服务器后台发起请求,把客户端在授权服务器里注册过的AppId、AppSecret、接收的授权码code带上,由授权服务器通过Id和Secret密钥对code进行解密验证,如果验证通过表示当前请求的客户端是正确的,接着再返回实际的token给客户端即可。 客户端第一次发起的请求:
授权服务器返回的信息:
客户端第二次发起的请求:
授权服务器最终返回的信息:
授权码认证模式里授权服务器不直接返回token,而是返回授权码,由开发者服务器带上相关信息后台发送请求,授权服务器进行单独的授权认证之后才返回token。通过两次请求再返回token,保证了安全性。 微信认证方式
(此图片来源于网络,如有侵权,请联系删除! )
微信的登陆认证方式,其实跟授权码模式很相似,区别在于简化了获取授权码code的过程,不需要带上账号密码,调用wx.login就可以从微信服务器上返回授权码,并且整个过程不需要繁琐地重定向,通过后台请求就可以获取token。 这四种认证方式对应的关系如下图所示:
(此图片来源于网络,如有侵权,请联系删除! ) |
免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。
本站为避免不必要的纷争,分享的所有资源中一切可能有版权风险的资源将全部转载自第三方网站或平台,站长只为大家提供相关资源的介绍和跳转引导。 因可能有疏忽大意,所以如有遗漏资源侵犯了您的合法权利,请联系站长删除。
【小程序源码网资源下载使用说明】:
本站所分享的一切QQ小程序源码,thinkphp整站源码,微信小程序源码,图文教程等资源仅供用户学习参考使用,任何人不得作其他用途,违者自行承担所有责任。
【小程序源码网毫无人看的介绍】:
本站又称Z站,原名贼娘网,开站于2018年,换过三任站长,目前站长是第四任站长,本站是一个主要分享免费开源小程序源码/网站源码/免费素材/教程资源的网站,主要小程序资源有用于学习的小程序源码,也有正版原创可商用的小程序源码,是一个公益博客型网站。
【小程序源码网原创源码版权申明】:
未经小程序源码网许可,任何人不得擅自使用本站原创首发源码进行商业行为(除本站VIP用户在期限内,版权无使用限制),否则将依法承担相应赔偿责任。
【小程序源码网转载文章版权申明】:
本站所转载的QQ小程序或微信小程序源码与其他资源仅供学习,任何人不得作其他用途,违者自行承担所有责任。
【小程序源码网站长最后的屁话】:
如有您认为本站有任何侵犯您合法权益的文章,或者您有什么疑问需求,欢迎联系站长QQ,站长24小时在线,备注公司名称和源码版权问题或者需要小程序定制开发等站长业务类型可急速处理,如果您只是交流小程序的一些开发问题或源码问题可以加入QQ群讨论,就不用加站长啦,对于白嫖党,QQ群才是处理问题的天堂,当然站长也欢迎大家骚扰~
小程序源码网 » 浅谈微信小程序登陆与Oauth