View a markdown version of this page

ユーザープールによる認証について知っておくべきこと - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ユーザープールによる認証について知っておくべきこと

Amazon Cognito ユーザープールを使用した認証モデルの設計では、以下の情報を考慮してください。

マネージドログインとホストされた UI の認証フロー

マネージドログインには、クラシックのホストされた UI よりも多くの認証オプションがあります。例えば、ユーザーはマネージドログインでのみ、パスワードなしの認証とパスキー認証を実行できます。

AWS SDK 認証でのみ使用できるカスタム認証フロー

マネージドログインまたはクラシックのホストされた UI で、カスタム認証フローや Lambda トリガーによるカスタム認証を行うことはできません。カスタム認証は AWS SDK による認証で利用できます。

外部 ID プロバイダー (IdP) によるサインイン用のマネージドログイン

AWS SDKs による認証では、サードパーティーの IdPs を介してユーザーにサインインすることはできません。マネージドログインまたはクラシックのホストされた UI を実装し、IdP にリダイレクトしてから、結果の認証オブジェクトをアプリケーション内の OIDC ライブラリで処理する必要があります。マネージドログインの詳細については、「ユーザープールのマネージドログイン」を参照してください。

パスワードなしの認証が他のユーザー機能に与える影響

ユーザープールとアプリケーションクライアントでワンタイムパスワードまたはパスキーを使用してパスワードなしのサインインをアクティブ化すると、ユーザーの作成と移行に影響します。パスワードなしのサインインがアクティブな場合:

  1. 管理者はパスワードなしでユーザーを作成できます。デフォルトの招待メッセージテンプレートが変わり、{###} パスワードプレースホルダーを含まないようになります。詳細については、「管理者としてのユーザーアカウントの作成」を参照してください。

  2. SDK ベースのSignUp オペレーションの場合、ユーザーはサインアップ時にパスワードを入力する必要はありません。マネージドログインとホストされた UI では、パスワードなしの認証が許可されている場合でも、サインアップページでパスワードが必要です。詳細については、「ユーザーアカウントのサインアップと確認」を参照してください。

  3. CSV ファイルからインポートされたユーザーは、使用可能なパスワードレスサインインオプションの E メールアドレスまたは電話番号が属性に含まれている場合、パスワードリセットなしでパスワードレスオプションですぐにサインインできます。詳細については、「CSV ファイルからユーザープールへのユーザーのインポート」を参照してください。

  4. パスワードなしの認証では、ユーザー移行の Lambda トリガーは呼び出されません。

  5. ワンタイムパスワード (OTP) を第 1 要素としてサインインするユーザーは、多要素認証 (MFA) 要素をセッションに追加できません。ユーザー検証を伴うパスキーは、MULTI_FACTOR_WITH_USER_VERIFICATION を使用して設定すると、MFA 要件を満たすことができます。

パスキーに依拠しているパーティの URL をパブリックサフィックスリストに含めることはできない

所有しているドメイン名 (www.example.com など) を、パスキー設定で依拠しているパーティ (RP) の ID として使用できます。この設定は、所有しているドメインで実行するカスタム構築アプリケーションをサポートすることを目的としています。パブリックサフィックスリスト (PSL) には、保護された高レベルのドメインが含まれています。PSL のドメインに RP URL を設定しようとすると、Amazon Cognito はエラーを返します。

認証フローセッションの持続期間

ユーザープールの機能に応じて、アプリケーションが Amazon Cognito からトークンを取得するRespondToAuthChallenge前に、 InitiateAuthおよび に対するいくつかのチャレンジに応答できます。Amazon Cognito は、各リクエストへの応答にセッション文字列を含めます。API リクエストを 1 つの認証フローにまとめるには、前のリクエストに対する応答のセッション文字列を、後続の各リクエストに含めます。デフォルトでは、セッション文字列が期限切れになる前に、ユーザーに各チャレンジを完了するまでに 3 分間が与えられます。この期間を調整するには、アプリケーションクライアントの認証フローセッション持続期間を変更します。次の手順では、アプリクライアントの構成で、この設定を変更する方法について説明します。

注記

[認証フローセッションの持続期間] の設定は、Amazon Cognito ユーザープール API による認証に適用されます。マネージドログインでは、エンドユーザーが一時パスワードを使用して初めてサインインする際に、多要素認証のセッション時間が 3 分、強制パスワード変更のセッション時間が 8 分に設定されます。

Amazon Cognito console
アプリクライアントの認証フローセッション持続期間を設定するには (AWS マネジメントコンソール)
  1. ユーザープールの [App integration] (アプリの統合) タブで、[App clients and analytics] (アプリクライアントと分析) コンテナからアプリクライアントの名前を選択します。

  2. [アプリケーションクライアントに関する情報] コンテナで [編集] を選択します。

  3. [認証フローセッションの持続期間] の値を、SMS および E メールの MFA コードに必要な有効期間 (分単位) に変更します。これにより、ユーザーがアプリクライアントで認証チャレンジを完了するまでの時間も変更されます。

  4. [Save changes] (変更の保存) をクリックします。

User pools API
アプリクライアントの認証フローセッション持続期間を設定するには (Amazon Cognito API)
  1. DescribeUserPoolClient リクエストから既存のユーザープール設定を使用して UpdateUserPoolClient リクエストを準備します。UpdateUserPoolClient リクエストには、既存のアプリクライアントのプロパティをすべて含める必要があります。

  2. AuthSessionValidity の値を、SMS MFA コードに必要な有効持続期間 (分単位) に変更します。これにより、ユーザーがアプリクライアントで認証チャレンジを完了するまでの時間も変更されます。

アプリクライアントの詳細については、「アプリケーションクライアントによるアプリケーション固有の設定」を参照してください。

サインイン試行の失敗時におけるロックアウト動作

ユーザーのパスワードによるサインイン試行が 5 回失敗すると、認証されていない API オペレーションと IAM で認可された API オペレーションのどちらでリクエストしたかにかかわらず、Amazon Cognito はユーザーを 1 秒間ロックアウトします。ロックアウトの期間は、試行が 1 回失敗するたびに 2 倍になり、最大で約 15 分になります。

ロックアウト期間中に試行すると Password attempts exceeded 例外が生成され、その後のロックアウト期間の長さには影響しません。サインイン試行の累積失敗回数が n (Password attempts exceeded 例外を含まない) に達すると、Amazon Cognito はユーザーを 2^(n-5) 秒間ロックアウトします。ロックアウトを n=0 初期状態にリセットするには、ユーザーは、ロックアウト期間後にサインインに成功するか、連続 15 分間、サインイン試行を開始してはなりません。この動作は変更される可能性があります。この動作は、パスワードベースの認証も実行しない限り、カスタムチャレンジに適用されません。