码迷,mamicode.com
首页 > 移动开发 > 详细

关于《手机扫描电脑二维码登录原理》的学习

时间:2017-03-24 22:42:38      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:超时   限制   交互   长连接   随机   速度   images   关系   过程   

技术学习:手机扫描电脑二维码登录原理

通用地实现方式(以登录电脑浏览器网页版微信为例):

  1.每打开一次微信(Client)电脑浏览器网页时会随机生成一个含有唯一uid的二维码,每次刷新页面都会不一样(*这个可以保证一个uid只可以绑定一个帐号和密码,如果一个uid可以绑定多个帐号和密码,那么很可能你的电脑会登录别人的微信)

    ps: 返回uid的目的是识别用户身份,而且实际上打开这个页面时浏览器已经和Server创建了一个长连接等待确认信息。这个页面在加载完毕时,也已经把很多登录后才需要的相关资源都预先加载进来了,所以长连接等待登录用户得到确认后展示用户信息速度很快,因为无需刷新页面和加载头像外的其他资源。

  2.当用户在手机版微信访问这个页面进行确认时,Server已经同时获得了客户端信息,并通过之前保持的长连接告知浏览器。

  3.浏览器展示完长连接里包含的用户信息(头像等)后,会重新开一个长连接等待客户端(手机)的确认操作。从安全角度来说,无论如何都不会让客户端(网页)获得微信账号和密码的。[要知道,密码这玩意儿腾讯自己都不敢保存]

    *长连接实际是通过堵塞等待实现近乎实时的获得信息

    *Open API 一般是通过授权令牌(Token)来解决的,原理是当用户通过授权后,分配一个限定条件下的令牌。(限制本机访问,限制授权有效时间,限制同时登录设备数等)

     使获得授权的用户仅在有限的前提下就能访问相关服务。

    *同时,整个授权过程的验证部分都在手机端进行,有效杜绝了PC端上泛滥的各类木马,安全工具的监听,大大降低了被盗号的风险。

总结

  核心过程打开网页版微信登录界面后,浏览器会获得一个临时id,通过长连接等待客户端扫描带有此id的二维码后,从长连接中获得客户端上报给Server的帐号信息进行展示。并在客户端点击确认后,获得服务器授权的令牌(Token),进行随后的信息交互过程。(在超时,网络断开,其他设备上登录后,此前获得的令牌或丢失、或失效,对授权过程你形成有效的安全防护)

还没理解吗?没关系,看我根据思路画的图:

技术分享技术分享

在CNODE上看到一位网友的想法:“用轮询做,大都是这样做,不然就是用长连接。首先扫码,二维码里面带有一个你生成的随机数,当微信回调你的服务器的时候进行验证,顺便记录下随机数,前台拿随机数去判断有没有登录成功。”

开始在网上搜集相关资料,最后进行整理。

关于《手机扫描电脑二维码登录原理》的学习

标签:超时   限制   交互   长连接   随机   速度   images   关系   过程   

原文地址:http://www.cnblogs.com/tim100/p/6613709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!