【问题标题】:In AWS how do I add an API key to my API?在 AWS 中,如何将 API 密钥添加到我的 API?
【发布时间】:2020-07-24 17:29:21
【问题描述】:

您好:我一直在关注 AWS 文档中的两个教程:

创建示例宠物商店 API (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-from-example.html)

...并创建 API 密钥 (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-setup-api-key-with-console.html#api-gateway-usage-plan-create-apikey)。

当我使用提供的 URL 测试宠物商店的 get 方法时,它返回:

欢迎使用您的 Pet Store API 您已成功部署您的 第一个 API。您看到这个 HTML 页面是因为 GET 方法 API 的根资源将此内容作为 Mock 集成返回。

Pet Store API 包含 /pets 和 /pets/{petId} 资源。经过 向 /pets 发出 GET 请求,您可以在您的 API。如果您正在寻找特定的宠物,例如与 ID 1,您可以向 /pets/1 发出 GET 请求。

您可以使用 REST 客户端(例如 Postman)来测试 POST 方法 你的 API 来创建一个新的宠物。使用下面的示例正文发送 POST 请求:

{ “类型”:“猫”, “价格”:123.11 }

现在我转到 API Gateway -> API -> Resources -> -> Method Request -> API Key Required 并将其更改为“True”并重新部署。

当我转到提供的 URL 进行测试时,现在页面返回:

{“消息”:“禁止”}

这有道理...我告诉它 API required = true,对吧?

所以我的问题是,如何传递 API 密钥?这样我就没有得到“禁止”的结果?我在上面粘贴的教程链接中没有看到,也无法在其他地方找到。

【问题讨论】:

  • 您好,如果以上两种情况都不适合您,您能解释一下吗?为您解决这个问题会很好,可能需要更多详细信息来解决这个问题:)
  • @ChrisWilliams。我回复了 Oxi 的评论并有后续问题。我没有回复你的问题,因为它没有解决我的问题,而且我已经把你提供的链接加红了。

标签: amazon-web-services rest aws-api-gateway api-key


【解决方案1】:
  1. 您创建一个Usage Plans
  2. 将此使用计划附加到您的 API 和阶段
  3. 创建API Key
  4. 现在使用名为 x-api-key 的标头调用您的 API,其值是在步骤 3 中创建的 API Key

示例: curl -i -H "x-api-key: Cd2YiWs8Fv8Lg6njI0wXf1iiNOE94XjM3EQe8567" -X GET https://7r9cvghbf4.execute-api.ap-northeast-2.amazonaws.com/dd/pets

【讨论】:

  • 我有一个 docs.aws.amazon.com/apigateway/latest/developerguide/… 的使用计划。我在该使用计划中有一个 API 密钥。单击链接时,它仍然会抛出 {"message":"Forbidden"} 结果(尽管您的 curl 示例对我有用)。我有两个问题: 1. 是否可以通过 AWS 提供的 URL 使用 API 密钥? 2. 在您的 curl 示例中传递密钥是否安全?
  • 这个使用计划附加到 API 阶段? 1. 您使用 aws 为 API 阶段“AS HEADER x-api-key”提供的 URL 发送此 API 密钥 2. 将其作为标头发送与将 uname/password 作为请求正文发送一样安全。 curl 很容易显示这就是我使用 curl 的原因。您可以使用任何其他方式来使用 http url。要从浏览器中使用它,您的应用 javascript 应设置标题。
  • 理解并感谢您的回复...但是如果我 curl -i -H "x-api-key: Cd2YiWs8Fv8Lg6njI0wXf1iiNOE94XjM3EQe8567",那不是暴露了密钥吗?我认为这就是秘密管理器的用途......将 API 密钥存储在那里并以这种方式访问​​秘密?!
  • 1) API 是 HTTPS,所以它是安全的。 2) Header 总是与请求一起发送,它只是使用 CURL,你会马上看到它。使用浏览器,您必须打开开发者控制台才能看到它。因此,对于触发 API 的人来说,标头是安全的 3)使用您的 API 的外部工具的局外人,您必须给他 KEY
【解决方案2】:

假设您已按照创建 API 密钥的所有步骤操作,您可以通过在请求中的 x-api-key 标头中指定此 API 密钥来使用它。

您将 API 密钥分发给您的客户,并要求他们将 API 密钥作为每个传入请求的 X-API-Key 标头传递。

有关在 API Gateway 中使用 API 密钥的更多信息,请访问:Choose an API key source - Amazon API Gateway

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-14
    • 2017-12-03
    • 2012-02-03
    • 2019-01-15
    • 2022-07-01
    • 1970-01-01
    • 2016-11-20
    • 2020-10-09
    相关资源
    最近更新 更多