登录链接
概要
登录链接,是无密码认证的一种。用户输入邮箱地址后,会向这个地址发送一个临时的登录用 URL。用户点击这个链接,本人确认就完成了,进入登录状态。因为不需要输入、记忆和管理密码,所以在用户体验和安全两方面都有优点。
机制
登录链接的认证流程由 4 个步骤构成。首先,用户在登录页面输入邮箱地址。接着,服务器生成密码学上安全的随机令牌,保存到数据库中。然后把包含这个令牌的 URL 用邮件发送出去。最后,用户点击链接后,服务器验证令牌的有效性,发放会话。
令牌会设定很短的有效期(几分钟到几十分钟左右),并采用用过 1 次就失效的设计。这样,即使链接被转发给第三方,能被滥用的时间也是有限的。
和密码认证的比较
在密码认证中,用户设定并记住密码,服务器保存它的哈希值。这种方式有 3 个结构性的弱点:密码的重复使用、被钓鱼窃取、数据库泄露时的风险。
用登录链接,这些弱点大多容易避免。因为密码本身不存在,所以不容易发生重复使用和泄露。把密码输入到钓鱼网站的风险也很小。另一方面,邮箱账号本身被盗时会有风险,所以最好给邮箱账号开启两步验证。
在什么样的服务中使用
登录链接被想降低用户注册门槛的服务,以及想避免密码管理成本的服务采用。它和使用公钥加密、基于 FIDO2/WebAuthn 的通行密钥并列,作为无密码认证的选择之一被使用。