【问题标题】:How to secure AWS-API Gateway with out Authentication如何在没有身份验证的情况下保护 AWS-API 网关
【发布时间】:2018-09-28 13:48:09
【问题描述】:

大家好,我已经编写了一个 AWS lambda 函数,它应该对所有人开放。我还配置了我的云前端,用户可以访问它。如何使 API 网关仅接受来自云端的请求或将云端域列入白名单。类似于 Allowed_hosts。

我应该无法响应邮递员或任何此类工具的任何电话。 API 网关应该只响应来自云端的调用。

我该怎么做?我不想像 Congnito 或 IAM 那样设置身份验证系统。

有没有更好的方法来做到这一点?

我查看了 CORS 和访问控制允许来源。但这些都是基于浏览器的。

我需要一个只接受来自云端或我的 s3 存储桶的调用的方法。不是来自本地主机或邮递员等。

提前致谢。

【问题讨论】:

  • 澄清一下:您的意思是在 S3/CloudFront 上托管一个使用 JavaScript 调用您的 API 方法的静态 Web 应用程序?
  • 是的,它是一个静态站点,我正在使用 JS 调用我的 API 方法
  • 在这种情况下,请求将来自客户端(浏览器),而不是 CloudFront,因为 JavaScript 在客户端执行。因此,CORS 不适合您,您可能需要某种身份验证来控制对 API 网关的访问。

标签: amazon-web-services amazon-s3 aws-lambda amazon-cloudfront aws-api-gateway


【解决方案1】:

第 1 步:

使用 API Gateway 设置 API 密钥。

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-setup-api-key-with-restapi.html

第 2 步:

使用自定义标头将 API 密钥添加到 CloudFront Origin。

如果有人在没有有效密钥的情况下调用 API 网关,它将被拒绝。

要在 CloudFront 上设置身份验证,您可以对 url 进行签名。

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我认为没有办法限制对 API GW 端点的调用...但是,您可以使用所谓的 API 密钥。当您向特定 API GW 端点发出请求时,您需要提供标头 x-api-key 和相应的 API Key 作为值。只要您为标头提供正确的值,您就可以访问端点背后的功能。如果您没有提供正确的 API 密钥,您只会得到403 Forbidden

    请查看here,如果您有任何问题,请通读文档。这很清楚。

    如果我的回答中有任何不清楚的地方,我愿意提供帮助!

    干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-21
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 2020-12-08
      • 1970-01-01
      • 2012-01-11
      相关资源
      最近更新 更多