回调鉴权
云点播服务支持在 HTTP(含HTTPS)回调时增加特定签名头,供回调消息接收服务端进行签名认证,以防止非法或无效请求。本文为您介绍 HTTP 回调鉴权的参数、规则和注意事项。
鉴权参数
在回调 HTTP 头部增加的具体鉴权参数如下:
字段 | 描述 |
---|---|
X-QVOD-TIMESTAMP |
UNIX 时间戳,整形正数,固定长度 10,1970年1月1日以来的秒数,表示回调请求发起时间。 |
X-QVOD-SIGNATURE |
签名字符串,为 32位 MD5 值,详细说明见下文签名算法。 |
签名算法
X-QVOD-SIGNATURE 的计算依赖如下字段:
字段 | 示例 | 描述 |
---|---|---|
回调 URL |
用户设置的回调地址。 |
|
X-QVOD-TIMESTAMP |
159375999 |
UNIX时间戳,整形正数,固定长度 10,1970年1月1日以来的秒数,表示回调请求发起时间。 |
PrivateKey |
test123 |
用户预设的签名 Key。 |
将上述三个字段进行拼接,字段中间以竖线 “|” 分割后计算 MD5 值,即:
MD5Content = 回调URL|X-VOD-TIMESTAMP|PrivateKey
X-QVOD-SIGNATURE = md5sum(MD5Content)
X-QVOD-SIGNATURE 字段计算方法示例如下:
X-QVOD-SIGNATURE = md5sum(https://www.example.com/your/callback|1519375999|test123) = c72b60894140fa98920f1279219b****
回调消息接收服务端校验规则
-
回调消息接收端将回调所设置的回调 URI、X-QVOD-TIMESTAMP 取值、PrivateKey 字符串拼接后,进行 MD5 值计算,得到加密串,再将加密串与 X-QVOD-SIGNATURE 字段进行对比,如果不一致,则请求非法。
-
回调消息接收端获取当前时间,与回调请求所带的 X-QVOD-TIMESTAMP 字段时间相减,如果超过服务端所设定的指定时间(如5分钟,由服务端自行定义),则认为该请求无效。
说明 由于时间设置等问题,时间差值可能会有误差,服务端可自行决定是否进行该校验。
PrivateKey 切换
客户在切换 PrivateKey 时,为保证回调功能不受影响,消息接收服务端需要兼容新旧两个 PrivateKey 的平滑切换,即在一段时间内兼容新旧两个 PrivateKey 的鉴权,由服务方完成。
建议操作顺序如下:
-
用户定义新的 PrivateKey。
-
用户升级回调消息接收服务端,兼容新、旧两个 PrivateKey 的鉴权。
-
在云点播控制台将 PrivateKey 更新成最新。
-
观察一段时间后,回调消息接收服务端去掉对原来 PrivateKey 的兼容。
-
切换完成。
其他注意事项
-
回调鉴权是否开启由用户决定(建议开启)。一旦设置了 PrivateKey,则回调时会携带所有鉴权相关内容,供回调消息接收服务端进行鉴权使用,即设置 PrivateKey 不会影响原有功能,具体是否校验由用户决定。
-
未设置 PrivateKey 的用户不会受任何影响。