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 コードを提供できます。