Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Amazon Cognito ユーザープールによる認証

フォーカスモード
Amazon Cognito ユーザープールによる認証 - Amazon Cognito

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

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

Amazon Cognito には、ユーザーを認証する方法がいくつか用意されています。ドメインの有無にかかわらず、すべてのユーザープールはユーザープール API でユーザーを認証できます。ユーザープールにドメインを追加すると、ユーザープール エンドポイントを使用できます。ユーザープール API は、API リクエストのさまざまな認可モデルとリクエストフローをサポートします。

ユーザーのアイデンティティを検証するために、Amazon Cognito は、E メールや SMS メッセージのワンタイムパスワードやパスキーなどのパスワードに加えて、チャレンジタイプを組み込む認証フローをサポートしています。

認証フローの実装

マネージドログインを実装するか、認証用の AWS SDK を使用してカスタム構築されたアプリケーションフロントエンドを実装するかにかかわらず、実装する認証のタイプに合わせてアプリケーションクライアントを設定する必要があります。以下の情報は、アプリケーションクライアントとアプリケーションにおける認証フローの設定について説明しています。

App client supported flows

Amazon Cognito コンソールまたは AWS SDK の API を使用して、アプリケーションクライアントでサポートされているフローを設定できます。これらのフローをサポートするようにアプリケーションクライアントを設定したら、アプリケーションにデプロイできます。

次の手順では、Amazon Cognito コンソールを使用してアプリケーションクライアントで使用可能な認証フローを設定します。

認証フロー用にアプリケーションクライアントを設定するには (コンソール)
  1. にサインイン AWS し、Amazon Cognito ユーザープールコンソールに移動します。ユーザープールを選択するか、新しいユーザープールを作成します。

  2. ユーザープール設定で、アプリクライアントメニューを選択します。アプリケーションクライアントを選択するか、新しいクライアントを作成します。

  3. アプリクライアント情報で、編集を選択します。

  4. アプリクライアントフローで、サポートする認証フローを選択します。

認証フロー用にアプリケーションクライアントを設定するには (API/SDK)

Amazon Cognito API を使用してアプリケーションクライアントで使用可能な認証フローを設定するには、CreateUserPoolClient または UpdateUserPoolClient リクエストExplicitAuthFlowsで の値を設定します。以下は、セキュアリモートパスワード (SRP) と選択ベースの認証をクライアントにプロビジョニングする例です。

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH", "ALLOW_USER_SRP_AUTH ]

アプリケーションクライアントがサポートするフローを設定するときは、次のオプションと API 値を指定できます。

アプリケーションクライアントフローのサポート
認証のフロー 互換性 コンソール API
選択ベースの認証 サーバー側、クライアント側 サインイン時に認証タイプを選択する ALLOW_USER_AUTH
永続的なパスワードでサインインする クライアント側 ユーザー名とパスワードでサインインする ALLOW_USER_PASSWORD_AUTH
永続的なパスワードと安全なペイロードでサインインする サーバー側、クライアント側 Secure Remote Password (SRP) でサインインする ALLOW_USER_SRP_AUTH
更新トークン サーバー側、クライアント側 既存の認証済みセッションから新しいユーザートークンを取得する ALLOW_REFRESH_TOKEN_AUTH
サーバー側の認証 サーバー側 サーバー側の管理認証情報を使用してサインインする ALLOW_ADMIN_USER_PASSWORD_AUTH
カスタム認証 サーバー側およびクライアント側のカスタムビルドアプリケーション。マネージドログインとは互換性がありません。 Lambda トリガーからのカスタム認証フローでサインインする ALLOW_CUSTOM_AUTH
Implement flows in your application

マネージドログインでは、設定された認証オプションが署名ページで自動的に利用可能になります。カスタムビルドのアプリケーションでは、初期フローの宣言を使用して認証を開始します。

  • ユーザーのフローオプションのリストから選択するには、USER_AUTHフローで選択ベースの認証を宣言します。このフローには、パスキー認証やパスワードレス認証など、クライアントベースの認証フローでは使用できない利用可能な認証方法があります。

  • 認証フローを事前に選択するには、アプリケーションクライアントで利用可能な他のフローでクライアントベースの認証を宣言します。

