网站客服:zx81024163 |

详解二维码扫描登录原理

2023-11-08 00:02:10发布    浏览542次    信息编号:82483

友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

详解二维码扫描登录原理

在日常生活中,二维码出现在很多场景中,比如超市支付、系统登录、应用程序下载等。了解二维码的原理可以为技术人员在选择技术时提供新的思路。 对于非技术人员来说,除了澄清疑虑外,还可以指导他们更好地识别生活中遇到的各种二维码,防止上当受骗。

二维码大家都很熟悉。

购物扫二维码,吃饭扫二维码,乘车扫二维码。

在扫码的过程中,您可能会有疑问:这个二维码安全吗? 我的个人信息会被泄露吗? 更深入的用户还会考虑:我是否也可以创建一个二维码来推广我的系统?

这时候你就需要了解二维码背后的技术和逻辑了!

二维码最常用的场景之一是通过移动应用程序在PC端或WEB端扫描二维码登录同一系统。 例如,用手机扫描微信二维码即可登录PC端微信,用手机扫描淘宝网二维码即可登录PC端淘宝。 那么我们就来看看二维码登录是如何进行的吧!

二维码登录的本质

二维码登录本质上是一种登录认证方式。 既然是登录认证,那么就只有两件事了!

告诉系统我是谁

向系统证明我是谁

例如,使用账号和密码登录时,账号告诉系统我是谁,密码向系统证明我是谁; 例如,使用手机验证码登录时,手机号码告诉系统我是谁,验证码向系统证明我是谁;

那么扫描二维码登录这两件事如何做到呢?我们一起思考一下

使用手机App扫描PC端二维码。 手机端确认后,PC端账户登录成功! 这里,PC端登录的账号必须与手机端登录的账号一致。 在手机上用A账户无法登录,扫描二维码登录后,在PC上登录了B账户。

所以,首先就是告诉系统我是谁,这样就比较清楚了!

通过扫描二维码,将手机上的账户信息传输到PC上。 至于如何转移,我们稍后再说。

第二件事是向系统证明我是谁。 在二维码登录过程中,用户没有输入密码、验证码或任何其他代码。 这是如何证明的?

有同学可能会疑惑,扫描过程中密码是否传输到PC上呢? 但这是不可能的。 因为这样太不安全了,客户端根本不会存储密码。 我们仔细想一想,其实手机APP已经登录了,也就是说手机已经通过了登录认证。 只要我扫描二维码,确认是这部手机,是这个账号操作的,其实就可以间接证明我是谁。

了解二维码

那么如何确认呢? 我们稍后会详细解释,但在此之前我们需要先了解一下二维码! 在了解二维码之前,我们先来了解一下一维码!

所谓一维码就是条形码,超市里的条形码——相信大家对此都非常熟悉。 条形码实际上是一串数字,存储了产品的序列号。

二维码实际上与条形码类似,只不过它不一定存储数字,也可以是任何字符串。 您可以将其视为字符串的另一种表示形式。

在搜索引擎中搜索二维码,可以找到很多在线生成二维码的工具网站。 这些网站都可以提供字符串和二维码转换的功能,比如饲料二维码网站。

您可以在左侧的输入框中输入您的内容。 可以是文本、URL、文件……然后就可以生成代表它们的二维码

你还可以上传二维码并“解码”,然后就可以解析出二维码的含义。

系统认证机制

了解了二维码,我们再来看看移动互联网下的系统认证机制。

正如我们之前所说,出于安全考虑,它不会在手机上存储您的登录密码。 但在日常使用中,我们要注意的是,只有下载应用程序后首次登录时,才需要使用帐号和密码登录。 之后,即使应用进程被杀,或者手机重启时,也无需再次输入账号和密码,即可自动登录。

其实这背后是一个基于token的认证机制。 我们来看看这个机制是如何运作的。

当使用账号和密码登录时,客户端会将设备信息传递给服务器。

如果账号密码验证通过,服务器会将账号与设备绑定并存储在数据结构中。 该数据结构包含账户ID、设备ID、设备类型等。

const token = {
  acountid:'账号ID',
  deviceid:'登录的设备ID',
  deviceType:'设备类型,如 iso,android,pc......',
}

然后服务器会生成一个token并用它来映射数据结构。 这个token实际上是一个具有特殊含义的字符串。 它的含义是通过它可以找到对应的账户和设备信息。

客户端获取到token后,需要保存在本地,每次访问系统API时都携带token和设备信息。

服务器可以通过token找到与其绑定的账户和设备信息,然后将绑定的设备信息与客户端每次发送的设备信息进行比较。 如果相同,则验证通过,返回AP接口响应数据。 ,如果不同,则表示验证未通过,拒绝访问。

