鉴权
我们需要一种方法来验证谁在调用 POST / 新闻通讯。
只有少数负责内容的人才能向整个邮件列表发送电子邮件。
我们需要找到一种方法来验证 API 调用者的身份——我们必须对他们进行身份验证。
怎么做?
通过请求他们提供一些他们独有的资源。
方法多种多样,但都可以归结为三类:
- 他们知道的信息(例如密码、PIN 码、安全问题);
- 他们拥有的信息(例如智能手机、使用身份验证器应用程序);
- 他们的身份(例如指纹、Apple 的 Face ID)。 每种方法都有其自身的弱点。
缺点
他们知道的事情
密码必须足够长——短密码容易受到暴力破解攻击。
密码必须是唯一的——公开的信息(例如出生日期、家庭成员姓名等)不应给攻击者任何“猜测”密码的机会。
密码不应在多个服务中重复使用——如果任何一个服务被泄露,您将面临授予所有其他共享相同密码的服务访问权限的风险。
平均而言,一个人拥有 100 个或更多的在线账户——他们不可能被要求记住数百个冗长而独特的密码。
密码管理器虽然有所帮助,但它们尚未成为主流,而且用户体验通常不太理想。
他们拥有的东西
智能手机和 U2F 密钥可能会丢失,导致用户无法访问其账户。它们也可能被盗或被盗,给攻击者提供了冒充受害者的机会。
他们是什么
与密码不同,生物识别技术无法更改——你无法“旋转”你的指纹,也无法改变视网膜血管的图案。
伪造指纹比大多数人想象的要容易——而且这些信息通常会被政府机构获取,并可能被滥用或丢失。
多因素身份验证
那么,鉴于每种方法都有其自身的缺陷,我们该怎么做呢? 好吧,我们可以将它们结合起来!
这几乎就是多因素身份验证 (MFA) 的精髓——它要求用户 提供至少两种不同类型的身份验证因素才能获得访问权限。