1

我想要做的是將API網關設置爲我的Lambda函數,該函數將一些內容保存在DynamoDB中(或其他我只想登錄用戶的東西)。但我不明白如何驗證AccessToken以及如何從中獲取用戶。如何在AWS Lambda中驗證Cognito訪問令牌以允許網關API調用?

我發現這個post在AWS上論壇,我決定嘗試方法1.

Cognito用戶池+ API網關+ API網關定製認證器+ Cognito用戶池訪問令牌。

所以,現在我已經登錄的用戶:

var authenticationData = { 
    Username : 'username', // your username here 
    Password : 'password', // your password here 
}; 
var authenticationDetails = new AWSCognito.CognitoIdentityServiceProvider.AuthenticationDetails(authenticationData); 

var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData); 
cognitoUser.authenticateUser(authenticationDetails, { 
    onSuccess: function (result) { 
    console.log('access token + ' + result.getAccessToken().getJwtToken()); 
.... 

和他的accessToken。我還在API調用中設置了自定義API網關自定義授權者。

現在我應該驗證訪問令牌並決定是允許還是拒絕方法調用。但我不明白如何做到這一點,以及如何從令牌中檢索用戶?

回答

4

你不需要API網關自定義授權者...只是來驗證API終點 - 轉到它的方法請求,並選擇AWS_IAM授權dropdown ..其中NONE默認選擇...

當訪問令牌發送到此端點時 - 它將AUTOMATICALLY檢查訪問令牌角色(與cognito服務通信後)並檢查使用角色附加的策略。

如果IAM策略允許調用此終點 - AWS API將執行進一步否則將拋出你回來403錯誤或錯誤

你不需要編寫任何代碼 - 除非你有一些完全不同的身份驗證邏輯應用 - 它可以通過「API網關自定義授權者」

0

對於Cognito用戶池+ API網關+ API網關定製認證器+ Cognito用戶池的訪問令牌

您應該創建Cognito授權人可以實現(在創建自定義授權人時可作爲選項)並鏈接到您r用戶池&身份池,然後客戶端需要發送idToken(使用用戶池SDK生成)訪問端點。此idToken將通過Coginito授權人(在授權方法下拉菜單中使用)通過Cognito Identity Pool進行驗證。

通過SDK生成的idToken可以使用另一個lambda +端點(如登錄端點)完成,也可以使用cognito mobile sdk's生成。

相關問題