2017-09-08 7 views
-1

AWS Lambda + Cognito (사용자 풀 + 연합 ID) + API 게이트웨이를 사용합니다. 사용자는 amazon-cognito-identity-js으로 웹 응용 프로그램에서 인증하고 aws-api-gateway-client으로 API를 호출합니다. API 게이트웨이 메소드에는 AWS_IAM 권한 부여자가 있습니다. 람다 함수에서 사용자 풀 (username)을 얻는 방법?AWS Lambda에서 현재 사용자 이름을 얻는 방법은 무엇입니까?

+0

이전 게시물과 다른 질문은 무엇입니까? https://stackoverflow.com/questions/46120881/how-to-get-cognito-user-in-aws-lambda https://stackoverflow.com/questions/46108431/using-aws-lambda-with-cognito- and-api-gateway –

+0

관련 항목 : https://stackoverflow.com/questions/37963906/how-to-get-user-attributes-username-email-etc-using-cognito-identity-id – jarmod

+0

@MarkB 삭제했습니다. 그 지위 – Ildar

답변

0

람다 함수로 보낸 요청을 aws-api-gateway-client으로 수정하여 JWT AccessToken을 헤더에 전달합니다. ensure your API gateway is configured to pass headers해야 할 수도 있습니다.

외부 서비스에 대한 공유 암호를 사용하여이 토큰을 암호화해야합니다. 그런 다음 람다 핸들러 함수에서 해독해야합니다.

apigClient.invokeApi(
    params, 
    pathTemplate, 
    method, 
    { { headers: { accessToken } } }, 
    body); 

주 우리가 누구나 다른 세부 사항에 대해 방해되지 않기 때문에using the AccessToken makes sense here.

인증 후 amazon-cognito-identity-js을 사용하여 AccessToken을 얻습니다.

람다 핸들러 함수에서 요청 헤더에서이 필드를 구문 분석 할 수 있습니다.

import { util } from 'aws-sdk/global'; 

exports.handler = function(event, context) { 
    // parse access Token from request header 
    const headers = event.headers; 
    const payload = headers.accessToken.split('.')[1]; 

    const { username } = JSON.parse(
    util.base64.decode(
     payload 
    ) 
    .toString('utf8') 
); 

    ... 
}; 
관련 문제