ユーザーをサインインさせるときは、InitiateAuth または AdminInitiateAuth リクエストの本文に AuthFlowパラメータを含める必要があります。

選択ベースの認証:

"AuthFlow": "USER_AUTH"

SRP によるクライアントベースの認証:

"AuthFlow": "USER_SRP_AUTH"

Amazon Cognito コンソールまたは AWS SDK の API を使用して、アプリケーションクライアントでサポートされているフローを設定できます。これらのフローをサポートするようにアプリケーションクライアントを設定したら、アプリケーションにデプロイできます。

次の手順では、Amazon Cognito コンソールを使用してアプリケーションクライアントで使用可能な認証フローを設定します。

認証フロー用にアプリケーションクライアントを設定するには (コンソール)
  1. にサインイン AWS し、Amazon Cognito ユーザープールコンソールに移動します。ユーザープールを選択するか、新しいユーザープールを作成します。

  2. ユーザープール設定で、アプリクライアントメニューを選択します。アプリケーションクライアントを選択するか、新しいクライアントを作成します。

  3. アプリクライアント情報で、編集を選択します。

  4. アプリクライアントフローで、サポートする認証フローを選択します。

認証フロー用にアプリケーションクライアントを設定するには (API/SDK)

Amazon Cognito API を使用してアプリケーションクライアントで使用可能な認証フローを設定するには、CreateUserPoolClient または UpdateUserPoolClient リクエストExplicitAuthFlowsで の値を設定します。以下は、セキュアリモートパスワード (SRP) と選択ベースの認証をクライアントにプロビジョニングする例です。

