2016-07-26 2 views
8

API 게이트웨이에서 나는 파이썬에서 람다 함수를 사용하여 API에 custom authorizer을 만들었습니다. API 게이트웨이는 구성한 헤더 (method.request.header.Authorization)를 사용하여 들어오는 인증 토큰을 넘겨줍니다. 그러나 나는 또한 내 람다 함수 내에서 원래 HTTP 요청의 다른 헤더가 필요합니다. 어떻게 접근합니까? 내 람다 함수에 event 개체 입력에 대한 헤더를 보지 못했습니다.커스텀 승인자 AWS 람다 함수에서 http 헤더에 액세스하는 방법

How to access HTTP headers for request to AWS API Gateway using Lambda?의 복제본이 아닙니다. 질문은 사용자 정의 람다 함수에 관한 것입니다. 들어오는 http 헤더를 승인자 람다 함수에 전달하는 구성 옵션이 표시되지 않습니다.

AWS Documentation에 따라 API 게이트웨이는 아래 입력을 사용하여 사용자 지정 인증자를 호출합니다. 아래의 자료는 내 질문이 불가능하다고 생각합니다. 그러나 해결 방법이 있는지 확인하고 싶습니다.

 

{ 
    "type":"TOKEN", 
    "authorizationToken":"", 
    "methodArn":"arn:aws:execute-api:<regionId>:<accountId>:<apiId>/<stage>/<method>/<resourcePath>" 
} 
+0

개체 불가능합니다. 왜 두 개 이상의 헤더가 필요합니까? 해결 방법 : 통합의 람다 (Lambda) 기능에서 직접 인증/권한 부여를 처리하십시오. – hellomichibye

답변

1

불행히도 이것은 현재로서는 불가능하지만 맞춤 인증 기관에 대한 다른 개선 사항과 함께 지원을 추가 할 계획입니다. 나는 현재 제공 할 ETA가 없다.

+0

현재 일종의 요청 인증 (AWS V4와 마찬가지로 요청 헤더, 쿼리 문자열 및 페이로드의 데이터가 필요한 서명 확인)을 수행 한 다음 수신 중에 자체 확인을 실제로 구현하는 가장 좋은 방법입니다 Lambda (또는 API 게이트웨이 엔드 포인트에 매핑 된 Lambda 세트)? – Numbat

+2

필자는 X-API-KEY를 얻고 토큰 권한 부여 자와 함께 확인하려면 http 헤더에 액세스해야하기 때문에 Amazon API 게이트웨이에이 기능을 추가해야합니다. 이 기능을 추가하자마자 알려 주시기 바랍니다. –

+2

1 년이 지난 후이 업데이트가 있습니까? –

0

바로 다음과 같이 우리는이 기능을 매우 좋아합니다. 헤더를 승인하는 것만으로는 우리가 원한 것이 아니더라도 동일한 논리를 기반으로 모든 람다 함수를 인증 할 수 있습니다. 해결 방법으로

, 우리는 (최적이 아닌) 헤더에 더 많은 데이터를 포함하는 솔루션에 대해 이야기했다

그렇지 않으면 거기에 람다 함수 자체에 특정 권한을 수행의 가능성은 항상 있지만, 그 경우 , 우리는 실제로 커스텀 API 게이트웨이 인증자를 사용하지 않습니다.

2

이 현재

전체 세부 사항을 Authoriser 유형의 '요청'을 사용하는 대신 토큰에 의해 가능해 : http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

기본적으로 모든 헤더는 요청 권한

의 이벤트 객체에 전달

즉, 헤더는 이벤트


    "headers": { 
     "X-wibble": "111", 
     "X-wobble": "222", 
     "x-amzn-ssl-client-hello": "*Deleted*", 
     "Via": "1.1 .cloudfront.net (CloudFront)", 
     "CloudFront-Is-Desktop-Viewer": "true", 
     "CloudFront-Is-SmartTV-Viewer": "false", 
     "CloudFront-Forwarded-Proto": "https", 
     "X-Forwarded-For": "*Deleted*", 
     "CloudFront-Viewer-Country": "GB", 
     "Accept": "*/*", 
     "User-Agent": "curl/7.55.1", 
     "X-Amzn-Trace-Id": "Root=*Deleted*", 
     "Host": "*Deleted*.execute-api.eu-west-1.amazonaws.com", 
     "X-Forwarded-Proto": "https", 
     "X-Amz-Cf-Id": "*Deleted*", 
     "CloudFront-Is-Tablet-Viewer": "false", 
     "X-Forwarded-Port": "443", 
     "CloudFront-Is-Mobile-Viewer": "false" 
    } 

관련 문제