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

时间:2016-01-07 02:08:54

标签: django api amazon-web-services authorization aws-api-gateway

非常自我解释的标题。我在AWS中使用API​​网关,需要API密钥才能访问用Django编写的后端(不使用lambda)。我需要知道如何访问请求中使用的API密钥,以跟踪谁在应用级别做了什么。

3 个答案:

答案 0 :(得分:4)

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

为您的请求创建一个映射模板,并在其中包含该属性。例如,如果您想要包含整个请求正文+ API密钥,则可以执行此操作:

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

答案 1 :(得分:0)

根据后端应用程序的构建方式,您可以使用HTTP参数(路径,查询字符串或标头)或请求正文将API密钥发送到应用程序。请仔细阅读docs,了解如何在两个系统之间移动数据。

谢谢, 瑞恩

答案 2 :(得分:0)

这是我最终使它工作的方式。在模板的顶部或底部,包含此行。

#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 Gateway 使用 X-API-Key 标头,所以我希望我的后端也使用它。这样我就可以使用相同的测试命令,只是 URL 不同。