ASP.NET Core 中的多重身份验证

已完成

在上一单元中,自定义并扩展了 ASP.NET 核心标识。 在本单元中,你将了解多重身份验证及其在身份管理中的实现方式。

多重身份验证

多重身份验证(MFA)是在登录时提示用户输入其他形式的标识的过程。 此提示可能是应用提供的验证码、硬件令牌值或生物识别扫描。 如果需要第二种类型的身份验证,安全性会得到增强。

身份验证所需的证明分为三种类型:

  • 你知道的内容,例如密码或安全问题。
  • 你拥有的东西,如硬件令牌或手机上的应用。
  • 自身特征,例如指纹或面部扫描。

MFA 的大部分有效性都来自 使用不同类型的身份验证 。 攻击者可能能够访问你知道的多个内容,如密码和童年昵称。 然而,泄漏你所了解的信息和你所拥有的事物或你所处的状态则更为困难

基于时间的一次性密码

基于时间的一次性密码(TOTP)是一种众所周知的算法,它生成在 30 秒后过期的唯一数字代码。 该算法采用两个输入,即当前时间和唯一键。

注册时,用户会将密钥输入到符合 TOTP 的应用。 此类应用包括:

  • Microsoft验证器。
  • 谷歌验证器。
  • 其他许多应用!

使用 QR 码可以简化将密钥输入到应用中。 应用使用密钥和当前时间每 30 秒生成并显示唯一代码。 如果应用生成的代码与服务器期望的代码匹配,身份验证会成功。 该算法旨在容忍设备上时钟与服务器时钟之间的细微差异。

作为一种 MFA 的形式,用户通常会被提示输入 TOTP 代码,以与密码结合使用。 密码是 你知道的,代码证明了 你拥有的内容。 这是使用存储在应用中的密钥生成代码的唯一方法。

默认情况下,使用标识的 ASP.NET 核心项目模板包括对 TOTP 验证器应用的多重身份验证支持。 Razor Pages 模板的“配置验证器应用”表单显示了一个 32 个字符的注册密钥,用于为令牌值设定种子。 但是,默认情况下,模板不会生成 QR 码。

注释

短信发送的代码是 TOTP 的常见替代方法。 毕竟,接收短信的电话是 你拥有的。 但是,相对而言,用作 MFA 的短信比较容易让对手破解。 因此,不再将短信代码视为安全形式的 MFA。

概要

在本单元中,你了解了什么是多重身份验证,以及如何在默认情况下在 ASP.NET Core Identity 中实现。 在下一单元中,可以自定义现有的 “配置验证器”应用 表单,以提供包含注册密钥的 QR 码。