ASP.NET Core 中的多重要素驗證

已完成

在上一個單元中,您已自訂和擴充 ASP.NET Core Identity。 在本單元中,您會了解多重要素驗證,以及如何在 Identity 中實作。

多重要素驗證

多重要素驗證 (MFA) 是一種程序,此程序會讓系統在使用者登入時提示使用者提供其他形式的識別。 此提示可能要求輸入來自應用程式的代碼、硬體權杖值或生物特徵辨識掃描。 當您需要第二種類型的驗證時,安全性會增強。

驗證所需的證明分為三種類型:

  • 您既有的資訊,例如密碼或安全性問題。
  • 您既有的裝置,例如硬體權杖或手機上的應用程式。
  • 您自身,例如指紋或臉部掃描。

MFA 的大部分效率來自於使用不同類型的驗證。 敵人可能能夠存取您知道的多個專案,例如您的密碼和童年昵稱。 不過,要入侵您知道的東西和擁有或擁有的東西,會更加困難。

限時單次密碼

限時單次密碼 (TOTP) 是一種已知的演算法,可以產生 30 秒後到期的唯一數值代碼。 演算法接受兩種輸入:目前時間和唯一金鑰。

註冊時,用戶會將密鑰輸入至符合 TOTP 規範的應用程式。 這類應用程式包括:

  • Microsoft Authenticator。
  • Google Authenticator。
  • 其他許多項目!

您可以使用 QR 代碼簡化將金鑰輸入應用程式的程序。 應用程式會使用金鑰和目前時間,每隔 30 秒產生並顯示唯一代碼。 如果應用程式產生的代碼符合伺服器預期的內容,驗證就會成功。 此演算法的目的是容忍裝置和伺服器上時鐘之間的細微差異。

採用 MFA,系統通常會提示使用者輸入 TOTP 代碼與密碼組合。 密碼是您既有的資訊,而代碼是您既有的裝置證明。 這是產生程式代碼的唯一方式,其中包含儲存在應用程式中的密鑰。

根據預設,使用身分識別的 ASP.NET Core 專案範本會包含對 TOTP 驗證器應用程式的多重要素驗證支援。 Razor Pages 範本的 [設定驗證器應用程式] 表單會顯示 32 個字元的註冊金鑰,以植入權杖值。 不過,範本預設不會產生 QR 代碼。

注意

SMS 文字簡訊所傳送的代碼是 TOTP 的常見替代方案。 之後,接收 SMS 簡訊的電話就是您既有的裝置。 但使用 SMS 作為 MFA,敵人很容易就能破解。 因此,SMS 代碼不再被視為 MFA 的安全形式。

摘要

在此單元中,您已了解什麼是多重要素驗證,以及此功能在 ASP.NET Core Identity 中的預設實作方式。 在下一個單元中,您可自訂現有的 [設定驗證器應用程式] 表單,以提供包含註冊金鑰的 QR 代碼。