Amazon Cognito의 Lambda 트리거에 ClientMetadata 를 전달하려면 어떻게 해야 하나요?

2분 분량
0

Amazon Cognito API를 사용하여 클라이언트 메타데이터를 AWS Lambda 트리거로 전달하는 인증 워크플로를 구축하고 싶습니다.

해결 방법

ClientMetadata 파라미터와 함께 InitiateAuth API를 호출하여 Amazon Cognito에서 사용자 인증을 시작하는 경우 ClientMetadata는 다음과 같은 Lambda 트리거에만 전달됩니다.

이에 비해 다음과 같은 Lambda 트리거에 ClientMetadata를 포함시키려면 RespondToAuthChallenge API를 호출해야 합니다.

다음과 같은 인증 문제에 응답하려면 RespondToAuthChallenge API 호출에 ClientMetadata 파라미터를 포함시킵니다.

  • 시간 기반 일회용 비밀번호(TOTP) 다중 인증(MFA)
  • MFA용 단문 메시지 서비스(SMS)
  • 장치 보안 원격 암호(SRP)
  • 사용자 지정 인증 챌린지

또한 ClientMetadata 파라미터는 Lambda 함수 사용자 풀 트리거를 위한 사용자 지정 워크플로를 개선합니다.

ClientMetadata 파라미터를 사용하는 RespondToAuthChallenge API 호출의 예

이 예에서는 Amazon Cognito 사용자 풀이 앱 클라이언트로 구성됩니다. 사후 인증 Lambda 트리거는 사용자 풀과 연결됩니다.

lambda_handler라는 Lambda 함수는 수신한 이벤트를 출력합니다.

import json

def lambda_handler(event, context):
# TODO implement
print(event)
return event

**중요:**Amazon CloudWatch의 보안 데이터 또는 암호가 노출되지 않도록 프로덕션 시스템에서 로깅을 신중하게 사용하세요.

테스트 사용자가 사용자 풀에 생성됩니다. 그런 다음 MFA용 SMS가 구성됩니다.

InitiateAuth API 호출 요청의 예는 사용자 로그인을 시작합니다.

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=test,PASSWORD=Password@123 --client-id 1abcd2efgh34ij5klmnopq456r

InitiateAuth API 호출 응답의 예는 다음과 같습니다.

{
  "ChallengeName": "SMS_MFA",
  "Session": "1AbcDEfgXXXXX",
  "ChallengeParameters": {
    "CODE_DELIVERY_DELIVERY_MEDIUM": "SMS",
    "CODE_DELIVERY_DESTINATION": "+********1234",
    "USER_ID_FOR_SRP": "test"
  }
}

RespondToAuthChallenge API 호출 요청의 예는 MFA 코드를 제출하며 ClientMetadata 파라미터에는 전달할 추가 정보가 포함되어 있습니다.

aws cognito-idp respond-to-auth-challenge --client-id 9zyxw8vuts76rq5ponmlkj432i --challenge-name SMS_MFA --session "9ZyxWVutXXXXX" --challenge-responses USERNAME=test,SMS_MFA_CODE=654321 --client-metadata KeyName1='string',KeyName2='string'

RespondToAuthChallenge API 호출 응답의 예는 다음과 같습니다.

{
  "ChallengeParameters": {},
  "AuthenticationResult": {
    "AccessToken": "abXXXX",
    "ExpiresIn": 3600,
    "TokenType": "Bearer",
    "RefreshToken": "abXX",
    "IdToken": "abXXX"
  }
}

사용자가 성공적으로 인증하고 Amazon Cognito에서 토큰을 수신하면 사후 인증 Lambda 트리거가 호출됩니다.

CloudWatch 콘솔의 로그 이벤트에서 사후 인증 Lambda 트리거 결과를 확인할 수 있습니다. 이벤트 본문에서 ClientMetadata 파라미터 세부 정보를 찾으세요.

관련 정보

사용자 지정 인증 챌린지 Lambda 트리거

Lambda 트리거를 사용한 사용자 풀 워크플로 사용자 지정

AWS 공식
AWS 공식업데이트됨 일 년 전