사전 토큰 생성 Lambda 트리거 - Amazon Cognito

사전 토큰 생성 Lambda 트리거

토큰 생성 전에 Amazon Cognito가 이 트리거를 호출하기 때문에 자격 증명 토큰 신청을 사용자 지정할 수 있습니다.

이 AWS Lambda 트리거를 사용하면 Amazon Cognito에서 자격 증명 토큰을 생성하기 전에 해당 토큰을 사용자 지정할 수 있습니다. 이 트리거를 사용하여 자격 증명 토큰에서 새 클레임 추가, 클레임 업데이트 또는 억제가 가능합니다. 이 기능을 사용하려면 Amazon Cognito 사용자 풀 콘솔에서 Lambda 함수를 연결하거나 AWS Command Line Interface(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 사용자가 자격 증명 및 액세스 토큰을 새로 고치려 할 때 호출됩니다.

사전 토큰 생성 Lambda 트리거 파라미터

이러한 파라미터는 Amazon Cognito가 공통 파라미터의 이벤트 정보와 함께 이 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

현재 그룹 구성을 포함하는 입력 객체입니다. 이 객체에는 groupsToOverride, iamRolesToOverridepreferredRole이 포함됩니다.

groupsToOverride

자격 증명 토큰를 수신하는 사용자에 해당하는 그룹 이름 목록입니다.

iamRolesToOverride

이러한 그룹에 해당하는 현재 AWS Identity and Access Management(IAM) 역할 목록입니다.

preferredRole

선호하는 IAM 역할을 나타내는 문자열입니다.

clientMetadata

사용자가 지정하고 사전 토큰 생성 트리거에 Lambda 함수에 대한 사용자 지정 입력으로 제공할 수 있는 하나 이상의 키-값 페어입니다. 이 데이터를 Lambda 함수에 전달하려면 AdminRespondToAuthChallengeRespondToAuthChallenge API 작업에서 ClientMetadata 파라미터를 사용합니다. Amazon Cognito는 사전 토큰 생성 함수에 전달하는 요청에 있는 AdminInitiateAuthInitiateAuth API 작업의 ClientMetadata 파라미터에서 전달된 데이터는 포함하지 않습니다.

사전 토큰 생성 응답 파라미터

claimsToAddOrOverride

추가하거나 재정의하려는 하나 이상의 키-값 클레임 페어의 맵입니다. 그룹 관련 신청의 경우 대신 groupOverrideDetails를 사용합니다.

claimsToSuppress

Amazon Cognito가 자격 증명 토큰에서 억제하길 원하는 신청을 포함하는 목록입니다.

참고

함수가 신청 값을 억제하고 대체하는 경우 Amazon Cognito는 신청을 억제합니다.

groupOverrideDetails

현재 그룹 구성을 포함하는 입력 객체입니다. 이 객체에는 groupsToOverride, iamRolesToOverridepreferredRole이 포함됩니다.

함수가 groupOverrideDetails 객체를 사용자가 제공하는 객체로 바꿉니다. 응답에서 비어 있는 객체 또는 Null 객체를 제공하면 Amazon Cognito가 그룹을 억제합니다. 기존 그룹 구성을 동일하게 유지하려면 요청의 groupConfiguration 객체 값을 응답의 groupOverrideDetails 객체로 복사합니다. 그런 다음 해당 객체를 서비스로 다시 전달합니다.

Amazon Cognito ID 및 액세스 토큰 둘 다에 cognito:groups 클레임이 포함되어 있습니다. groupOverrideDetails 객체는 액세스 토큰과 ID 토큰의 cognito:groups 신청을 대체합니다.

사전 토큰 생성 예제: 새 클레임 추가 및 기존 클레임 억제

이 예에서는 사전 토큰 생성 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 트리거와 관련 있는 데이터로 테스트 이벤트를 설정할 수 있습니다. 다음은 이 코드 샘플에 대한 테스트 이벤트입니다. 이 코드 예에서는 요청 파라미터를 처리하지 않기 때문에 빈 요청에 테스트 이벤트를 사용할 수 있습니다. 공통 요청 파라미터에 대한 자세한 내용은 사용자 풀 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 함수에 전달합니다. 그런 다음 함수는 응답이 변경되면 동일한 이벤트 객체를 Amazon Cognito에 반환합니다. Lambda 콘솔에서 해당 Lambda 트리거와 관련 있는 데이터로 테스트 이벤트를 설정할 수 있습니다. 다음은 이 코드 샘플의 테스트 이벤트입니다.

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