点击领取2000元阿里云代金券,付款抵现金用,云服务器69元/年限时抢>>> 点击咨询成为阿里云VIP客户享永久折扣>>>
点击领取2860元腾讯云代金券,付款抵现金用,云服务器88元/年限时抢>>> 点击成为腾讯云VIP客户享永久折扣优惠>>> 点击进入华为云最新优惠活动现场>>> 点击成为华为云VIP客户享永久折扣优惠>>>
超级播放器签名,用于 App 播放服务对终端的授权播放。如下图步骤5所示,若 App 播放服务允许终端播放,则派发一个合法的签名。终端在签名有效时间内可以播放视频内容。
注意:
当有如下情况之一时,App 终端需要超级播放器签名才能播放:
- 域名开启了 KEY 防盗链。
- 使用了 default 以外的 超级播放器配置。
- 播放 加密 的视频内容。
下面,将介绍超级播放器签名的参数组成和生成规则。
签名参数
参数名称 |
必选 |
类型 |
说明 |
appId |
是 |
Integer |
账号 appId |
fileId |
是 |
String |
文件 ID |
currentTimeStamp |
是 |
Integer |
派发签名当前 Unix 时间戳 |
expireTimeStamp |
否 |
Integer |
派发签名到期 Unix 时间戳,不填表示不过期 |
pcfg |
否 |
String |
使用的超级播放配置名称。如果是 default,可以不填 |
urlAccessInfo |
否 |
Object |
播放链接的防盗链配置参数,为 UrlAccessInfo 类型 |
drmLicenseInfo |
否 |
Object |
加密内容的密钥配置参数,为 DrmLicenseInfo 类型 |
UrlAccessInfo 类型
参数名称 |
必选 |
类型 |
说明 |
t |
否 |
String |
- 16进制字符串,表示链接的过期时间
- 具体含义和取值参见 防盗链参数 中的 t 参数
- 不填表示不过期
|
exper |
否 |
Integer |
- 试看时长,单位为秒,以十进制表示
- 如果要指定试看时长,时长必须不小于30秒
- 具体含义和取值参见 防盗链参数 中的 exper 参数
|
rlimit |
否 |
Integer |
- 最多允许多少个不同 IP 的终端播放,以十进制表示
- 具体含义和取值参见 防盗链参数 中的 rlimit 参数
|
us |
否 |
String |
- 链接标识,用户增强链接的唯一性
- 具体含义和取值参见 防盗链参数 中的 us 参数
|
DrmLicenseInfo 类型
参数名称 |
必选 |
类型 |
说明 |
expireTimeStamp |
否 |
Integer |
密钥的到期 Unix 时间戳,不填表示不过期 |
说明:
- 如果您使用了 子应用,则 appId 参数需要填子应用 AppId。
- 签名参数中的
t 、exper 、rlimit 、us 的含义和取值,与 防盗链参数 中的同名参数完全一致。
签名计算点播超级播放器签名采用 JWT(JSON Web Token),一种由 Header、PayLoad 和 Key 计算并组合得到的数字令牌。
Header 为 JSON 格式,表示 JWT 使用的算法信息,固定使用如下内容:
{
"alg": "HS256",
"typ": "JWT"
}
PayLoadPayload 为 JSON 格式,是超级播放器签名参数的内容,例如:
{
"appId": 1255566655,
"fileId": "4564972818519602447",
"currentTimeStamp": 1546340400,
"expireTimeStamp": 1546344000,
"urlAccessInfo": {
"t": "5c2b5640",
"rlimit": 3,
"us": "72d4cd1101"
}
}
KeyKey 是计算签名时使用的密钥,和 防盗链参数 中的KEY 参数一致。
计算公式
- 计算 Signature:
Signature = HMACSHA256(base64UrlEncode(Header) + "." + base64UrlEncode(Payload), KEY)
- 计算 Token:
Token = base64UrlEncode(Header) + '.' + base64UrlEncode(Payload) + '.' + base64UrlEncode(Signature) 最终得到的 Token,即为点播超级播放器签名。
说明:
HMACSHA256 请参见 RFC - HMACSHA256。base64UrlEncode 请参见 RFC - base64UrlEncode。
为方便您计算签名以及验证签名,云点播提供了在线签名生成校验工具:
- 超级播放器 - 签名生成工具 快速生成签名。
- 超级播放器 - 签名校验工具 快速校验签名。
计算示例例如,某用户 appId 是1255566655 ,fileId 是4564972818519602447 的视频生成超级播放器签名,并且:
- 开启的防盗链 KEY 为
24FEQmTzro4V5u3D5epW 。
- 使用自定义的超级播放器配置,自定义配置名为
MyCfg 。
- 播放器签名的派发时间为2019/1/1 19:00:00,对应的 Unix 时间是
1546340400 。
- 播放器签名的过期时间为2019/1/1 20:00:00,对应的 Unix 时间是
1546344000 。
- 防盗链的过期时间为2019/1/1 20:00:00,对应的 Unix 时间是
5c2b5640 。
- 限制最多允许3个不同的 IP 播放 URL。
- 生成的随机字符串是
72d4cd1101 。
则签名步骤如下:
- Header 的内容为:
{
"alg": "HS256",
"typ": "JWT"
}
经过 base64UrlEncode 后的结果是:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 。
- Payload 的内容为:
{
"appId": 1255566655,
"fileId": "4564972818519602447",
"currentTimeStamp": 1546340400,
"expireTimeStamp": 1546344000,
"urlAccessInfo": {
"t": "5c2b5640",
"rlimit": 3,
"us": "72d4cd1101"
}
}
经过 base64UrlEncode 后的结果是:
eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ 。
- 以
24FEQmTzro4V5u3D5epW 为 KEY 进行 HMAC 计算,Signature 是:
TRdfy-ctQFRDJzknfKsT0di5tEaweAVumOgxsA8Qd-8 。
- 最终 Token 是:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ.TRdfy-ctQFRDJzknfKsT0di5tEaweAVumOgxsA8Qd-8 。
代码示例云点播提供了 Python、Java、Go、C#、PHP 和 Node.js 等多种语言的超级播放器签名的代码示例,具体请参见 超级播放器签名 - 签名示例。
|