2017-03-28 71 views
0

是否可以通過Cloudfront將IAM角色身份驗證用於API網關端點?是否可以通過Cloudfront向API網關進行IAM身份驗證?

下面是一個基本用例:

  • /API - > API網關
  • /* - > S3 HTML/JavaScript的

我已經能夠得到這個工作與以下設置類似的身份驗證: https://www.codeengine.com/articles/process-form-aws-api-gateway-lambda/

How do you add CloudFront in front of API Gateway

特別需要注意的是不要轉發來自的Cloudfront HOST頭...

當我使IAM驗證API中,我會收到以下消息:

選項:200

POST :403

{「message」:「我們計算的請求籤名與您提供的 簽名不匹配。檢查您的AWS祕密訪問密鑰並簽署方法 。 \ n \ n該請求的 規範字符串應具有 \ n'POST \ n/test/create \ n \ naccept:application/json \ ncontent-type:application/json \ nhost: *****執行-api.ap - **** - 2.amazonaws.com \ NX-AMZ-日期:20170328T044253Z \ n \ naccept;內容類型;主機; X-AMZ-日期\ na57656a9def890d9de2b637789f7e5917f4b2823765ae0122087d08f89a97380' \ ñ\ n此 字符串到註冊應具備 一直\ n'AWS4-HMAC-SHA256 \ n20170328T044253Z \ n20170328/AP-東南-2 /執行的API/aws4_request \ ncae7fd6b4cabd593ad2ec6ce7091c94dc8cba306e81da95d567873eea8f981a5' \ n「}

規範字符串中的主機是API網關的主機...

+1

您需要簽署請求,就好像您要直接將其發送到API網關一樣...然後在簽名後更改請求中的主機名。這也許是違反直覺的,但是由於CloudFront將會改變它,這似乎是唯一的解決方案。 –

回答

1

正如評論中指出的那樣,由於HOST標題的變化,您將遇到困難。理論上理論上用API網關exceute-api域簽署請求理論上應該可行,假設CloudFront不以任何其他方式更改有效內容,理論上應該使用該值作爲HOST的值。

+0

感謝Bob,我可以確認通過手動將Host頭部設置爲API網關端點的頭部,在簽名之前,sig4身份驗證通過Cloudfront進行。 – comfytoday

相關問題