amazon-web-services - 401 的自定义响应 Lambda 授权器

标签 amazon-web-services aws-lambda aws-api-gateway lambda-authorizer

使用字符串 Unauthorized 从 Lambda 授权方调用 Lambda 回调函数在错误参数中返回带有正文的 401 响应:{ "message": "Unauthorized" }尝试在响应中使用任何其他字符串会导致响应:{ "message": null }相反,如果您在回调的结果参数中返回一个拒绝策略文档,您将得到一个 403 响应,类似于:{ "message": "Unable to access resource with an explicit deny" }环顾四周后,您似乎需要配置网关响应以从 Lambda 授权方返回自定义响应,我已经为 403 响应工作,但无法弄清楚如何为 401 执行此操作。
对于 403,我使用模板创建了一个网关响应:{\"message\":\"$context.authorizer.stringKey\"}然后在结果对象上我设置了以下内容ResultObject.context.stringKey = 'My custom response'这有效并记录在案 here .
但是,对于 401,因为我没有返回策略文档,所以我不知道如何使用自定义响应。我创建了与 403 相同的网关响应,但是如果我在错误参数中使用任何字符串(“未授权”除外)点击回调,我会收到空​​消息。我无法在结果参数中返回,因为这需要是包含策略文档的响应结构。
关于如何使用 401 返回自定义响应的任何想法?

最佳答案

很抱歉没有直接回答您的问题,但我确实认为人们(像我一样)在查看如何实现问题的第一部分时可能会遇到此线程(从授权方 lambda 返回 401 响应)。您可以按照 AWS 示例 here .

特尔;博士:

对于异步函数,抛出错误消息 完全匹配字符串 "Unauthorized" :

exports.handler = async function (event) {
  ...
  throw Error("Unauthorized");
}

用于同步。函数,使用其第一个参数(错误响应)调用回调函数完全匹配字符串 "Unauthorized" :
exports.handler =  function(event, context, callback) {
  ..
  callback("Unauthorized");  // Compared to a successful response `callback(null, ...)`
}

在这两种情况下,来自授权方 lambda 保护的 API 网关端点的响应将是:
401
{
  "message": "Unauthorized"
}

关于amazon-web-services - 401 的自定义响应 Lambda 授权器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51753487/

相关文章:

node.js - 使用 Nodejs 重命名文件

python - 如何使用 secret 管理器编写用于 RDS 密码轮换的 lambda 函数?

amazon-web-services - 如何为 AWS 中的 lambda 遇到的错误百分比设置警报?

amazon-web-services - 如何使用 pulumi aws provider 定义默认标签

amazon-web-services - Terraform AWS S3 - 拒绝除特定用户以外的所有人

php - S3 listObjectsV2 - StartAfter 未显示预期结果

amazon-web-services - AWS Api Gateway 附加现有策略

amazon-web-services - 通过cloudformation模板创建lambda函数时SourceArn是什么

amazon-web-services - 通过 CloudFormation 创建 AWS::ApiGateway::Method 集成时 ARN 无效

amazon-web-services - 无服务器 AWS Lambda CORS 错误