如何确保只有Twilio命中我的api端点?

时间:2016-02-18 03:13:47

标签: ruby-on-rails ruby api twilio twilio-click-to-call

我正在使用Twilio Voice API拨打电话。流程是用户在我的网站上启动操作,然后我们通过ruby gem中的twilio对象向Twilio API发送请求。该对象包含

  

'从'number,'到'number,'url'

'url'是我的API终点,看起来像这样

  

... / API / V1 /用户/这里

从这里开始,我将请求路由到我的一个控制器的动作,以提供一个twiml来播放。

我的问题是:如何确保ONLY TWILIO能够ping这个api端点?

a)在Twilio的请求中是否有某种标识符可用于验证来源?

b)我正在使用Grape gem来设置api端点。为此我可以用葡萄宝石做点什么吗?

2 个答案:

答案 0 :(得分:3)

Twilio传道者在这里。

Twilio有一个我们发送的名为X-Twilio-Signature的特殊标题,允许您validate that the webhook request is only coming from Twilio

Ruby帮助程序库包含一个中间件,您可以插入该中间件以检查此标头并执行验证。查看此博客文章了解更多信息:

https://www.twilio.com/blog/2014/09/securing-your-ruby-webhooks-with-rack-middleware.html

希望有所帮助

答案 1 :(得分:0)

执行此操作的一种简单方法是使用API​​令牌。选择一个漂亮的随机字符串并设置您的Twilio URL以包含?token=abcd1234,然后在您的服务器上验证该令牌是否存在。任何打到你的终端的人都没有它,所以你知道它必须是Twilio。