当前位置: 首页 > 科技观察

你了解二维码扫描背后的登录原理吗?

时间:2023-03-14 15:11:01 科技观察

现在扫码登录比较普遍,比如微信、支付宝等PC端登录,貌似每个APP都支持扫码登录。作为技术人员,我不知道如果你对这背后的实现逻辑感兴趣。反正我一直很好奇这背后的实现。最近刚好看到一个关于扫码登录原理的视频,所以整理了这篇文章,希望对大家有所帮助。本文分为三个主题:什么是二维码。一种基于令牌的移动端认证机制。二维码扫描登录原理。一、什么是二维码二维码也称二维条码。常见的二维码是QRCode。QR的全称是QuickResponse。是近年来在移动设备上非常流行的一种编码方式。它比传统的BarCode条码能存储更多的信息,代表更多的数据类型。----来自百度百科关于商品,一般都有条形码,也叫一维码,条形码只能代表一串数字。二维码比条码要丰富得多,可以存储数字、字符串、图片、文件等,比如我们可以将www.baidu.com存储在二维码中,扫描二维码就可以得到百度的地址。文字上可能难以理解,可以百度一下:曹财二维码,一款二维码生成和分析工具,玩过你就知道什么是二维码了。2、移动端基于token的认证机制在了解扫码登录原理之前,有必要先了解一下移动端基于token的认证机制,这对于理解扫码登录的原理很有帮助。基于token的认证机制与我们常用的账号密码认证方式有很大区别。安全系数高于账户密码。如果每次验证都通过账号密码,会增加被劫持的概率。基于令牌的认证机制的流程图如下图所示:基于令牌的认证机制是基于令牌的认证机制。首次使用仅需输入账号密码,后续使用无需输入账号密码。”其实在登录的时候,不仅要传入账号和密码,还要传入手机的设备信息。服务器验证账号和密码无误后,服务器会做两件事事物。”首先,将帐户与设备相关联。从某种意义上说,设备信息代表了账户。二、生成token令牌,并将token与账户和设备相关联,类似于key/value,token作为key,账户和设备信息作为value,持久化在磁盘上。将token返回给移动端,移动端将token存储在本地,然后移动端通过token访问服务端API。当然除了token之外,还需要携带设备信息,因为token可能会被劫持。带上设备信息后,即使token被劫持也没关系,因为设备信息是唯一的。这是一种基于令牌的身份验证机制。将账户密码替换为token和设备信息,提高安全系数。不要小看这个令牌。token是身份证明,扫码登录时会用到。3.二维码扫码登录原理好。了解了移动端基于token的认证机制后,我们就进入我们的主题:二维码扫描登录的原理。首先我们来看一下二维码扫描登录的流程图:整个扫描登录的过程可以分为“待扫描、扫描待确认、待确认”三个阶段。让我们一一了解这三个阶段。“1.待扫阶段”待扫阶段为流程图中的1~5阶段,即生成二维码阶段。这个阶段与移动端无关,是PC端与服务器端的交互过程。首先,PC携带设备信息向服务器发起二维码请求,服务器会生成一个唯一的二维码ID,可以理解为UUID,并将二维码ID与PC设备信息相关联,即类似于移动端登录有点类似。PC端收到二维码ID后,将二维码ID以二维码的形式显示出来,等待移动端扫码。此时PC端会启动一个定时器轮询二维码的状态。“如果手机端不扫描,那么二维码会在一段时间后失效。”流程图第6-10阶段“2.扫描待确认阶段”,当我们在PC端登录微信,手机扫码后,PC端的二维码会变成已扫描,请在手机端确认。这个阶段就是移动端和服务器交互的过程。首先,手机端扫描二维码获取二维码ID,“然后将手机端登录的信息凭证(token)和二维码ID作为参数发送给服务器”,此时手机必须是loggedinanddoesnotexist如果没有登录。服务器接受请求后,会将token与二维码ID关联起来。为什么需要关联呢?想一想,我们在使用微信的时候,移动端退出了,PC端也需要退出。这个联想有点棘手。然后它会“生成一个一次性token,返回给移动端,一次性token作为确认凭证”。PC端定时器会轮询二维码状态是否有变化,并更新PC端二维码为已扫描,请确认。“3.确认”流程图中的第11-15步,这是扫码登录的最后阶段,移动终端携带上一步获取的临时token,用于确认登录。“服务器验证完成后,第二个二维码状态,并为PC生成一个正式的token,后续PC将持有这个token访问服务器。”PC端的定时器轮询二维码的状态作为登录状态,并获取生成的token,完成登录,后续访问基于token。在服务端,和手机端一样,通过token以及二维码、PC设备信息、账号等信息,后续的鉴权也是基于token和设备信息,至此,扫码登录的原理就差不多了,扫码登录的原理理解起来并不难,和OAuth2.0有点相似,但是实现起来可能会比较复杂,希望这篇文章对你的学习或者工作有所帮助,同时也希望你能说说你的扫码登录工作经验在评论区,祝福。