0

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

API 文档让我很困惑,因为回调请求与提到的格式不匹配(特别是它们没有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 回调真实性的正确方法是什么?

谢谢!

4

1 回答 1

1

Twilio 开发人员布道者在这里。

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

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

导航到 Twilio 控制台,然后到 Authy 部分,选择您的 Authy 应用程序,然后打开 Push Authentication 设置。 在那里,您将找到 webhook Endpoint/URL 的输入,这是您设置 webhook URL 的地方。

设置 webhook URL 后,您会发现 webhook 事件通过您的应用程序进行推送身份验证批准和拒绝。这些请求也将附带X-Authy-Signature-NonceX-Authy-Signature标头,您将能够使用此处说明的方法重新创建签名

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

于 2020-09-28T05:33:56.307 回答