Web认证那些事儿(一)从用户体验感受认证流程

想写Web认证相关的笔记很久了。之前工作内容有部分跟这个主题相关,当时看到的知识点时是非常分散的,一会儿看到底层协议,一会儿看到最佳实践,就感觉内容特别多且杂,导致我相当一段时间都很混乱。

所以这篇笔记,我决定首先从用户交互方式和使用场景来介绍几种基本的认证方式,先搭个框子,更详细的内容以后分模块介绍。

假设一个业务场景,就用我们的甜品店在线订购网站举例吧:

  1. 初次光临的用户需要注册账号(用户名、密码等等)
  2. 用户登录账号后可下单购买甜品

就一个从这么简单的小站开始,我们决定在第一版网站中采用最原始的认证方式——用户名密码认证

后来,甜品店发展了会员制度,用户可以在个人账号下充值,于是涉及到金钱的问题,甜品店老板决定网站的安全性要提高。现在用户信息泄漏这么严重,很多人设秘密也不过脑子,经常重复使用密码,实在是太容易被盗号了。我们决定给网站认证方式升级。

这里需要引入两组概念:

  1. 身份认证的三个要素
  • Knowledge Factor - 用户知道的信息,比如密码、身份证号等(something the user knows)
  • Ownership Factor - 用户拥有的认证硬件,比如手机、USB Key等(something the user has)
  • Inherence Factor - 用户自身的唯一特征,比如指纹、DNA、脸、签名等(something the user is or does)。举个例子,手机指纹解锁就是通过这一要素进行认证。
  1. 三种强度递增的认证方案
  • 单因素认证(Single-Factor Authentication):在认证过程中只需提供上述三种要素中的一种即可。我们使用的用户名密码认证就属于单因素认证。
  • 双因素认证(Two-Factor Authentication):将上述三种要素的其中两种结合使用。举个例子,古老的网银一般都会需要用户密码和一个USB Key才可以通过认证。
  • 多因素认证(Multi-Factor Authentication):使用两种以上要素进行认证。

好,现在回到甜品店网站安全升级任务。显然,增加认证要素能一定程度提高认证强度,进而提高网站的安全性。所以我们决定将认证方案升级为用户名密码(Knowledge factor)加手机验证码(Ownership Factor)的双因素认证方案。

值得注意的是,双因素认证增加了用户登录网站要完成的操作,用户体验变差了。从日常使用中,我们不难发现,很多应用采取了折中的方式:正常登录仍然采取用户名密码单因素认证,如果监测到用户登录异常(比如在一个没见过IP地址登录或者频繁登录)时才要求进一步追加手机验证码认证。


网站又运营了一段时间后,我们发现很多新用户在浏览了网站想要下单时,发现注册操作要创建用户名还要求输入复杂的密码,如此繁琐的过程浇灭了潜在TA对甜品的热情。这怎么可以?为了留住潜在用户,简化注册流程,我们决定引入第三方登录,比如与微信、QQ、微博等认证接口集成。

这样新用户也可以方便快捷的创建账号下单啦。


随着我们线上订购网站越来越完善,甜品店业务也越做越大,从小小的店铺发展成了一个大型企业。为了支持企业正常运转,企业内部搭建了一套复杂运营管理体系。企业的员工会用到其中的很多不同的系统(比如财务、物流、人力资源等系统)完成日常的工作,如果每个系统都要单独登录认证员工信息才可以操作,工作效率会被大大降低。
基于这样的情形,我们决定引入单点登录,简称SSO(Single Sign On)。对于企业内部而言,各个系统之间是互相信任的,通过SSO,员工能在所有的内部系统认证其身份,从而免去重复登录。

从此,我们的甜品大亨带领一众员工走上人生巅峰~


本文我们从用户使用场景介绍了几种认证方式,包括用户名密码认证单点登录第三方登录等。之后便开始逐一深入介绍每种认证以及其延伸出的内容。

未完待续~