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