我们目前正在实施Mailgun的webhook,以便在我们的应用程序中的评论帖子中将电子邮件回复转换为回复。我们设置了一条匹配收件人的路线,并将操作设置为store(notify="https://example.com/example-endpoint")
。 Mailgun将数据POST到给定的端点,然后我们处理该消息并将其添加到应用程序注释线程。
我的问题是:
如何锁定端点,以便Mailgun是唯一可以在此处发布的实体?是否有可列入白名单的IP列表?是否有他们发送的特殊密钥,我可以根据私有API密钥进行验证?
答案 0 :(得分:1)
我在文档中找到了自己的答案。我应该更仔细地阅读文档。
https://documentation.mailgun.com/user_manual.html#webhooks下的“保护Webhooks”部分说:
为确保事件请求的真实性,Mailgun会签名并发布签名以及其他webhook参数。
我必须使用api密钥作为HMAC密钥,将有效负载中的signature
值与timestamp
和token
的SHA256 HMAC哈希值进行比较。
例如:
$_POST['signature'] === hash_hmac('sha256', $_POST['timestamp'] . $_POST['token'], 'example-api-key);