生成已签名的 HMAC 令牌

使用 pod 服务发出的每个分段或清单请求都必须包含用于身份验证的 HMAC 签名令牌,作为早期广告插播通知的后备方案。

此令牌可针对每个广告插播时间点计算一次,并可在所有视频流会话中共享。

收集令牌参数

从当前广告插播时段收集以下信息,以填充令牌正文。

令牌参数
ad_break_id 如果未提供 pod_id 参数,则此参数为必需参数。 广告插播的字符串标识符。
custom_asset_key 如果未提供 event 参数,则此参数为必需参数。 Google Ad Manager 中的自定义直播素材资源键。
cust_params 可选 广告插播的自定义定位参数。
event 如果未提供 custom_asset_key 参数,则此参数为必需参数。 由 Google Ad Manager 生成的直播素材资源键。
exp 必需 相应令牌的到期时间戳(以秒为单位)。
network_code 如果提供了 custom_asset_key 参数,则为必需参数。 相应广告联盟的 Ad Manager 360 广告资源网代码。
pod_id 如果未提供 ad_break_id 参数,则此参数为必需参数。 广告插播的数字标识符。
pd 必需,但启用了无时长广告插播的活动除外。 广告插播时段的时长(以毫秒为单位)。
scte35 可选 广告插播时间点的 Base64 编码 SCTE-35 信号。

创建令牌字符串

按字母顺序列出每个参数,格式为 name=value,每个名称-值对之间以波浪号 (~) 分隔。

对于没有值的可选参数,您可以将其保留在原位,并将值设为空字符串,也可以将其完全移除。

令牌字符串格式

custom_asset_key={custom_asset_key}~exp={expiration}~network_code={network_code}~pd={pod_duration}~pod_id={ad_pod_index}~scte35={scte35_message}

生成 HMAC 签名

HMAC 签名是令牌字符串的 SHA-256 哈希(采用十六进制格式)。密钥是与 Google Ad Manager 中的直播活动相关联的 HMAC 身份验证密钥

签名令牌字符串

生成后,请按以下格式将 HMAC 签名附加到令牌字符串中

~hmac={HMAC signature}

网址编码令牌字符串

此令牌会作为网址参数传递,因此必须进行网址编码,以确保安全。

示例 1

以下示例中包含未使用的可选参数(以空字符串的形式)。

令牌字符串

cust_params=~custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=

密钥

A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC 签名

ea1081cc1ab83cacd1e64073fc19e64616b2571249232917dc9f539cafb4b94e

已签名的令牌

cust_params=~custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=~hmac=ea1081cc1ab83cacd1e64073fc19e64616b2571249232917dc9f539cafb4b94e

经过网址编码的签名令牌:

cust_params%3D~custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~scte35%3D~hmac%3Dea1081cc1ab83cacd1e64073fc19e64616b2571249232917dc9f539cafb4b94e

示例 2

以下示例完全省略了未填充的可选变量。

令牌字符串

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5
密钥
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F
HMAC 签名
6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

已签名的令牌

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~hmac=6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

网址编码格式的签名令牌

custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~hmac%3D6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

示例 3

下面是一个包含 ad_break_id 的示例。

令牌字符串

ad_break_id=adbreak1~custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000
密钥
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F
HMAC 签名
327b23b80d032b0fa4c41b64a5e44fa7733af5bdbf173b7d89135aef05ae6d29

已签名的令牌

ad_break_id=adbreak1~custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~hmac=327b23b80d032b0fa4c41b64a5e44fa7733af5bdbf173b7d89135aef05ae6d29

网址编码格式的签名令牌

ad_break_id%3Dadbreak1~custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~hmac%3D327b23b80d032b0fa4c41b64a5e44fa7733af5bdbf173b7d89135aef05ae6d29