如何实现移动端-Web端扫码登陆

举报
jcLee95 发表于 2023/06/08 21:16:23 2023/06/08
【摘要】 如何实现Web端扫码登陆 本文载录自我的另外一篇博文:用户认证、权限、安全原理详解 作者: jcLee95 博客主页:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 7.1 前提:在移动客户端上认证用户身份这也就是需要先在一个移动设备上进行登陆,一般是专用应用而不能是移动端的浏览器页面。 7.2 扫码登陆流程在阅读这部分...
如何实现Web端扫码登陆

本文载录自我的另外一篇博文:用户认证、权限、安全原理详解
作者: jcLee95
博客主页:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343

7.1 前提:在移动客户端上认证用户身份

这也就是需要先在一个移动设备上进行登陆,一般是专用应用而不能是移动端的浏览器页面。

7.2 扫码登陆流程

在阅读这部分内容前请确保你已经完全掌握认证的含义,关于认证已在文章开篇有详细的讲解。

7.2.1 认证前从客户端发起请求:

1.png

一旦前端对于从服务端发来的 Key ,便对其进行编码成一个二维码,如 qrCode,用户用户在移动端进行扫码:

jacklee-login-qrcode

扫码登陆:这是笔者为了说明而做的一个模拟扫码页面

安全起见,二维码是有有效期的,可以手动设置一个有效期,也可以给定一个刷新按钮来从服务器更新二维码信息并在客户端中重新渲染。

7.2.2 用户在移动设备扫码

这一阶段中:

  • 对于 Web客户端 而言,客户端拿着自己从服务端获取的Key向服务端发起轮询已了解自己在移动设备上是否完成身份认证。
  • 对于 移动端 而言,当移动设备上进行扫码后,移动端便获取了Web客户端从服务器获取的Key。为了确保安全,移动端不应急于提交数据而应先向移动设备操作者确认登陆意图,对于安全较高的应用情景如银行帐户的登陆等,还需要做进一步的确认如人脸验证语音验证短信验证等等。验证完成后,将从PC客户端扫码获取的key与移动端自己存储的身份信息(有可能也是一个令牌之类的签名工具)发送的服务端

2.png

7.2.3 服务端响应客户端的轮询

对于 服务端而言,它时刻监听着来自多个移动端和Web客户端发过来的请求(可能有多个用户同时在进行认证操作)。 一旦监听到了移动端传来的key用户身份签名,意味着之前发给Web客户端用户生成二维码的Key被移动端扫描登陆中,这时需要响应此Key对应的客户端的轮询。可想而知为了额能确定相应的到底是哪一个Web客户端的轮询,这就要求服务端的Key必须是全局唯一的。

3.png

7.2.4 Web客户端完成登陆

当客户端在某次轮询后得到了签名工具(令牌 token)后,意味着以后可以使用该令牌对需要回传服务器的数据进行身份签名。这时可以提示用户“扫码登陆成功”,并跳转到相关的页面。但是需要注意的是,处于安全考虑仍不建议将与用户相关的重要数据存储在 token 中,因为这样容易导致 token 被破解带来的用户信息泄露。此处妥当的做法仍然是,将 token 用作某个时间端内在服务端标识某特定用户的键,但其中所有与用户相关的信息(值)仍然是存储在服务端的。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。