【问题标题】:Using Cognito federated identity with API Gateway and postman将 Cognito 联合身份与 API Gateway 和邮递员结合使用
【发布时间】:2019-04-28 07:39:08
【问题描述】:

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

到目前为止我做了什么:

  • 设置我的用户池
  • 设置我的身份池
  • 为经过身份验证和未经身份验证的用户设置 IAM 角色

  • 设置一个具有 IAM 角色的组,允许访问 POST 到(在 存在)所有 API 网关方法。

  • 将我的用户加入群组

  • 设置我的 API 网关方法以使用 IAM 授权

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

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

  • idToken
  • accessToken
  • refreshToken

当我在 API 网关上使用 COGNITO 授权方完成此操作后,我在 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-services postman aws-api-gateway amazon-cognito


    【解决方案1】:

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

    解决方法如下。

    1. 获取登录过程返回的accessKeysecretKeysessionToken*。

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

    3. 将步骤 1 中检索到的 accessKeysecretKeysessionToken 输入到 Postman 的相应字段中。

    4. 您还需要设置 AWS Region 例如eu-central-1

    5. 按发送。

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

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

    【讨论】:

    • 是否可以发布执行此过程的 React/Amplify 应用程序的代码尖峰
    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 2018-11-07
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多