首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为未经验证的API网关请求添加默认节流API密钥以防止滥用?

如何为未经验证的API网关请求添加默认节流API密钥以防止滥用?
EN

Stack Overflow用户
提问于 2017-09-25 10:39:12
回答 3查看 1K关注 0票数 2

我想为未经身份验证的请求添加一个默认的节流API密钥,以防止滥用。

我将如何在API网关中做到这一点?

编辑

为了更清楚地说明我需要什么,我如何在API网关中转换请求?这个是可能的吗?

EN

回答 3

Stack Overflow用户

发布于 2017-09-25 10:43:46

我认为使用科尼托是授权API网关的最佳方式。

如果您想要一个默认的API密钥,那么可以使用自定义API网关授权程序。请查看同一这里的正式文档

票数 1
EN

Stack Overflow用户

发布于 2017-09-25 12:08:55

您需要将API密钥存储在应用程序的服务器端,不应该将其公开给客户端(虽然API密钥不被视为安全令牌,但恶意方可以使用它来调用您的API)。

根据应用程序使用API的性质,有几个选项可供选择。

  • 如果它是一个单页web应用程序,前端托管在S3中,则可以使用AWS CloudFront将API键存储在标头中,并将其转发到API网关,同时还可以通过相同的CloudFront发行版为前端服务。这也将消除您的web应用程序和API网关之间的跨源资源共享问题。
  • 如果您有web服务器,则可以将API密钥存储在Web服务器上,并使用它向API网关代理请求,同时设置API键头值。

注意:不建议使用API密钥进行身份验证。

票数 1
EN

Stack Overflow用户

发布于 2017-09-26 06:07:56

这就是我解决它的方法。

创建使用计划,并在允许的请求上设置节流、突发和最大限值。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/APIGateway.html#createUsagePlan-property

API密钥:

创建API键(createApiKey)并将其与已经定义的使用计划关联到(createUsagePlanKey)。这将允许为所收到的请求定义限制。

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/APIGateway.html#createApiKey-property

http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/APIGateway.html#createUsagePlanKey-property

有一个单独的lambda来监视生成的API并在它过期后进行清理,这样您就不会用未使用的键淹没API。

如果你把它带到CloudFront,你可以创建自签名的网址,这将是有效的一段时间。在该时限之后,URL将无效。这是为了保持自己的时间限制的用户,所以在给定的时间限制,他们可以访问什么资源。

我们还使用了另一个usecase,您只能使用自定义Authorizer在某些urls上对用户进行身份验证。被调用的任何其他urls都将返回未经授权而不需要任何其他代码。

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46403198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档