我想为未经身份验证的请求添加默认的限制API密钥,以防止滥用。
我如何在API网关中执行此操作?
修改
为了更清楚地了解我需要的内容,如何在API网关中转换请求?这可能吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
您需要将API密钥存储在应用程序的服务器端,并且不应将其公开给客户端(尽管API密钥不被视为安全令牌,恶意方可以使用它来调用您的API )。
根据使用API的应用程序的性质,您有几种选择。
注意:请勿使用API密钥进行身份验证,不建议使用。
答案 2 :(得分:1)
这就是我解决它的方法。
使用允许的请求的限制,突发和最大限制创建使用计划。
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来监控Generated API-Keys并在它过期后进行清理,因此你不会使用未使用的密钥泛滥API-Gateway。
如果您将其带到CloudFront,您可以创建自签名URL,该URL在给定的时间段内有效。在该时间限制URL之后将无效。这是为了让用户有时间限制,因此在给定的时间限制内,他们可以访问哪些资源。
我们继续使用另一个用例,您只能使用自定义授权程序在某些网址上对用户进行身份验证。任何其他调用的网址都会在没有任何其他代码的情况下返回。
希望它有所帮助。