【问题标题】:Twilio HTTP Authentication for programmable sms status callback urls用于可编程短信状态回调 url 的 Twilio HTTP 身份验证
【发布时间】:2020-05-08 22:26:22
【问题描述】:

我想使用 HTTP 基本身份验证来密码保护可编程短信的状态回调端点。在没有授权标头的 Twilio 的初始请求中,我发回了状态代码 401,其中 WWW-Authenticate 标头设置为“基本领域='某个领域'”。但是,我没有收到来自 Twilio 的带有授权标头的以下请求。

参考:https://www.twilio.com/docs/usage/security#http-authentication

// 发送带有状态回调的短信

 const details = await client.messages
  .create({
     body: 'This is the ship that made the Kessel Run in fourteen parsecs?',
     from: 'TEST',
     to: '......',
     statusCallback: `https://user123:pass123@foo.com/status`
   })

// 来自日志的 Lambda 响应标头

Method response headers: {WWW-Authenticate=Basic realm='Validate twilio request', Content-Type=application/xml}

注意:为什么需要基本身份验证的原因是使用提供的用户名和密码来验证请求的真实性。我没有使用 X-Twilio-Signature HTTP 标头,因为我无权访问身份验证令牌来验证请求并且正在使用 api 密钥发出请求。

【问题讨论】:

    标签: twilio basic-authentication twilio-api http-authentication


    【解决方案1】:

    我使用配置了 Twilio statusCallback 基本身份验证的 Ngrok(启用了身份验证)进行了测试,它可以正常工作。尝试修改您的响应标头,看看是否有任何改变。

    Ngrok 返回以下响应头:

    HTTP/1.1 401 Unauthorized
    Content-Length: 20
    Content-Type: text/plain
    Www-Authenticate: Basic realm="ngrok"
    

    【讨论】:

    • 谢谢@Alan,你确实为我指明了正确的方向。经过仔细检查,我意识到 API 网关响应的标头已重新映射到 x-amzn-Remapped-WWW-Authenticate,这就是 Twilio 没有响应的原因。
    【解决方案2】:

    @Alan 的回答让我进一步调查 API Gateway 返回的标头。 lambda 返回的“WWW-Authenticate”标头已由 API Gateway 重新映射(在此处了解更多信息:https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html

    解决方案是实现一个 lambda 授权器来拦截请求并进行必要的身份验证,即检查 Authorization 标头。然后,lambda 授权者允许或拒绝将请求传递给 lambda 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多