从前面的流程我们可以看出,客户端没有也不需要保存你的密码。 相反,它保存了令牌。 有的同学可能觉得这个token这么重要,万一被别人发现了怎么办? 其实知道也没关系,因为设备信息是唯一的。 只要别人不知道你的设备信息,而别人使用其他设备访问,验证就不会通过。

可以说,客户端登录的目的就是为了获取自己的token。

那么在扫描二维码登录的过程中,PC如何获取自己的token呢? 手机端是不可能直接将其token转移到PC端使用的! 该令牌只能是某个客户私有的,不能被其他人或其他客户使用。 在分析这个问题之前,我们需要先梳理一下扫描二维码登录的大致步骤,这样可以帮助我们梳理整个流程,

扫描二维码登录的一般步骤及流程

扫码前,手机应用程序已登录,PC端会显示二维码,等待扫描。

在手机上打开App,扫描PC上的二维码。 扫描完成后会提示“已扫描,请在手机端点击确认”

用户在手机上点击“确认”。 确认后,PC登录成功。

可以看到,二维码中间有三种状态:等待扫描、扫描等待确认、确认。所以可以想象

二维码背后必须有一个唯一的ID。 生成二维码时,也会生成该ID,并与PC上的设备信息绑定。

用手机扫描此二维码

二维码切换至已扫描待确认状态。 这时,账户信息就会和这个ID绑定。

当手机确认登录时,会生成PC登录时使用的token并返回给PC。

好了,现在基本思路已经清楚了,接下来让我们把整个过程说得更具体一些。

二维码准备

看二维码的不同状态,首先是等待扫描状态,此时用户打开PC,切换到二维码登录界面。

PC向服务器发起请求,告诉服务器我要生成用户登录的二维码,并将PC设备信息传递给服务器。

服务器收到请求后,生成二维码ID,并将该二维码ID与PC设备信息绑定。

然后将二维码ID返回给PC

PC收到二维码ID后,生成二维码(二维码必须包含ID)

为了及时获知二维码的状态,客户端显示二维码后,PC会不断轮询服务器,例如每秒一次,请求服务器告知当前二维码的状态及相关信息。

二维码已准备就绪,现在可以扫描它

扫描状态开关

1、用户使用手机扫描PC上的二维码,通过二维码内容获取二维码ID。

2、然后调用服务器API将移动终端的身份信息和二维码ID发送到服务器。

3、服务器收到后,可以将身份信息与二维码ID绑定,生成临时token。然后返回给移动端

4、由于PC一直在轮询二维码状态,如果此时二维码状态发生变化,可以更新界面上扫描到的二维码状态。

那么为什么我们需要给手机返回一个临时token呢? 临时令牌与令牌相同。 这也是一个身份凭证。 不同的是只能使用一次,使用后就失效。

第三步,返回临时token,以便手机作为下一步的凭证使用。 这样可以保证扫描二维码和登录两步操作是从同一部手机发出的。

状态确认

最后一步是确认状态。

收到临时令牌后,手机会弹出确认登录界面。 当用户点击确认时,手机会携带临时token去调用服务器的接口,告诉服务器我已经确认了。

服务器收到确认后,根据二维码ID绑定的设备信息和账户信息,生成用户PC登录的token。

此时,通过PC端的轮询接口,可以知道该二维码的状态已变为“已确认”。 并且可以从服务器获取用户登录令牌。

至此,登录成功,后端PC可以使用该token访问服务器端资源。

扫码的基本流程已经讲解过了,但有些细节还没有深入介绍。 例如,二维码的内容是什么?

如果用户取消扫码确认步骤怎么办?这些细节留给大家思考

总结

我们从登录的本质出发,探讨如何通过扫描二维码登录。

告诉系统我是谁

向系统证明我是谁

在这个过程中,我们首先简单讲了两个必备知识,

那么我们以二维码状态为轴,分析其背后的逻辑:扫码登录是通过token认证机制和二维码状态变化来实现的。

需要指出的是,上述登录流程适用于同一系统的PC端、WEB端、移动端。

我们平时还有一个比较常见的场景,那就是通过第三方应用扫描二维码登录。 比如极客时间/掘金可以选择通过微信/QQ扫描二维码登录,那么这种通过第三方应用扫描二维码登录的原理是什么呢?

有兴趣的同学可以思考、研究一下。 欢迎您在评论区留下您的意见。

-结尾-

阅读、点赞、转发是对我最大的鼓励。 您的支持是我坚持下去的最大动力!

提醒:请联系我时一定说明是从星空网上看到的!