超级播放器签名,用于 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 |
|
exper | 否 | Integer |
|
rlimit | 否 | Integer |
|
us | 否 | String |
|
DrmLicenseInfo 类型
参数名称 | 必选 | 类型 | 说明 |
---|---|---|---|
expireTimeStamp | 否 | Integer | 密钥的到期 Unix 时间戳,不填表示不过期 |
说明:
- 如果您使用了 子应用,则 appId 参数需要填子应用 AppId。
- 签名参数中的
t
、exper
、rlimit
、us
的含义和取值,与 防盗链参数 中的同名参数完全一致。
签名计算
点播超级播放器签名采用 JWT(JSON Web Token),一种由 Header、PayLoad 和 Key 计算并组合得到的数字令牌。
Header
Header 为 JSON 格式,表示 JWT 使用的算法信息,固定使用如下内容:
{
"alg": "HS256",
"typ": "JWT"
}
PayLoad
Payload 为 JSON 格式,是超级播放器签名参数的内容,例如:
{
"appId": 1255566655,
"fileId": "4564972818519602447",
"currentTimeStamp": 1546340400,
"expireTimeStamp": 1546344000,
"urlAccessInfo": {
"t": "5c2b5640",
"rlimit": 3,
"us": "72d4cd1101"
}
}
Key
Key 是计算签名时使用的密钥,和 防盗链参数 中的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 的内容为:
经过 base64UrlEncode 后的结果是:{ "alg": "HS256", "typ": "JWT" }
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
。 - Payload 的内容为:
经过 base64UrlEncode 后的结果是:{ "appId": 1255566655, "fileId": "4564972818519602447", "currentTimeStamp": 1546340400, "expireTimeStamp": 1546344000, "urlAccessInfo": { "t": "5c2b5640", "rlimit": 3, "us": "72d4cd1101" } }
eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ
。 - 以
24FEQmTzro4V5u3D5epW
为 KEY 进行 HMAC 计算,Signature 是:TRdfy-ctQFRDJzknfKsT0di5tEaweAVumOgxsA8Qd-8
。 - 最终 Token 是:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ.TRdfy-ctQFRDJzknfKsT0di5tEaweAVumOgxsA8Qd-8
。
代码示例
云点播提供了 Python、Java、Go、C#、PHP 和 Node.js 等多种语言的超级播放器签名的代码示例,具体请参见 超级播放器签名 - 签名示例。