【问题标题】:Can't authenticate Twilio Authy webhook callbacks无法验证 Twilio Authy webhook 回调
【发布时间】:2020-09-27 21:57:59
【问题描述】:

我正在尝试为 Authy OneTouch 推送身份验证设置 webhook。我设法成功注册到 one_touch_request_responded 事件,从订阅调用中保存了 webhook 签名密钥,但我仍然无法验证请求:任何攻击者都可以伪造虚假请求并轻松绕过 2FA 检查。

API documentation 让我很困惑,因为回调请求与提到的格式不匹配(特别是它们没有 X-Authy-Signature 标头),并且只有以下标头:

{
  host: 'XXX.ngrok.io',
  'user-agent': 'Authy-api-webhooks/1.0',
  'content-length': '2211',
  'accept-encoding': 'gzip',
  'content-type': 'application/json',
  'x-forwarded-for': '3.89.35.175',
  'x-forwarded-proto': 'http'
}

我也尝试验证 JWT 令牌的签名,但仍然无济于事(传入 POST 请求:{"body":"a_jwt_token"}):我总是得到一个无效的签名(同样使用 https://jwt.io/)。

const jwt = require("jsonwebtoken");
jwt.verify(req.body.body, Buffer.from(MY_SECRET_KEY, "base64"), { algorithm: ["HS256"] });

检查 webhook POST 回调真实性的正确方法是什么?

谢谢!

【问题讨论】:

    标签: jwt twilio webhooks authy


    【解决方案1】:

    这里是 Twilio 开发者宣传员。

    在我看来,您好像找到了 Authy webhooks 会话,您可以订阅该会话以获取有关用户使用 Authy API 的各个部分的最新信息。

    为了获取 OneTouch 推送通知的 webhook,您应该在 Twilio 控制台中为 Authy 应用程序的推送通知设置下设置您的 webhook URL。

    一旦您设置了 webhook URL,您会发现 webhook 事件会通过您的应用程序进行推送身份验证批准和拒绝。这些请求也将带有X-Authy-Signature-NonceX-Authy-Signature 标头,您将能够re-create the signature using the method explained here

    抱歉,让您感到困惑,希望这可以为您解决问题。

    【讨论】:

    • 谢谢@philnash。我通过 API 而不是通过 Twilio 控制台设置了 webhook URL,有什么不同吗?我确实看到了通过我的应用程序的 webhook 事件,我使用的是 ngrok 代理,并且如前所述,请求没有 X-Authy-Signature-NonceX-Authy-Signature 标头。这是否可以通过通过 Twilio 控制台而不是 API 注册来解决?
    • 是的,我相信会的。这就是我之前设置 webhook 的方式,它通过控制台为我工作。
    • 实际上,我现在意识到这是注册到 webhook 的两种不同方式: - twilio 控制台:入站请求为带有 X-Authy-Signature-Nonce 标头的纯 json,我可以成功验证请求。 - webhook 注册:作为 JWT 令牌的入站请求,没有自定义标头,但我似乎无法验证它们。鉴于我可以直接从注册过程中指定回调 url(我的回调 URL 会定期更改),我仍然宁愿使用此路径。真奇怪
    • 啊,好的,要验证 JWT,您需要 API 签名密钥。这就是你的工作吗?详情在本页:twilio.com/docs/authy/api/webhooks#verify-callbacks
    • 那我恐怕有点迷路了。它必须是那些签名密钥之一!也许您可以使用您当前用于验证 JWT 的代码来更新问题?这可能会让您更容易看到正在发生的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多