问题描述
我一直在YouTube Push Notifications Subscription上工作。
我可以订阅它,并且确实收到了YouTube的推送通知。我已为此预订使用HMAC secret。我需要确认我收到的数据是从YouTube服务器发送的。我找不到任何文档来了解PubSubHubbub如何创建签名。
我尝试了以下步骤:
但是此签名与PubSubHubbub发送的签名不匹配。
有人可以解释为此目的计算签名的步骤吗?
谢谢。
解决方法
根据PubSubHubbub Core(最新的v0.4)的官方文档,您必须严格遵循此处描述的算法:
8. Authenticated Content Distribution
如果订户在其订阅请求中提供了
hub.secret
的值,则集线器务必生成有效载荷的HMAC签名,并将该签名包含在内容分发请求的请求标头中。X-Hub-Signature
标头的值必须采用sha1=signature
的形式,其中signature
是SHA1 signature [RFC3174]的40字节十六进制表示形式。必须使用HMAC algorithm [RFC2104]以请求正文作为数据,以hub.secret
作为密钥来计算签名。订阅者收到指定了
X-Hub-Signature
头的内容分发请求时,应使用与集线器相同的方法重新计算具有共享密钥的SHA1签名。如果签名不匹配,则订阅者仍必须返回2xx成功响应以确认接收,但在本地将消息视为无效。将此技术与HTTPS [RFC2818]一起用于订阅请求,可使简单的订阅者从集线器接收经过身份验证的通知,而无需订阅者运行HTTPS [RFC2818]服务器。但是请注意,此签名仅确保未伪造有效载荷。由于通知中还包含标头,因此订阅者不应将其视为安全的,除非订阅者当然使用HTTPS [RFC2818]回调。
如果您要提到使用的编程环境,我可能会为您提供进一步的帮助。