7

我想使用Cognito Federated Entity(允許通過Google等登錄)來允許訪問API網關以獲取網絡JavaScript應用程序。 我設法通過用Google登錄來獲取Cognito的sessionToken,但我陷入了API網關配置以啓用會話令牌。使用Cognito聯合身份驗證的API網關身份驗證

對於整個聯邦實體身份驗證工作流程,有沒有很好的教程?

謝謝!

回答

12

既然你要調用通過認證Cognito身份的API,第一

  1. 修改identitypool的權威性作用,有API執行的政策,你可以只連接所管理的策略「AmazonAPIGatewayInvokeFullAccess」到各自的角色
  2. 在各自下方法請求API網關,同時採用「IAM」添加授權爲 「AWS_IAM」
  3. 您需要登錄請求身份驗證,這裏解釋https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html

  4. 除了#3之外,您還可以從API網關的舞臺面板生成並下載SDK,並通過sdk調用api。

一旦你獲得cognito會話,你可以使用SDK像下面

var apigClient = apigClientFactory.newClient({ 
    accessKey: AWSCognito.config.credentials.accessKeyId, 
    secretKey: AWSCognito.config.credentials.secretAccessKey, 
    sessionToken: AWSCognito.config.credentials.sessionToken 
}); 

var params = { 
    // This is where any modeled request parameters should be added. 
    // The key is the parameter name, as it is defined in the API in API Gateway. 
}; 

var body = {}; 

var additionalParams = { 
    // If there are any unmodeled query parameters or headers that must be 
    // sent with the request, add them here. 
    headers: { 
     'Content-Type': 'application/json' 
    }, 
    queryParams: {} 
}; 

apigClient.<resource><Method>(params, body, additionalParams) 
.then(function(result) { 
    // 
}).catch(function(err) { 
    // 
}); 
+1

非常感謝帕塔撥打電話!我會試試這個。 – Mazzaroth