MFA がオプションではない認証を設定しています。つまり、登録後の最初のログイン試行から、ユーザーは MFA を設定するように求められます (この場合、時間ベースのワンタイム パスコード (TOPT) を使用します)。 . このため、次の手順が妥当であることがわかります。
1)ログインフォームからユーザー情報を取得 -Auth.signUp()
2) 手順 1) で取得したユーザー データから、ユーザーに TOPT ベースの MFA が既に設定されているかどうかを判断します。そうでない場合は、ステップ 3) またはステップ 4) に進みます。
3) TOPT が設定されていない場合は、この MFA 機能を設定するために QRCode が生成されるフォームにリダイレクトします。コードを確認したら、ユーザーをログインさせます。
4)TOPTが設定されている場合は、パスコードを要求します。確認後、ユーザーをログインします。
私のジレンマ: ステップ 2) の情報、つまり、ユーザーがまだ認証されていない状態でユーザーに TOPT ベースの MFA が設定されているかどうかを取得できないようです。challengeName
手順 1) でペイロードで取得したフラグは、 Auth.signUp()
MFA が有効かどうか ( 'MFA_SETUP'
) に関する情報のみを提供し、TOTP ベースの MFA が既に設定されているかどうかについては情報を提供しません。そのために、メソッドAuth.getPreferredMFA()
はトリックを行うものですが、渡されるユーザーオブジェクトが認証された (または既にログインしている) ユーザーを表す場合にのみ機能します。ログインしようとしている (まだログインしていない) ユーザーに対して TOTP MFA が設定されているかどうかを判断する方法はありますか?
また、この問題に取り組むための他の解決策は大歓迎です。最初のログイン自体から MFA が必須であるという、私と同じシナリオに遭遇した人がいるはずです。