3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事誰得? 私しか得しないニッチな技術で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

AWS Cognitoの認証フローをフローチャートにしてみた

Last updated at Posted at 2024-06-25

はじめに

AWS Cognitoを使った認証で、signInStepの遷移が分かりづらかったのでフローチャートにしました。

間違っている or 情報が古い可能性があるので、参考にする際はご注意ください。

フローチャート

ユーザー新規追加~初回ログイン

ユーザーのMFA設定には以下の5パターンがある
ユーザー追加~初回ログインの段階では、①か⑥にしかならない模様

  • ①SMS のみ
  • ②Authenticator アプリケーションのみ
  • ③SMS (利用可能な場合)、それ以外の場合は認証アプリケーション
  • ④認証アプリケーション (利用可能な場合)、それ以外の場合は SMS
  • ⑤希望する配信方法の選択
    →ユーザーにどちらで認証するか選択させ、選択した方法のフローに移行する
  • ⑥上記いずれにも該当しない
    ⑥-1. TOTPトークンを登録する前
    →この状態でログインしようとするとCONTINUE_SIGN_IN_WITH_TOTP_SETUPチャレンジが返され、TOTPトークンの登録が促される
    ⑥-2. TOTPトークン登録済み
    →この状態でログインしようとするとCONFIRM_SIGN_IN_WITH_TOTP_CODEチャレンジが返され、登録したTOTPトークンが求められる

ユーザーのMFA設定の変更

フローチャートではないが、補足情報として以下記載

  • ユーザープールでSMS, TOTPどちらも利用可能
  • ユーザーの電話番号が登録済み
  • ユーザーがTOTPトークンを登録済み

上記をすべて満たす場合、AdminSetUserMFAPreferenceCommandなどでユーザーのMFA設定を変更できる

import { AdminSetUserMFAPreferenceCommand } from "@aws-sdk/client-cognito-identity-provider";

const setPref = async () => {
  const SMSMfaSettings = {
    Enabled: false,
    PreferredMfa: false,
  }
  const SoftwareTokenMfaSettings = {
    Enabled: true,
    PreferredMfa: true,
  }
  const input = {
    SMSMfaSettings,
    SoftwareTokenMfaSettings,
    Username: "<UUID>",
    UserPoolId: "<ユーザープールID>",
  };
  const command = new AdminSetUserMFAPreferenceCommand(input);
  await client.send(command);
}
SMSMfaSettings Enabled true false true true true
PreferredMfa true false true false false
SoftwareTokenMfaSettings Enabled false true true true true
PreferredMfa false true false true false

AdminSetUserMFAPreferenceCommandAPIで⑥の状態にはできなさそう
一応、②の状態がほぼ⑥-2と同じと思われる

登録済みユーザーのログイン

CONTINUE_SIGN_IN_WITH_MFA_SELECTIONはデフォルト値を設定するわけではなく、
あくまでその回はどちらで認証するかを聞いているだけなので、
デフォルトも変えたい場合はAdminSetUserMFAPreferenceCommandなどのAPIを別途叩く必要がある

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?