服务端 API 文档

超级播放器签名

最近更新时间:2020-07-10 10:21:58

超级播放器签名,用于 App 播放服务对终端的授权播放。如下图步骤5所示,若 App 播放服务允许终端播放,则派发一个合法的签名。终端在签名有效时间内可以播放视频内容。

注意:

当有如下情况之一时,App 终端需要超级播放器签名才能播放:

下面,将介绍超级播放器签名的参数组成和生成规则。

签名参数

参数名称 必选 类型 说明
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。
  • 签名参数中的texperrlimitus的含义和取值,与 防盗链参数 中的同名参数完全一致。

签名计算

点播超级播放器签名采用 JWT(JSON Web Token),一种由 Header、PayLoad 和 Key 计算并组合得到的数字令牌。

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参数一致。

计算公式

  1. 计算 Signature:
    Signature = HMACSHA256(base64UrlEncode(Header) + "." + base64UrlEncode(Payload), KEY)
  2. 计算 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

则签名步骤如下:

  1. Header 的内容为:
    {
    "alg": "HS256",
    "typ": "JWT"
    }
    经过 base64UrlEncode 后的结果是:
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
  2. Payload 的内容为:
    {
    "appId": 1255566655,
    "fileId": "4564972818519602447",
    "currentTimeStamp": 1546340400,
    "expireTimeStamp": 1546344000,
    "urlAccessInfo": {
     "t": "5c2b5640",
     "rlimit": 3,
     "us": "72d4cd1101"
    }
    }
    经过 base64UrlEncode 后的结果是:
    eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ
  3. 24FEQmTzro4V5u3D5epW为 KEY 进行 HMAC 计算,Signature 是:
    TRdfy-ctQFRDJzknfKsT0di5tEaweAVumOgxsA8Qd-8
  4. 最终 Token 是:
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ.TRdfy-ctQFRDJzknfKsT0di5tEaweAVumOgxsA8Qd-8

代码示例

云点播提供了 Python、Java、Go、C#、PHP 和 Node.js 等多种语言的超级播放器签名的代码示例,具体请参见 超级播放器签名 - 签名示例

目录