当使用Amazon API网关时,如何从Django后端获取请求中使用的API密钥



很好的解释性标题。我在AWS中使用API网关,需要一个API密钥来访问用Django编写的后端(不使用lambda)。我需要知道如何访问请求中使用的API密钥,以跟踪谁在应用程序级别做了什么。

您可以使用映射模板并从$context变量中获取API Key,它是标识对象中的apiKey属性:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-可变参考

为您的请求创建一个映射模板,并在其中包含属性。例如,如果您想包含整个请求主体+API密钥,您可以这样做:

{
  "body": $input.json('$'),
  "apiKey": "$context.identity.apiKey"
} 

根据后端应用程序的构建方式,您可以在HTTP参数(路径、查询字符串或头)或请求主体中将API密钥发送到应用程序。请阅读有关如何在两个系统之间移动数据的文档。

谢谢,Ryan

以下是我最终实现它的方法。在模板的顶部或底部,包括这一行。

#set($context.requestOverride.header.x-api-key = $context.identity.apiKey)

当您的后端收到此请求时,api密钥将位于标头x-api-key中。

这里有一个基本的映射模板,它只转发(json)主体和头部。

$input.json("$")
#set($context.requestOverride.header.x-api-key = $context.identity.apiKey)

API网关使用X-API-Key头,所以我喜欢我的后端也使用它。这样,我就可以使用相同的测试命令,只是URL不同。

相关内容

  • 没有找到相关文章

最新更新