SaaS产品架构设计之扫码登录

0 评论 140 浏览 0 收藏 9 分钟

扫码登录正在成为SaaS产品的默认登录入口,比账号密码更安全、体验更好。本文科普二维码本质,拆解微信开放平台与服务号两种扫码登录模式,以及账号绑定、移动端登录、租户识别等架构设计要点。

虽然使用账号密码登录大家都已经习惯,但是从体验和安全性上来说,显然扫码登录会更好。这也是为什么越来越多的平台开始将扫码登录作为了默认登录入口。本篇我们来讲讲扫码登录的逻辑,以及扫码登录的好处。

01 二维码科普

首先,进行一个科普,那就是所有的二维码本质上其实就是一串文本。如果你去用扫码工具去扫描任何二维码,实际上得到的都是文本。比如下面这个二维码扫码出来就是“产品海豚湾”5个字。

这里也推荐大家一个二维码生成工具:草料网,大家可以输入任何文字来生成一个二维码。那么二维码怎么能够实现身份识别呢?实际上,是手机扫码的时候,手机的客户端会向后台发送数据请求,实际上的身份识别都是在后台完成的 —— 因为在扫码登录前,二维码本身是不携带任何个人身份信息的。

02 微信扫码登录

如果我们的 SaaS 产品以 Web 端为主,那么 App 的活跃度可能不太高,

这个时候扫码登录最佳的选择是微信扫码登录 —— 这也是很多平台采取的方式。不过,微信扫码登录也有两种模式,一种是利用微信的开放平台能力,一种是利用微信服务号的能力,两种方式是有些区别的。

实际上,微信开放平台算是真正的微信扫码登录,正常的登录流程如下图所示。我们的平台需要调用微信的提供的接口生成一个二维码,然后用户使用微信扫码确认登录后才能登录成功。

这种方式的好处是,用户不需要提前注册,可以使用微信扫码登录快速成为某个应用新的用户,因此非常便捷。缺点是,假设我们平台有自己的账号体系的话,会无法区分微信来的用户和系统的用户是不是同一个用户。

典型的场景就是用户先用手机号注册了一个账号,然后忘记密码之类的,然后就又用微信扫码成为了一个新用户。这种情况下,相当于同一个人在平台有了多个账号,对于做用户行为分析其实是不太好的。这也是为什么很多平台会在扫码登录后,还让我们再次绑定手机号的原因。关于微信开放平台的扫码登录,大家可以阅读官方的文档:网站应用微信登录开发指南。

微信服务号登录则是利用微信服务号的临时二维码(参考:这一篇让你彻底搞懂微信生态里的二维码!),这种扫码登录的好处是对于未关注微信服务号的用户,会引导用户关注。因此,在很多引流场合会用这种方式。实际上和微信开放平台是类似的,用户扫码关注后(已经关注则直接跳过关注步骤进入微信服务号),微信后台会将用户的 openId(微信给某个服务号的唯一用户标识)给到我们的后台,然后后台就可以通过这个 openId 获取到用户的其他信息(昵称、头像等,但不包括手机号)。因为有微信方的唯一标识,所以也可以免注册创建新用户,或者识别到绑定的账号直接登录。比如人人都是产品经理社区就是采用这种登录方式。

扫码登录的时候,实际上是不知道用户属于哪个租户的,因此平台侧需要存储扫码获得的用户信息与租户员工账号的对应关系(可能一个用户对应多个租户)。扫码后,如果是只有一个租户,则可以直接登录到租户的业务系统;如果是对应多个租户,那么需要用户选择其中一个确认后再进入到对应租户的业务系统。

03 账号绑定微信

要实现 SaaS 平台账号和微信登录互通,就需要识别微信给的 openId 对应平台的具体账号,这就需要用户先使用账号登录后,再绑定微信。绑定之后,就可以通过微信扫码登录了。

当然,对于租户侧来说,还有有些差别。这里以服务号为例,一种方式是租户使用自己的服务号,另一种是使用平台统一的服务号。其实使用哪一方的服务号,对接过程都是相同的,不同的是如果使用租户自己的服务号,意味着每个租户都需要配置一遍对接的参数,对于租户来说不太方便。

同时,租户员工登录的时候,还是需要指定租户代码或者使用租户专用的登录入口登录,整体上不如平台统一的服务号方便。使用平台统一的服务号还有一个好处就是可以给平台积累 B 端员工粉丝,这样其实也多了一个触达客户的机会,比如在公众号上发产品的应用场景、使用说明、培训视频等内容。

账号绑定过程和扫码登录其实是类似的,就是在租户员工登录后,支持扫码绑定微信。实际上,就是将微信提供的 openId 和租户员工的个人账号绑定。需要注意的是,租户员工是可能更换微信的,因此需要支持解绑和重新绑定。

04 移动端登录

移动端使用第三方登录的话,是可以利用第三方平台的SDK(软件开发工具包)提供的授权登录直接登录的。这种登录方式是用户点击登录后,会跳转到第三方应用,确认授权登录再跳转到我们自己的应用完成登录。以微信为例,授权登录时还是会提供当前登录用户在我们应用对应的 openId,进而可以获取昵称、头像等信息,后面的过程和扫码登录其实是一样的。

这里需要注意,这个 openId 和服务号的 openId 不同。如果要保证服务号和移动端登录用户是唯一的,就需要将服务号和移动端应用绑定在一起,这个可以在微信开放平台(https://open.weixin.qq.com)完成。绑定好之后,微信方会提供一个 unionId 的字段来标识是否用户的唯一性。

如果是自己开发 App 的扫码登录功能,也就是使用 App 扫码登录自己的 SaaS 平台,那么相对会简单一些。在 Web 端登录入口生成一个临时二维码,然后 App 端扫码后将 App 端已经登录的账号信息进行加密等处理后提交到后台。后台验证相应的账号信息是否有效,如果有效,则可以在 Web 端确认登录成功。具体在技术实现上,已经有很成熟的方案,作为产品经理,把需求提给开发后,可以让他们提供对应的技术方案即可。

本文由人人都是产品经理作者【产品海豚湾】,微信公众号:【产品海豚湾】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash,基于 CC0 协议。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!