トークン生成前 Lambda トリガー - Amazon Cognito

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

トークン生成前 Lambda トリガー

Amazon Cognito はこのトリガーをトークンの生成前に呼び出し、ID トークンのクレームをカスタマイズできるようにします。

この Lambda トリガーを使用すると、ID トークンが生成される前にカスタマイズできます。このトリガーを使用して、ID トークンでの新しいクレームの追加、クレームの更新、またはクレームの抑制を行うことができます。この機能を使用するには、Amazon Cognito ユーザープールコンソールから Lambda 関数を関連付けるか、AWS CLI 経由でユーザープールを更新します。

変更できないクレームがいくつかあります。具体的には次のとおりです。acramraudauth_timeazpexpiatidentitiesisssubtoken_usenonceat_hash, およびcognito:username

トークン生成前 Lambda トリガーのソース

triggerSource 値 トリガーイベント
TokenGeneration_HostedAuth Amazon Cognito でホストされた UI のサインインページから認証時に呼び出されます。
TokenGeneration_Authentication ユーザー認証フローが完了した後に呼び出されます。
TokenGeneration_NewPasswordChallenge 管理者によってユーザーが作成された後に呼び出されます。このフローは、ユーザーが一時パスワードを変更する必要があるときに呼び出されます。
TokenGeneration_AuthenticateDevice ユーザーデバイスの認証の終了時に呼び出されます。
TokenGeneration_RefreshTokens ユーザーが ID およびアクセスのトークンを更新しようとしたときに呼び出されます。

トークン生成前 Lambda トリガーパラメータ

これらは、この Lambda 関数で必要なパラメーターです。共通パラメータ

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "groupConfiguration": { "groupsToOverride": ["string", . . .], "iamRolesToOverride": ["string", . . .], "preferredRole": "string", "clientMetadata": { "string": "string", . . . } }, "response": { "claimsOverrideDetails": { "claimsToAddOrOverride": { "string": "string", . . . }, "claimsToSuppress": ["string", . . .], "groupOverrideDetails": { "groupsToOverride": ["string", . . .], "iamRolesToOverride": ["string", . . .], "preferredRole": "string" } } } }

トークン生成前リクエストのパラメータ

groupConfiguration

現在のグループ構成を含む入力オブジェクト。含められるgroupsToOverrideiamRolesToOverride, およびpreferredRole

groupsToOverride

ID トークンの発行先のユーザーに関連付けられているグループ名のリスト。

iamRolesToOverride

これらのグループに関連付けられている現在の IAM ロールのリスト。

preferredRole

推奨される IAM ロールを示す文字列。

clientMetadata

トークン生成前トリガーに指定する Lambda 関数へのカスタム入力として指定できる 1 つ以上のキーと値のペア。このデータを Lambda 関数に渡すことができます。ClientMetadata パラメータを使用して、AdminRespondToAuthChallengeおよびRespondToAuthChallengeAPI アクション。

トークン生成前レスポンスのパラメータ

claimsToAddOrOverride

追加または上書きするクレームの 1 つ以上のキーと値のペアのマップ。グループ関連のクレームには、代わりに groupOverrideDetails を使用します。

claimsToSuppress

ID トークンから非表示になるクレームを含むリスト。

注記

値が非表示で置き換えられた場合、値は非表示になります。

groupOverrideDetails

現在のグループ構成を含む出力オブジェクト。含められるgroupsToOverrideiamRolesToOverride, およびpreferredRole

groupOverrideDetails オブジェクトは、ユーザーが提供するオブジェクトに置き換えられます。レスポンスで空または Null オブジェクトを返すと、グループは非表示になります。既存のグループ設定を未変更のままにするには、リクエストの groupConfiguration オブジェクトの値をレスポンスの groupOverrideDetails オブジェクトにコピーし、それをサービスに返します。

トークン生成前の例 新しいクレームの追加と既存のクレームの非表示

この例では、新しいクレームの追加と既存のクレームの非表示に Pre Token Generation Lambda を使用しています。

Node.js
exports.handler = (event, context, callback) => { event.response = { "claimsOverrideDetails": { "claimsToAddOrOverride": { "attribute_key2": "attribute_value2", "attribute_key": "attribute_value" }, "claimsToSuppress": ["email"] } }; // Return to Amazon Cognito callback(null, event); };

Amazon Cognito は、イベント情報を Lambda 関数に渡します。関数は、レスポンスで同じイベントオブジェクトを変更とともに Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。次に、このコードサンプルのテストイベントを示します。

JSON
{ "request": {}, "response": {} }

トークン生成前の例 ユーザーのグループメンバーシップの変更

この例では、ユーザーグループのメンバーシップの変更に Pre Token Generation Lambda を使用しています。

Node.js
exports.handler = (event, context, callback) => { event.response = { "claimsOverrideDetails": { "claimsToAddOrOverride": { "attribute_key2": "attribute_value2", "attribute_key": "attribute_value" }, "claimsToSuppress": ["email"], "groupOverrideDetails": { "groupsToOverride": ["group-A", "group-B", "group-C"], "iamRolesToOverride": ["arn:aws:iam::XXXXXXXXXXXX:role/sns_callerA", "arn:aws:iam::XXXXXXXXX:role/sns_callerB", "arn:aws:iam::XXXXXXXXXX:role/sns_callerC"], "preferredRole": "arn:aws:iam::XXXXXXXXXXX:role/sns_caller" } } }; // Return to Amazon Cognito callback(null, event); };

Amazon Cognito は、イベント情報を Lambda 関数に渡します。関数は、レスポンスで同じイベントオブジェクトを変更とともに Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。次に、このコードサンプルのテストイベントを示します。

JSON
{ "request": {}, "response": {} }