2016-07-26 14 views
8

Từ Cổng API, tôi đã tạo một custom authorizer cho API của mình bằng hàm Lambda trong python. API Gateway trao mã thông báo xác thực đến bằng cách sử dụng tiêu đề tôi định cấu hình (method.request.header.Authorization). Tuy nhiên tôi cũng cần các tiêu đề khác của yêu cầu http gốc bên trong hàm lambda của tôi. Làm cách nào để truy cập chúng? Tôi không thấy tiêu đề trên đầu vào đối tượng event đối với hàm lambda của tôi.Cách truy cập tiêu đề http trong hàm AWA lambda tùy chỉnh của tác giả

Lưu ý rằng đây không phải là bản sao của How to access HTTP headers for request to AWS API Gateway using Lambda?. Câu hỏi đặt ra là hàm lambda tùy chỉnh của tác giả. Tôi không thấy bất kỳ tùy chọn cấu hình nào để chuyển các tiêu đề http đến tới hàm lambda của tác giả.

Theo AWS Documentation, API Gateway gọi Trình ủy quyền tùy chỉnh với thông tin nhập dưới đây. Căn cứ vào bên dưới, tôi cho rằng yêu cầu của tôi là không thể. Nhưng muốn kiểm tra xem có cách giải quyết hay không.

 

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

không thể. Tại sao bạn cần nhiều hơn một tiêu đề? Giải pháp thay thế: Tự xử lý xác thực/ủy quyền trong hàm Lambda của tích hợp của bạn. – hellomichibye

Trả lời

1

Thật không may, hiện tại chúng tôi không thể hỗ trợ điều này cùng với một số cải tiến khác cho người ủy quyền tùy chỉnh. Tôi không có ETA để cung cấp vào lúc này.

+0

Cách tốt nhất để xử lý xác thực yêu cầu (như xác minh chữ ký yêu cầu dữ liệu từ tiêu đề yêu cầu, chuỗi truy vấn và tải trọng, tương tự AWS V4) để thực hiện xác minh của chính chúng tôi trong quá trình nhận Lambda (hoặc bộ Lambdas được ánh xạ tới điểm cuối API Gateway)? – Numbat

+2

Tôi cần tính năng này thêm vào cổng api của Amazon vì trong trường hợp sử dụng của tôi, tôi cần truy cập tiêu đề http để lấy X-API-KEY và xác minh cùng với trình ủy quyền thẻ. cho chúng tôi biết ngay khi bạn thêm các tính năng này. –

+2

Bất kỳ cập nhật nào về điều này kể từ một năm đã trôi qua? –

0

Chỉ cần làm theo điều này, vì chúng tôi sẽ rất thích tính năng này. Kết quả chỉ có tiêu đề để cho phép là chúng tôi chỉ có thể ủy quyền tất cả các hàm lambda của chúng tôi dựa trên cùng một logic, mặc dù đó không phải là những gì chúng tôi muốn.

Là một workaround, chúng tôi đã nói chuyện về các giải pháp để bao gồm nhiều dữ liệu trong tiêu đề (mà không phải là tối ưu)

Nếu không luôn có khả năng làm ủy quyền cụ thể trong hàm lambda bản thân, nhưng trong trường hợp đó , chúng tôi thực sự không sử dụng cho trình ủy quyền API tùy chỉnh.

2

này bây giờ có thể bằng cách sử dụng một Authoriser kiểu 'Yêu cầu' thay vì Mã

Chi tiết đầy đủ đang ở đây: http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html

Về cơ bản, tất cả các tiêu đề được truyền trong đối tượng sự kiện cho một uỷ quyền Yêu cầu

tiêu đề tức là phản đối về sự kiện


    "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" 
    } 

Các vấn đề liên quan