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

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

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

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

次のクレームは変更できません。

  • acr

  • amr

  • aud

  • at_hash

  • auth_time

  • azp

  • cognito:username

  • exp

  • iat

  • identities

  • iss

  • jti

  • nbf

  • nonce

  • origin_jti

  • sub

  • token_use

トークン生成前の 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", "string" ], "iamRolesToOverride": [ "string", "string" ], "preferredRole": "string" } ], "clientMetadata": {"string": "string"} }, "response": { "claimsOverrideDetails": { "claimsToAddOrOverride": {"string": "string"}, "claimsToSuppress": [ "string", "string" ], "groupOverrideDetails": { "groupsToOverride": [ "string", "string" ], "iamRolesToOverride": [ "string", "string" ], "preferredRole": "string" } } } }

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

groupConfiguration

現在のグループ構成を含む入力オブジェクト。groupsToOverrideiamRolesToOverride、および preferredRole を含みます。

groupsToOverride

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

iamRolesToOverride

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

preferredRole

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

clientMetadata

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

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

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

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

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

この例では、トークン生成前の 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 関数にイベント情報を渡します。Lambda 関数はレスポンスで、同じイベントオブジェクトを変更と共に Amazon Cognito に返します。Lambda コンソールで、Lambda トリガーに関連するデータを使用したテストイベントをセットアップできます。以下は、このコードサンプルのテストイベントです。

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