"ExplicitAuthFlows": [ "ALLOW_USER_AUTH", "ALLOW_USER_SRP_AUTH ]

アプリケーションクライアントがサポートするフローを設定するときは、次のオプションと API 値を指定できます。

アプリケーションクライアントフローのサポート
認証のフロー 互換性 コンソール API
選択ベースの認証 サーバー側、クライアント側 サインイン時に認証タイプを選択する ALLOW_USER_AUTH
永続的なパスワードでサインインする クライアント側 ユーザー名とパスワードでサインインする ALLOW_USER_PASSWORD_AUTH
永続的なパスワードと安全なペイロードでサインインする サーバー側、クライアント側 Secure Remote Password (SRP) でサインインする ALLOW_USER_SRP_AUTH
更新トークン サーバー側、クライアント側 既存の認証済みセッションから新しいユーザートークンを取得する ALLOW_REFRESH_TOKEN_AUTH
サーバー側の認証 サーバー側 サーバー側の管理認証情報を使用してサインインする ALLOW_ADMIN_USER_PASSWORD_AUTH
カスタム認証 サーバー側およびクライアント側のカスタムビルドアプリケーション。マネージドログインとは互換性がありません。 Lambda トリガーからのカスタム認証フローでサインインする ALLOW_CUSTOM_AUTH

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

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

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

マネージドログインとクラシックホスト UI には、認証のためのさまざまなオプションがあります。パスワードレス認証とパスキー認証は、マネージドログインでのみ実行できます。

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

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

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

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

他のユーザー機能に対するパスワードレス認証の効果

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

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

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

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

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

  5. パスワードレスの最初の要素でサインインするユーザーは、セッションに多要素認証 (MFA) 要素を追加できません。パスワードベースの認証フローのみが MFA をサポートします。

パスキー証明書利用者URLs をパブリックサフィックスリストに含めることはできません

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

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

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

注記

認証フローセッション期間の設定は、Amazon Cognito ユーザープール API による認証に適用されます。マネージドログインは、多要素認証の場合はセッション時間を 3 分、パスワードリセットコードの場合は 8 分に設定します。

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

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

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

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

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

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

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

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

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

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

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

失敗したサインイン試行のロックアウト動作

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

認証セッションの例

次の図とstep-by-stepガイドは、ユーザーがアプリケーションにサインインする一般的なシナリオを示しています。サンプルアプリケーションは、いくつかのサインインオプションをユーザーに示します。認証情報を入力して選択し、追加の認証要素を指定してサインインします。

ユーザーに入力を求め、 AWS SDK でサインインするアプリケーションを示すフローチャート。

ユーザーがユーザー名とパスワードでサインインしたり、E メールメッセージで 1 回限りのコードをリクエストしたり、フィンガープリントオプションを選択したりできるサインインページでアプリケーションをイメージします。

  1. サインインプロンプト: アプリケーションには、ログインボタン付きのホーム画面が表示されます。

  2. サインインのリクエスト: ユーザーはログインを選択します。Cookie またはキャッシュから、アプリケーションはユーザー名を取得するか、入力を求めます。

  3. リクエストオプション: アプリケーションはUSER_AUTH、フローを含む InitiateAuth API リクエストでユーザーのサインインオプションをリクエストし、ユーザーに使用可能なサインイン方法をリクエストします。

  4. サインインオプションを送信する: Amazon Cognito は PASSWORDEMAIL_OTP、および で応答しますWEB_AUTHN。レスポンスには、次のレスポンスで再生するためのセッション識別子が含まれます。

  5. 表示オプション: アプリケーションには、ユーザーがユーザー名とパスワードを入力したり、ワンタイムコードを取得したり、フィンガープリントをスキャンしたりするための UI 要素が表示されます。

  6. オプションを選択する/認証情報を入力する: ユーザーはユーザー名とパスワードを入力します。

  7. 認証の開始: アプリケーションは、ユーザー名とパスワードのサインインを確認する RespondToAuthChallenge API リクエストでユーザーのサインイン情報を提供し、ユーザー名とパスワードを提供します。

  8. 認証情報を検証する: Amazon Cognito はユーザーの認証情報を確認します。

  9. その他の課題: ユーザーには認証アプリで設定された多要素認証があります。Amazon Cognito はSOFTWARE_TOKEN_MFAチャレンジを返します。

  10. チャレンジプロンプト: アプリケーションは、ユーザーの認証アプリから時間ベースのワンタイムパスワード (TOTP) をリクエストするフォームを表示します。

  11. チャレンジへの回答: ユーザーは TOTP を送信します。

  12. チャレンジに応答する: 別のRespondToAuthChallengeリクエストでは、アプリケーションはユーザーの TOTP を提供します。

  13. チャレンジレスポンスの検証: Amazon Cognito はユーザーのコードを確認し、ユーザープールが現在のユーザーに追加チャレンジを発行しないように設定されていると判断します。

  14. 問題トークン: Amazon Cognito は ID、アクセス、および JSON ウェブトークン (JWTs) の更新を返します。ユーザーの初期認証が完了しました。

  15. 保存トークン: アプリケーションはユーザーのトークンをキャッシュして、ユーザーデータを参照し、リソースへのアクセスを許可し、有効期限が切れたときにトークンを更新できるようにします。

  16. 承認されたコンテンツのレンダリング: アプリケーションは、ユーザーの ID とロールに基づいて リソースへのアクセスを判断し、アプリケーションコンテンツを配信します。

  17. アクセスコンテンツ: ユーザーはサインインし、アプリケーションの使用を開始します。

  18. トークンの有効期限が切れたコンテンツをリクエストする: 後で、ユーザーは認可が必要なリソースをリクエストします。ユーザーのキャッシュされたトークンの有効期限が切れています。

  19. 更新トークン: アプリケーションは、ユーザーの保存された更新トークンを使用して InitiateAuthリクエストを行います。

  20. 問題トークン: Amazon Cognito は新しい ID を返し、JWTs にアクセスします。ユーザーのセッションは、認証情報の追加プロンプトなしで安全に更新されます。

AWS Lambda トリガーを使用して、ユーザーの認証方法をカスタマイズできます。トリガーは独自のチャレンジを認証フローの一部として発行し検証を行います。

また、安全なバックエンドサーバーでは、管理者の認証フローを使用することもできます。ユーザー移行認証フローを使用すると、ユーザーがパスワードをリセットすることなく、ユーザー移行が可能になります。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.