首页 > 解决方案 > 将 Cognito 联合身份与 API Gateway 和邮递员结合使用

问题描述

我的目标是让我的用户使用 Cognito 登录并获得一个临时 IAM 角色,允许他们通过 HTTP 访问 API Gateway 中的特定方法。

到目前为止我做了什么:

我可以使用通过 Amplify 创建的前端在浏览器中通过 Cognito 登录。

当我签入浏览器本地存储时,我可以看到我有以下内容:

当我COGNITO在 API 网关上使用授权方完成此操作后,我在 Postman 中所要做的就是添加一个Authorization标题并粘贴到idToken. 这让我可以访问 API。

如何使用具有 IAM 授权的 Postman 测试我的 API?

我仍然得到令牌,但现在将它们粘贴到Authorization标题中会给我一条错误消息:

Authorization header requires 'Credential' parameter. Authorization header requires 'Signature' parameter. Authorization header requires 'SignedHeaders' parameter. Authorization header requires existence of either a 'X-Amz-Date' or a 'Date' header.

我已经读到我需要签署请求,但我不确定如何从基于 Web 浏览器的应用程序中执行此操作。

即使我能做到这一点,我怎么能在 Postman 中进行测试,或者这不再可能?

标签: amazon-web-servicespostmanaws-api-gatewayamazon-cognito

解决方案


好的,仍然可以通过 Postman 发出请求,但它们必须是 Amazon 的 Sigv4 格式。

解决方法如下。

  1. 获取accessKey,secretKeysessionToken从登录过程中返回*。

  2. 在 Postman 中,对于请求,选择Authorization选项卡并type选择AWS Signature

  3. accessKey将步骤 1 中检索到的secretKey和输入sessionToken到 Postman 中的相应字段中。

  4. 您还需要设置AWS Regioneg eu-central-1

  5. 按发送。

Postman 将创建适当的 Sigv4 请求来调用您的 API。您可以在 Postman 的请求选项卡中看到此结果,Headers它将自动创建所需的标头。

*我在我的 React/Amplify 应用程序中添加了临时代码来执行此操作。


推荐阅读