首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Google云函数中验证Twilio请求

无法在Google云函数中验证Twilio请求
EN

Stack Overflow用户
提问于 2018-07-17 10:57:23
回答 0查看 630关注 0票数 1

我有一个谷歌云函数,Twilio可以向它发送带有短信状态的POST请求,但我无法使用https://www.twilio.com/docs/usage/security中列出的任何方法验证这些请求是否来自Twilio

我的第一次尝试是使用validateRequest函数,如下面的代码所示

代码语言:javascript
复制
const twilio = require('twilio');

let url = 'https://....cloudfunctions.net/...'
let token = 'XXXX';
let header = request.headers['x-twilio-signature'];
let sortedKeys = Object.keys(request.body).sort();
let sortedParams = {};

sortedKeys.forEach(key => {
  sortedParams[key] = request.body[key];
});

let validated = twilio.validateRequest(token, header, url, sortedParams);

我确认token的值与Twilio帐户设置中的身份验证令牌匹配,sortedParams包含按字母顺序排序的以驼峰为大小写的Twilio请求参数,url与创建短信时传递给Twilio客户端的url匹配。但是,validateRequest总是返回false。

我的下一次尝试是通过从https://www.twilio.com/docs/libraries/reference/twilio-node/3.18.0/webhooks_webhooks.js.html复制代码来散列url和请求参数的组合

代码语言:javascript
复制
const crypto = require('crypto')

sortedKeys.forEach(key => {
  url = `${url}${key}${request.body[key]}`;
});

let signature = crypto
    .createHmac('sha1', token)
    .update(Buffer.from(url, 'utf-8'))
    .digest('base64');

在将签名的值与头部的值进行比较时,两者始终不匹配。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51372600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档