翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SDKsで AWS 認証方法を管理する
Amazon Cognito ユーザープールのユーザーは、さまざまな初期サインインオプションまたは要因を使用してサインインできます。一部の要因では、ユーザーは多要素認証 (MFA) でフォローアップできます。これらの最初の要因には、ユーザー名とパスワード、ワンタイムパスワード、パスキー、カスタム認証などがあります。詳細については、「認証フロー」を参照してください。アプリケーションに組み込み UI コンポーネントがあり、 AWS SDK モジュールをインポートする場合は、認証用のアプリケーションロジックを構築する必要があります。2 つの主要な方法のいずれかを選択し、その方法から実装する認証メカニズムを選択する必要があります。
アプリケーションまたはクライアントが認証のタイプを事前に宣言するクライアントベースの認証を実装できます。もう 1 つのオプションは、アプリがユーザー名を収集し、ユーザーが使用できる認証タイプをリクエストする選択ベースの認証です。これらのモデルは、要件に応じて、同じアプリケーションにまとめて実装することも、アプリケーションクライアント間で分割することもできます。各メソッドには、クライアントベースのカスタム認証や、選択ベースのパスワードレス認証など、独自の機能があります。
ユーザープール API の AWS SDK 実装で認証を実行するカスタムビルドのアプリケーションでは、ユーザープール設定、アプリケーションクライアント設定、クライアント側の設定に合わせて API リクエストを構成する必要があります。AuthFlow
の で始まるInitiateAuth
セッションは、選択ベースの認証USER_AUTH
を開始します。Amazon Cognito は、任意の認証方法または選択肢のリストのチャレンジで API に応答します。AuthFlow
の で始まるセッションCUSTOM_AUTH
は、Lambda トリガーによるカスタム認証に直接移行します。
一部の認証方法は 2 つのフロータイプのいずれかに固定され、一部の方法は両方で使用できます。
選択ベースの認証
アプリケーションは、選択ベースの認証で次の認証方法をリクエストできます。これらのオプションを InitiateAuth または AdminInitiateAuth の PREFERRED_CHALLENGE
パラメータ、または RespondToAuthChallenge または AdminRespondToAuthChallenge の ChallengeName
パラメータで宣言します。
-
EMAIL_OTP
およびSMS_OTP
-
WEB_AUTHN
-
PASSWORD
API コンテキストでこれらのオプションを確認するには、ChallengeName
RespondToAuthChallenge」の「」を参照してください。
選択ベースのサインインは、最初のリクエストに応じてチャレンジを発行します。このチャレンジは、リクエストされたオプションが利用可能であることを確認するか、利用可能な選択肢のリストを提供します。アプリケーションは、これらの選択肢をユーザーに表示することができます。ユーザーは、希望するサインイン方法の認証情報を入力し、チャレンジレスポンスで認証を続行します。
認証フローには、次の選択ベースのオプションがあります。このタイプのすべてのリクエストでは、アプリが最初にユーザー名を収集するか、キャッシュから取得する必要があります。
-
AuthParameters
が のリクエストオプションUSERNAME
のみ。Amazon Cognito はSELECT_CHALLENGE
チャレンジを返します。そこから、アプリケーションはユーザーにチャレンジを選択し、このレスポンスをユーザープールに返すように求めることができます。 -
AuthParameters
の で優先チャレンジをリクエストPREFERRED_CHALLENGE
し、該当する場合は優先チャレンジのパラメータをリクエストします。たとえば、PREFERRED_CHALLENGE
の をリクエストする場合はPASSWORD_SRP
、 も含める必要がありますSRP_A
。ユーザー、ユーザープール、およびアプリケーションクライアントがすべて優先チャレンジ用に設定されている場合、Amazon Cognito は、フローやPASSWORD_SRP
フローPASSWORD_VERIFIER
の CodeDeliveryDetails など、そのチャレンジの次のステップで応答しますEMAIL_OTP
SMS_OTP
。優先チャレンジが利用できない場合、Amazon Cognito はSELECT_CHALLENGE
と利用可能なチャレンジのリストで応答します。 -
最初にユーザーにサインインし、選択ベースの認証オプションをリクエストします。サインインしたユーザーのアクセストークンを含む GetUserAuthFactors リクエストは、利用可能な選択ベースの認証要素と MFA 設定を返します。このオプションを使用すると、ユーザーはまずユーザー名とパスワードでサインインし、別の形式の認証をアクティブ化できます。このオペレーションを使用して、優先チャレンジでサインインしたユーザーの追加オプションを確認することもできます。
選択ベースの認証用にアプリケーションクライアントを設定するには、許可された認証フローALLOW_USER_AUTH
に を追加します。また、ユーザープール設定で許可する選択ベースの要素を選択する必要があります。以下のプロセスは、選択ベースの認証要素を選択する方法を示しています。
クライアントベースの認証
クライアントベースの認証では、次の認証フローがサポートされています。これらのオプションを InitiateAuth または AdminInitiateAuth の AuthFlow
パラメータで宣言します。
-
USER_PASSWORD_AUTH
およびADMIN_USER_PASSWORD_AUTH
この認証フローは、選択ベースの認証
PASSWORD
と同等です。 -
USER_SRP_AUTH
この認証フローは、選択ベースの認証
PASSWORD_SRP
と同等です。 -
REFRESH_TOKEN_AUTH
この認証フローは、クライアントベースの認証でのみ使用できます。
-
CUSTOM_AUTH
この認証フローは、クライアントベースの認証でのみ使用できます。
クライアントベースの認証では、Amazon Cognito は、ユーザーが認証フローを開始する前に認証方法を決定したことを前提としています。ユーザーが提供したいサインイン要素を決定するロジックは、デフォルト設定またはカスタムプロンプトで決定し、ユーザープールへの最初のリクエストで宣言する必要があります。InitiateAuth
リクエストは、 など、リストされたオプションの 1 つに直接対応するサインインAuthFlow
を宣言しますUSER_SRP_AUTH
。この宣言では、リクエストには、、、 などの認証を開始するためのパラメータも含まれますUSERNAME
SECRET_HASH
SRP_A
。Amazon Cognito は、SRP や TOTP MFA PASSWORD_VERIFIER
でのパスワードサインインなど、追加のチャレンジSOFTWARE_TOKEN_MFA
でこのリクエストをフォローアップする場合があります。
クライアントベースの認証用にアプリクライアントを設定するには、許可された認証フローALLOW_USER_AUTH
に 以外の認証フローを追加します。例としては、ALLOW_USER_PASSWORD_AUTH
、ALLOW_CUSTOM_AUTH
、 がありますALLOW_REFRESH_TOKEN_AUTH
。クライアントベースの認証フローを許可するには、追加のユーザープール設定は必要ありません。