ASP.NET Core での多要素認証

完了

以前のユニットでは、ASP.NET Core Identity をカスタマイズして拡張しました。 このユニットでは、多要素認証とその ID での実装方法について説明します。

多要素認証

多要素認証 (MFA) は、サインイン時にユーザーに追加の形式の識別を求めるメッセージが表示されるプロセスです。 このプロンプトは、アプリのコード、ハードウェア トークン値、または生体認証スキャンの場合があります。 2 番目の種類の認証が必要な場合は、セキュリティが強化されます。

認証に必要な証明は、次の 3 種類に分類されます。

  • 自分が知っていること。パスワードやセキュリティの質問など。
  • ハードウェア トークンやスマートフォン上のアプリなど、持っているもの。
  • 自分に関すること。指紋や顔のスキャンなど。

MFA の効果の多くは、さまざまな 種類 の認証を使用することです。 敵対者は、パスワードや子供の頃のニックネームなど、知っている複数のものにアクセスできる可能性があります。 しかし、自分が "知っている" ことと、自分が "持っている" ものまたは "自分自身" についてのことの両方を侵害するのは困難です。

時間ベースのワンタイム パスワード

時間ベースのワンタイム パスワード (TOTP) は、30 秒後に期限切れになる一意の数値コードを生成する既知のアルゴリズムです。 アルゴリズムは、現在の時刻と一意のキーの 2 つの入力を受け取ります。

ユーザーは、登録時に TOTP 準拠アプリにキーを入力します。 このようなアプリには、次のものが含まれます。

  • Microsoft Authenticator。
  • Google Authenticator。
  • その他多数!

アプリにキーを入力すると、QR コードを使用して合理化できます。 アプリでは、キーと現在の時刻を使用して、30 秒ごとに一意のコードを生成して表示します。 アプリが生成するコードがサーバーが期待するコードと一致する場合、認証は成功します。 このアルゴリズムは、デバイスとサーバーのクロックのわずかな違いを許すように設計されています。

MFA の形式として、ユーザーは通常、パスワードと組み合わせて TOTP コードの入力を求められます。 パスワードは 知っているもので、コードは自分が 持っているものの証明です。 これは、アプリに格納されているキーを使用してコードを生成する唯一の方法です。

既定では、ID を使用する ASP.NET Core プロジェクト テンプレートには、TOTP 認証アプリに対する多要素認証のサポートが含まれます。 Razor Pages テンプレートの 認証アプリの構成 フォームには、トークン値をシードするための 32 文字の登録キーが表示されます。 ただし、テンプレートでは、既定では QR コードは生成されません。

SMS テキスト メッセージによって送信されるコードは、TOTP の一般的な代替手段です。 結局のところ、SMSメッセージを受け取る電話はあなたが 持っているものです。 ただし、MFA としての SMS は、敵対者が倒すのが比較的簡単です。 そのため、SMS コードは、セキュリティで保護された形式の MFA とは見なされなくなります。

概要

このユニットでは、多要素認証とは何か、および既定で ASP.NET Core Identity に実装される方法について説明しました。 次のユニットでは、既存の 認証アプリの構成 フォームをカスタマイズして、登録キーを含む QR コードを提供できます。