ASP.NET Core での多要素認証
前のユニットでは、ASP.NET Core の ID をカスタマイズして拡張しました。 このユニットでは多要素認証について、および Identity での実装方法について学習します。
多要素認証
多要素認証 (MFA) とは、ユーザーがサインインするときに追加の形式での本人確認を要求するプロセスです。 このプロンプトは、アプリからのコード、ハードウェア トークン、または生体認証スキャンの場合があります。 2 つ目の形式の認証を要求する、セキュリティが強化されます。
認証に必要な証明は、次の 3 種類に分類されます。
- あなたが知っているもの。パスワードやセキュリティの質問などです。
- あなたが持っているもの。ハードウェア トークンやスマートフォン上のアプリなどです。
- あなた自身。指紋や顔のスキャンなどです。
MFA の有効性の多くは、さまざまな "種類" の認証を使用することによります。 敵対者は、あなたが知っている複数のもの (パスワードや子供の頃のニックネームなど) にアクセスできるかもしれませんが、あなたが、知っているものと、持っているものまたはあなた自身の両方を侵害することは困難です。
時間ベースのワンタイム パスワード
時間ベースのワンタイム パスワード (TOTP) は、よく知られたアルゴリズムで、30 秒間で有効期限が切れる一意の通知コードが生成されます。 このアルゴリズムは、現在の時刻と一意のキーという 2 つの入力を受け取ります。
登録時に、ユーザーはキーを TOTP 準拠のアプリに入力します。 このようなアプリには、次のものが含まれます。
- Microsoft Authenticator
- Google Authenticator
- その他多数
アプリへのキーの入力は、QR コードを使用して合理化できます。 アプリでは、キーと現在の時刻を使用して、30 秒ごとに一意のコードが生成および表示されます。 アプリで生成されるコードがサーバーにより予期されたものと一致すると、認証が成功します。 このアルゴリズムは、デバイスとサーバーのクロックの間のわずかな違いを許容するように設計されています。
MFA の形式として、通常、ユーザーはパスワードと組み合わせて TOTP コードの入力を求められます。 パスワードは "あなたが知っているもの" であり、コードは "あなたが持っているもの" の証明です。 これは、コードを生成する唯一の方法が、アプリに格納されているキーであるためです。
既定では、Identity を使う ASP.NET Core プロジェクト テンプレートには TOTP 認証アプリのための多要素認証サポートが含まれます。 Razor Pages テンプレートの "オーセンティケーター アプリの構成" フォームでは、トークン値をシードするための 32 文字の登録キーが提供されます。 ただし、このテンプレートでは、既定で QR コードは生成されません。
Note
SMS テキスト メッセージによって送信されるコードは、TOTP の一般的な代替手段です。 結局のところ、SMS メッセージを受け取る電話は "あなたが持っているもの" です。 ただし、MFA としての SMS は、比較的簡単に敵対者に倒されてしまいます。 そのため、SMS コードはセキュリティで保護された MFA 形式とは見なされなくなりました。
まとめ
このユニットでは、多要素認証とは何か、および ASP.NET Core Identity では既定でどのように実装されるかについて学習しました。 次のユニットでは、既存の [Configure authenticator app] (Authenticator アプリの構成) フォームを、登録キーを含む QR コードが提供されるようにカスタマイズできます。