5

람다 백엔드가 포함 된 AWS API 게이트웨이 구현 작업을하고 있습니다. 필자는 Lambda (통합되기 전에 권장 된 방법 이었음)를 사용하여 사용자 정의 권한 부여기를 작성하는 대신 Cognito Userpools (상당히 새로운 기능)와 API 게이트웨이 통합을 사용합니다.AWS API 게이트웨이/Cognito Userpools/Lambda가 발신자 정보를 전달할 수 없습니다.

저는 Cognito로 사용자를 인증 한 다음 해당 자격 증명으로 API 게이트웨이를 호출하는 개념 증명 (javascript)을 만들었습니다. 따라서 기본적으로 API 게이트웨이에 대한 최종 호출은 Authorization 헤더의 Cognito (result.idToken.jwtToken)에서받은 JWT 토큰을 사용합니다. 이 모든 것이 작동하며이 토큰 만 있으면 API에 액세스 할 수 있음을 확인할 수 있습니다.

모두 정상적으로 작동하지만 이제는 람다에서 Cognito ID에 액세스하려고합니다. 식별 ID 또는 이름 또는 전자 메일과 같은 모든 매개 변수를 매핑하는 방법을 읽었지만 실제로는 통합 요청에서 표준 'Method Request Passthrough'템플릿 만 사용하고 있습니다. 나는 모든 매개 변수를 람다에 기록하고 모든 'cognito'매개 변수는 비어 있습니다.

나는 비슷한 질문을 많이했고, 모두 통합 요청에서 '호출자 인증 정보로 호출'체크 박스를 사용하도록 제안했습니다. 그건 완벽하게 이해가됩니다. 당신이 권한으로 AWS_IAM당신이 당신의 cognito UserPool을 선택한 경우하지를 사용하는 경우

그러나,이 체크 박스에만 사용할 수 있습니다. 따라서 선택이 불가능하며 실제로는 사용할 수 없습니다.

아무도이 사건에서 무엇을 해야할지 알고 있습니까? 여전히 진행중인가요? 아니면이 기능을 활성화하고 람다에서인지 자격 증명을 얻을 수없는 이유가 있습니까?

감사합니다. 당신이 당신의 백엔드에서 사용자 정보를 기록해야하는 경우

+0

당신이 당신의 람다 함수에서 주요 사용자 식별에 액세스 할 수 있기 때문에 당신이 Cognito UserPool에서 호출자의 자격 증명이 필요 사용 사례를 공유 할 수 있습니까? –

+0

예. 우리는 어떤 사용자가보고하기 위해 어떤 데이터에 액세스했는지에 대한 정보를 추가로 기록/저장해야합니다. 이를 위해서는 더 많은 사용자 정보가 필요합니다. 'Method Request Passthrough'템플릿에서 일부 Cognito 필드가 명시 적으로 매핑되기 때문에 ('cognito-authentication-provider', 'cognito-authentication-type', 'cognito-identity-id' , 'cognito-identity-pool-id'가 있습니다.하지만 람다에 도달하면 모두 비어 있습니다. 또한 'authorizer-principal-id'도 비어 있습니다. 어떤 제안? – evdh

+0

"sub" "$ context.authorizer.claims.sub", "$ context.authorizer.claims.email" –

답변

2

, 당신은 당신의 Cognito 사용자 풀의 서브이메일를 얻을 수 $context.authorizer.claims.sub$context.authorizer.claims.email를 사용할 수 있습니다. 여기

는 API 게이트웨이에서 Use Amazon Cognito Your User Pool에 대한 문서입니다

+1

나는이 시도하지만 백엔드에 빈 값을 얻고있다 : 이 { "컨텍스트": { "하위": "", "이메일": "" } 가} – Tejas

+0

@Ka 허우 Ieong을, 그것을이다 여전히 최신 답변입니까? 마지막 날에, 나는'claim'과'$ context'가 공백이라는 말과 함께 몇 가지 답을 발견했습니다. – nicq

관련 문제