2017-03-02 144 views
1

我有幾個API網關「方法」(端點),我只想讓具有特定IAM角色(策略)的用戶可用。我嘗試過所有我能想到的事情。如何控制對AWS API網關端點的訪問

基本上......我想要的是找到一種方法將訪問令牌傳遞到API網關(通過頭文件),並找出訪問令牌屬於哪個角色,然後讓API網關執行基於授權的工作關於該角色的政策。我離開基地嗎?

回答

1

您需要的授權設置爲AWS_IAM方法請求>授權設置並在調用API方法時傳遞Authorization HTTP請求頭。

Authorization標頭要求您計算簽名請求的數字簽名。

簽署您的要求

reference將引導您完成計算數字簽名爲您簽署的請求所需的步驟。

如果你只是想測試使用Postman您的API,這可以通過選擇授權選項卡,選擇AWS簽名的授權類型來完成。請在ACCESSKEY輸入字段中輸入您的AWS IAM用戶的訪問密鑰ID和SecretKey的您的IAM用戶密鑰,指定相應的AWS地區,在調用URL指定的區域相匹配。在中輸入execute-api服務名稱

這應該建立類似如下的標題:

POST /prod/yourapi HTTP/1.1 
Host: XXXXXXXXXX.execute-api.us-east-1.amazonaws.com 
Content-Type: application/json 
X-Amz-Date: 20170302T080546Z 
Authorization: AWS4-HMAC-SHA256 Credential=YOURACCESSKEY/20170302/us-east-1/execute-api/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature=000000000000000000000000000000000000000000000000000000 
Cache-Control: no-cache 
+0

謝謝您的回答。我希望能有更多這樣的東西:我在某些第三方(或自定義)數據庫或其他方面創建了一個用戶......用戶使用他的憑證登錄......然後我在某種數據庫中創建一個會話,然後保留該用戶所屬的IAM角色列表......然後當用戶點擊終端時...... AWS會計算出該用戶屬於哪個角色並在該點執行授權。 –

+0

我認爲您需要在您的案例中實施[API網關自定義授權者](http://docs.aws.amazon.com/apigateway/latest/developerguide/use-custom-authorizer.html),而無需將IAM角色存儲在數據庫中。每個用戶的訪問級別將根據鏈接到每個用戶的授權令牌(例如,通過您的應用中的用戶組)進行評估,並將傳遞給您的自定義授權人。 –

+0

Cognito用戶池正是你正在尋找的。自推出功能http://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html以來,API Gateway已支持cognito用戶池。 –

相關問題