如何计算YouTube PubSubHubbub数据的签名



我一直致力于YouTube推送通知订阅。

我可以订阅它,并且确实收到了来自YouTube的推送通知。我已将HMAC机密用于此订阅。我需要确认我收到的数据是从YouTube服务器发送的。我找不到任何文档来了解PubSubHubbub是如何创建签名的。

我尝试了以下步骤:

  1. 确实规范了请求主体(它是XML内容(
  2. 确实创建了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]回调。

如果您提到您使用的编程环境,我可能会进一步帮助您。

最新更新