亚马逊网络服务-API网关方式-自定义授权使用lambda函数问题



我有一个场景,我的服务的调用方将传递一个JWT(JSON web令牌),我想将该值传递给一个使用lambda函数的自定义授权器,以便对其进行解密,并向该调用方返回一个策略,该策略可以允许或拒绝该用户。此外,在lambda完成JWT解密后添加一个头值。

例如:

  1. 调用者(最终用户)调用服务serviceX(POST/Get)
  2. 呼叫到达AWS API网关
  3. 服务标有授权方式,即自定义授权人
  4. 自定义授权程序调用lambda函数
  5. Lambda函数解密JWT
  6. Lambda函数添加新标头/修改现有标头
  7. 终端服务(serviceX)接收请求

除了数字6之外,我已经实现了上面的所有示例,我不能从lambda中添加新的头值或修改现有的头值。

我搜索了很多,但找不到这样做的方法。

AWS关于这个问题的任何进一步的文档或片段,如果需要,我将根据请求提供。

您不能从自定义授权器设置标题。但是,您可以返回一个可以在serviceX函数中使用的值的上下文映射。

因此,自定义授权器将策略与上下文一起返回:

{
"principalId": "yyyyyyyy",
"policyDocument": {
... blah blah ...
},
"context": {
"customvalue": "response-from-number-6"
}
}

然后,您可以在serviceX函数中访问以下属性:

$context.authorizer.customvalue

这能解决您从自定义授权人返回值的问题吗?