【发布时间】:2021-12-10 22:29:16
【问题描述】:
我已使用 HTTP API 设置 API Gateway,该 API 使用 VPC 链接配置为私有应用程序负载均衡器。
我有一条使用此集成的路线,我可以请求我的路线我从我的 API 获得了成功的响应。
当我现在想保护这条路线时,问题就来了。 我选择了一个简单的 lambda 授权器并设置了一个我在许多 tuts 中看到的基本示例:
exports.handler = async(event, context) => {
let response = {
"isAuthorized": false,
"context": {
"AuthInfo": "defaultdeny"
}
};
if (event.headers.authorization === "Bearer secretToken") {
response = {
"isAuthorized": true,
"context": {
"AuthInfo": "Customer1"
}
};
}
return response;
};
当我附上我的授权人时,我会得到:
{
"statusCode": 401,
"error": "Unauthorized",
"message": "Invalid token."
}
此响应似乎不是来自授权方,因为在云手表中我可以看到授权方正在返回 true。
我不确定是否因为我正在使用与 VPC 链接的集成访问私有资源,是否还有其他需要做的事情,或者我缺少什么。
在这种情况下,我很难找到任何关于授权人的文档。
非常感谢任何帮助。
授权人设置
【问题讨论】:
-
私有集成应该不是问题,因为我之前使用过授权器 lambda 和私有 VPC 集成。您能否分享一下您是如何在 HTTP API 中配置授权方 lambda 的(因为根据配置,预期响应有不同的版本)。
-
在这种情况下,您能否将配置的屏幕截图添加到问题中?
-
我在控制台配置,选择类型:Lambda,从post中选择lambda函数,payload格式版本:2.0,响应模式:简单,身份来源$request.header.Authorization,自动授予API调用您的 Lambda 函数的网关权限已开启。
-
在帖子中附上截图
-
源站服务上是否运行了其他身份验证机制?
标签: amazon-web-services aws-lambda amazon-vpc strapi amazon-api-gateway