[第7回] Multi-factor 認証 (Multi-factor authentication)

AWS Amplify

はじめに

皆さん。こんにちは!

DreamHanksのエルムです。

今回は Multi-factor 認証の作成方法について説明していきます。

前回の記事は既存のログインシステムとの併用 – Facebookログインです。

 

Multi-factor 認証 (AUTHENTICATION)

MFA(Multi-factor 認証)は、ユーザー名(またはエイリアス)とパスワードだけに頼らず、認証方法を追加することで、アプリのセキュリティを高めます。AWS Amplifyでは、Amazon Cognitoを使用してMFAを提供しています。

Amazon CognitoでMFAを有効にしたら、MFAで動作するようにアプリを設定することができます。

 

TOTPのセットアップ

TOTP(Time-based One-Time Password)では、ユーザー名とパスワードが認証された後に、(TOTP)パスワードを使用して認証を完了するよう、アプリのユーザーに要求します。

アプリ内でユーザーにTOTPを設定することができます。

 

MFAタイプの設定

Amazon Cognitoがサポートする複数のMFAタイプ。好みの方法をコードで設定することができます。

 

現在の希望するMFAタイプをコードで取得することができます:

 

ユーザーがMFAタイプを選択できるようにする方法

複数のMFAタイプを使用する場合は、アプリのユーザーに必要な認証方法を選択させることができます。aws-amplify-reactパッケージで提供されているSelectMFAType UI Componentは、利用可能なMFAタイプのリストをレンダリングします。

 

高度なユースケース

 

カスタム認証のチャレンジでサインイン (Sign-in with custom auth challenges)

ユーザー名とパスワードを入力してサインインすると、直接サインインするか、認証を受ける前にいくつかの課題に合格するよう求められます。

Auth.signInから返されるユーザーオブジェクトには、challengeNamechallengeParamが含まれています。この2つのパラメータをもとに、対応する関数を呼び出すことができます。

 

ChallengeName:

  • SMS_MFA: SMSメッセージから受け取ったコードを入力する必要があります。Auth.confirmSignInでコードを送信することができます。
  • SOFTWARE_TOKEN_MFA: OTP(one time password)を入力する必要があります。Auth.confirmSignInでコードを送信することができます。
  • NEW_PASSWORD_REQUIRED: これは、Cognitoコンソールを通じてユーザーアカウントが作成されたときに発生します。ユーザーは新しいパスワードと必要な属性を入力する必要があります。それらのデータをAuth.completeNewPasswordで提出することができます。
  • MFA_SETUP: これは、MFAの方式がTOTP(the one time password)で、ユーザーがパスワードを生成するためにいくつかのステップを踏まなければならない場合に起こります。Auth.setupTOTPでセットアップ作業を開始できます。

 

以下のコードはデモ用のものです:

 

Lambda Triggerのカスタム検証データによるサインイン

ユーザー名、パスワード、validationDataを持つオブジェクトを渡して、PreAuthentication Lambda triggerに送信することもできます。

 

終わりに

 

今回の記事は以上になります。

次回は[第8回] パスワード & ユーザー管理を学びましょう。

ご覧いただきありがとうございます。

 

 

コメント