【问题标题】:Lambda authorizer response using async/await in Node.js在 Node.js 中使用 async/await 的 Lambda 授权方响应
【发布时间】:2019-08-02 00:35:45
【问题描述】:

我正在尝试使用 node.js async/await 而不是回调在 aws 上创建 lambda 授权方,但没有关于如何创建返回到 API Gateway 的 HTTP 响应的信息。例如,如果我返回这个:

{
  statusCode: 401
}

API 网关似乎不理解并向客户端返回错误 403:

{
    "statusCode": 403,
    "error": "Forbidden",
    "message": "No principalId set on the Response"
}

有谁知道如何做这里描述的事情:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html 但是使用异步/等待?

提前致谢!

编辑:

返回错误 401 的方法就是抛出这样的错误: throw new Error("Unauthorized") 如果用户明确拒绝/允许,则只需返回 JSON 策略。

【问题讨论】:

  • 你能在这里放一些代码,以帮助你吗?
  • 如果你自己想通了,你可以回答你自己的问题:)。
  • 你有没有想过这个问题?使用回调会导致警告,但我宁愿在没有 cb 的情况下使用 async/await。
  • @Chance 解决方案在我帖子的“编辑”部分。您只需抛出一个带有“未经授权”的错误消息。我为自己的问题添加了一个答案,这样它会更加明显。
  • @julient-monisnap 谢谢 :)。很简单!

标签: node.js amazon-web-services aws-lambda


【解决方案1】:

要返回 401 错误,您只需抛出带有“未经授权”的错误消息,如下所示:

throw new Error("Unauthorized")

如果用户明确拒绝/允许,只需像处理回调一样返回 JSON 策略。

【讨论】:

    【解决方案2】:

    我认为接受的解决方案(不再)不起作用。我试过这样:

    exports.authorize = async (event, context) => {
      throw new Error("Unauthorized")
    }
    

    它可以工作,但在我的日志中我可以看到这个错误:

    ERROR Invoke Error {"errorType":"Error","errorMessage":"Unauthorized","stack":["Error: Unauthorized"," at Runtime.exports.authorize [as handler] (/var/task/handler/auth.js:21:13)"," at processTicksAndRejections (internal/process/task_queues.js:97:5)"]}

    【讨论】:

    • 您是否在 lambda 授权程序(不是常规 lambda)中使用它?你用的是哪个版本的node.js?
    • 是的,授权者 lambda。我正在使用节点 12.x。
    【解决方案3】:

    根据我的阅读(一些代码示例会有所帮助),听起来您没有正确调用回调,或者没有在正确的位置调用它。你可以使用

    callback("Some error message.");

    发回带有 401 状态代码的响应。您还可以通过执行以下操作来更改此设置:

    var response = {
      statusCode: 401, /* some number */        
      body: "Oops!" /* some message */
    }; 
    callback(null, response); 
    

    我会查看this 页面以获取更多信息。

    【讨论】:

    • 感谢您的回答,但我不想使用回调。我找到了一种方法,并将编辑我的帖子。
    猜你喜欢
    • 2017-01-23
    • 2019-04-21
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    相关资源
    最近更新 更多