使用自定义授权程序上下文在AWS API网关上添加标头不起作用

时间:2018-02-15 02:07:34

标签: amazon-web-services authentication aws-lambda aws-api-gateway

我已使用VPC链接在AWS API网关上使用单一方法设置API到HTTP服务。

API gateway setup

我还使用Lambda为该API方法设置了TOKEN自定义授权程序。

Authorizer setup

自定义授权程序基于AWS Node.js自定义授权程序蓝图,我基本上允许所有方法通过并返回'上下文'部分以及IAM。

{
  "principalId": "user|a1b2c3d4",
  "policyDocument": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Action": "execute-api:Invoke",
        "Effect": "Allow",
        "Resource": [
          "arn:aws:execute-api:[region]:[account_id]:[restApiId]/[stage]/*/*"
        ]
      }
    ]
  },
  "context": {
    "key": "new-token",
    "number": 1,
    "bool": true
  }
}

这是Lambda测试时Lambda测试控制台和API网关自定义授权控制台的结果。

最后,我将Authorization标头映射到' context.authorizer.key'在“集成请求”部分中。

现在,当我执行请求时,我希望Authorization标头会填充来自' context'的值。授权人的回复部分,但它从未填充过。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

事实证明我的设置一直都是正确的。

我正在使用AWS API Gateway测试工具进行测试(使用其中一个屏幕截图中的TEST按钮),但该工具实际上并不允许您端到端地测试它。我最终部署了我的舞台,然后使用Postman进行测试。然后它开始工作了。怪异。