【问题标题】:Adding custom authorization gives error : The request signature we calculated does not match the signature you provided添加自定义授权会报错:我们计算的请求签名与您提供的签名不匹配
【发布时间】:2016-04-02 06:22:41
【问题描述】:

我有时会遇到此错误(并非总是如此)。我在 API Gateway 函数中创建了一个资源和一个方法。然后我将它映射到一个 Lambda 函数。在那里进行测试时,一切正常。

现在我在该方法中添加了一个自定义授权函数。现在,如果我在那里测试它,

  • 如果我不提供 Authorization 标头,它可以工作(因为它尚未部署。部署后,它将需要 Auth 标头)
  • 但是,如果我提供授权令牌,则会收到错误消息:

我们计算的请求签名与您的签名不匹配 假如。检查您的 AWS 秘密访问密钥和签名方法。咨询 有关详细信息,请参阅服务文档。\n\n规范字符串 这个请求应该有 已\n'POST\n/2015-03-31/functions/arn%3Aaws%3Alambda%3Aus-eas

更多细节:属于该方法的 lambda 函数已被删除。然后我重新创建了同名的函数。并注意到该方法在部署 API 时被删除。所以我重新创建了映射并将其映射到 Lambda 函数。从那时起,我就面临着这个问题。我确信如果我更改 Lambda 的名称,它可能会解决问题。但我认为这是 AWS 的一个错误,而不是我的问题。需要澄清我是否做错了什么?

【问题讨论】:

    标签: aws-lambda aws-api-gateway


    【解决方案1】:

    看起来当前部署的 API 版本正在将 Authorization 标头从方法请求转发到集成请求 (Lambda)。如果您正在尝试修复 API 的当前状态,那么我建议从方法请求中删除 Authorization 标头,这也会将其从集成请求中删除。这应该可以修复 Lambda 签名错误。

    如果您尝试在方法上使用自定义授权器,则无需在方法请求中设置 Authorization 标头。您只需将授权者身份源设置为'method.request.header.Authorization'

    【讨论】:

    • 谢谢,删除方法请求中的 Authorizaton 标头解决了问题
    • "您只需将授权人身份源设置为'method.request.header.Authorization'" 您能否详细说明如何在API Gateway 中执行此操作?删除授权标头时,它会正确传递给 AWS Lambda 函数,但标头已消失。是否在方法请求中?
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2021-10-15
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    相关资源
    最近更新 更多