使用授权头代替x-api-key

3
我目前正在使用AWS创建API Gateway。该网关需要存储在AWS上的API密钥。根据我所看到的,将此密钥传递到标头中的正确方式是使用x-api-key。为了保持连续性,我希望有一种方法可以使用键Authorization而不是x-api-key来在POST的标头中传递密钥。但根据我所读的,由于这个网关托管在AWS上,x-api-key是传递密钥的唯一方式。是否有解决方法?
1个回答

1

Lambda授权者

我认为如果您坚持使用约定,会更容易些,而要更改则需要一些工作量。您需要创建一个Lambda授权器。这将是一个Lambda函数,它将返回给定请求的iam策略以及可选的context到您的网关。此上下文可以包含应使用哪个API密钥,尽管您需要记住,您的Lambda函数执行授权,此密钥仅在使用计划中使用。

所以,总结一下,当您创建作者时,您将选择在您的情况下使用的标头Authorization。在Lambda函数中,您将在此引用标头:event.authorizationToken。使用该标头,您构建您的iam策略,这可能意味着如果API密钥可以访问您的API,则需要手动查找此API密钥。您的Lambda函数还需要将api-key设置为$context.authorizer,其中包含您要使用的API密钥,在您的情况下将是event.authorizationToken。这将应用UsagePlan到您的API中。 CloudFront 另一个选择是在您的API前面创建CloudFront分发,并自己手动添加标头。这可能会更加昂贵,因为您需要一个CloudFront分发,然后您的Lambda@Edge将在每个请求中执行,而不是可以缓存的Lambda授权程序。您可以在此处找到示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接