zoukankan      html  css  js  c++  java
  • 微信网页版扫码登陆的原理

    网页版微信刚推出时,无数人被它的登录方式惊艳了一下,不需要输入用户名密码,打开手机微信扫一扫,便自动登录。从原理上讲,二维码只能是一段文本的编码,如何用它实现快捷登录的呢?

    简易版(不涉及具体技术)

    打开微信网页版,会出现一个二维码,用非微信的扫码工具扫码,你会发现此二维码解析出来是类似如下的网址:

    https://login.weixin.qq.com/l/obsbQ-Dzag==

    接下来详细介绍一下扫码登录具体的每个步骤:

    ①:用户 A 访问微信网页版,微信服务器为这个会话生成一个全局唯一的 ID,上面的 URL 中 obsbQ-Dzag== 就是这个 ID,此时系统并不知道访问者是谁(所以不存在UID(user ID),只是一个随机的字母和数字组合)。

    ②:用户A打开自己的手机微信并扫描这个二维码,并提示用户是否确认登录。

    ③:手机上的微信是登录状态,用户点击确认登录后,手机上的微信客户端将微信账号和这个扫描得到的 ID 一起提交到服务器

    ④:服务器将这个 ID 和用户 A 的微信号(也有可能是token,反正是能标识用户的信息)绑定在一起,并通知网页版微信,这个 ID 对应的微信号为用户 A,网页版微信加载用户 A 的微信信息,至此,扫码登录全部流程完成

    扫码登录看起来神奇,主要是因为微信 APP 扫自家的码会做一些普通二维码软件不会做的额外的操作,那就是将当前已登录的微信和扫出来的 ID 提交到微信服务器,似的应用还有扫码支付、扫码加公众号等功能

    理论上③之后网页版可以直接登录,但是现在一般还有个确认过程。这可以避免一种情况:别人打开微信网页版,并将二维码发给你,由于你并不知道这是什么二维码就不小心扫了,如果没有确认过程,你的微信就直接登录到别人的电脑上了。

    值得注意的是这个过程中没有用户名密码等的验证,整个过程是没有逻辑漏洞的。
    因为这是基于一个信任来登陆的:即服务器相信能用微信扫码的话,扫码人就拥有这个微信账号的所有权。微信在首屏也提供了从手机上退出网页登陆的功能,这样即使是别人拿着你的手机扫了码在他的电脑上登陆你的微信,你也可以发现。

    参考链接:

    1. https://www.jianshu.com/p/7f072ac61763

    2.  https://www.zhihu.com/question/20368066

    3. https://www.zhihu.com/question/20368066/answer/23784468

  • 相关阅读:
    【转】PG数据库高级用法 之 12306 -- 链接
    javascript实现浏览器管理员工具鼠标获取Html元素 并生成 xpath
    java图片识别 [Tesseract-OCR]
    MongoDB从环境搭建到代码编程(Window 环境)
    webDriver + Firefox 浏览器 完美兼容
    SQLServer 将日期改造成标准日期格式(如: 2016/6 ->201606)
    Angularjs+bootstrap 实现横向滑屏
    js数组长度
    Angularjs 跨域post数据到springmvc
    Oracle 18c 数据库中scott用户不存在的解决方法
  • 原文地址:https://www.cnblogs.com/lfri/p/12550378.html
Copyright © 2011-2022 走看看