我有一个场景,我的服务的调用方将传递一个JWT(JSON web令牌),我想将该值传递给一个使用lambda函数的自定义授权器,以便对其进行解密,并向该调用方返回一个策略,该策略可以允许或拒绝该用户。此外,在lambda完成JWT解密后添加一个头值。
例如:
- 调用者(最终用户)调用服务serviceX(POST/Get)
- 呼叫到达AWS API网关
- 服务标有授权方式,即自定义授权人
- 自定义授权程序调用lambda函数
- Lambda函数解密JWT
- Lambda函数添加新标头/修改现有标头
- 终端服务(serviceX)接收请求
除了数字6之外,我已经实现了上面的所有示例,我不能从lambda中添加新的头值或修改现有的头值。
我搜索了很多,但找不到这样做的方法。
AWS关于这个问题的任何进一步的文档或片段,如果需要,我将根据请求提供。
您不能从自定义授权器设置标题。但是,您可以返回一个可以在serviceX函数中使用的值的上下文映射。
因此,自定义授权器将策略与上下文一起返回:
{
"principalId": "yyyyyyyy",
"policyDocument": {
... blah blah ...
},
"context": {
"customvalue": "response-from-number-6"
}
}
然后,您可以在serviceX函数中访问以下属性:
$context.authorizer.customvalue
这能解决您从自定义授权人返回值的问题吗?