本指南介绍了如何创建签名,以及签名的必需字段和可选字段。
如需创建签名,您需要撰写一个要签名的字符串,我们在本指南中将其称为签名值。签名值包含用于描述受保护内容、签名值的到期时间等的参数。
您可以在创建签名字符串时使用签名值。您可以通过组合签名参数(例如签名值的非对称密钥 Ed25519 签名)来创建签名字符串。
媒体 CDN 使用最终的组合签名来帮助保护您的内容。
支持的签名格式
Media CDN 支持以下签名请求格式。
格式 | 行为 | 示例 |
---|---|---|
查询参数(确切网址) |
确切网址,用于授予对特定网址的访问权限。 |
完全匹配:
|
查询参数(网址前缀) |
指定 URLPrefix 可让您对前缀进行签名,并将相同的查询参数附加到播放器或清单生成中的多个网址。
|
需要签署的内容:
将 |
路径组件 |
前缀:允许访问 这样一来,在提取子资源时,相对清单网址便可自动继承签名网址组件。 |
https://media.example.com/video/edge-cache-token=Expires=EXPIRATION
|
签名 Cookie | 前缀:Cookie 允许访问任何具有签名 URLPrefix 值中指定的前缀的网址。
|
Edge-Cache-Cookie:
|
创建签名
通过连接包含必需签名字段和所需可选签名字段的字符串来创建签名值。
如果指定了该参数,
URLPrefix
必须排在最前面,然后是Expires
、KeyName
,最后是任何可选参数。使用以下符号分隔各个字段和所有参数:
- 对于 Cookie,请使用英文冒号
:
字符。 - 对于查询参数和路径组成部分,请使用 & 符号
&
。
- 对于 Cookie,请使用英文冒号
使用 Ed25519 签名对签名值进行签名。
在字符串末尾附加一个字段分隔符(
:
或&
)、Signature=
和 Ed25519 签名。
创建签名网址
以下代码示例展示了如何以编程方式创建签名网址。
Go
如需向 Media CDN 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Media CDN 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
创建签名网址前缀
以下代码示例展示了如何以编程方式创建签名网址前缀。
Go
如需向 Media CDN 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Media CDN 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
创建签名网址 Cookie
以下代码示例展示了如何以编程方式创建签名网址 Cookie。
Go
如需向 Media CDN 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Media CDN 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
创建已签名的路径组件
以下代码示例展示了如何以编程方式创建签名路径组件。
Python
如需向 Media CDN 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
必需的签名栏
每项签名都必须包含以下字段:
Expires
KeyName
Signature
如果存在查询参数,则必须将它们分组在一起,作为网址中的最后一个参数。除非另有说明,否则参数名称及其值区分大小写。
下表介绍了每个参数:
字段名称 | 签名参数 | 符号值 |
---|---|---|
Expires |
自 Unix 纪元 (1970-01-01T00:00:00Z) 以来经过的整数秒数 | Expires=EXPIRATION_TIME ,之后签名将失效。 |
KeyName |
用于签署相应请求的 EdgeCacheKeyset 的名称。KeyName 是指整个密钥集,而不是密钥集中的各个密钥。
|
KeyName=EDGE_CACHE_KEYSET |
Signature |
签名的 base-64 编码版本。 | 不适用 |
可选的签名栏
如果存在查询参数,则必须将它们分组在一起,作为网址中的最后一个参数。除非另有说明,否则参数名称及其值区分大小写。
下表针对可选签名参数,说明了每个参数的名称和详细信息:
字段名称 | 签名参数 | 符号值 |
---|---|---|
HeaderName |
必须出现在请求中的命名请求标头字段名称。 签名时必须采用小写形式,因为标头字段名称区分大小写。媒体 CDN 会先将标头转换为小写,然后再验证签名。 |
HeaderName=HEADER_NAME |
HeaderValue |
必须在请求中显示的已命名的请求标头字段值。这通常是用户 ID 或其他不透明的标识符。如果请求包含 HeaderValue 但不包含 HeaderName ,则会被拒绝。
|
HeaderValue=HEADER_VALUE |
IPRanges |
一个列表,其中包含最多五个采用 CIDR 格式的 IPv4 和 IPv6 地址,这些地址以 Web 安全的 Base64 格式表示,并且此网址对这些地址有效。例如,如需指定 IP 范围“192.6.13.13/32,193.5.64.135/32”,您可指定 当客户面临 WAN 迁移风险,或者到达应用前端的网络路径与交付路径不同时,在签名中包含 IPRanges 可能没有帮助。
如果客户端连接时使用的 IP 地址不是签名请求的一部分,Media CDN 会拒绝这些客户端,并返回 以下情况可能会导致 Media CDN 以
所有这些因素都可能导致特定客户在视频播放会话期间拥有不确定的 IP 地址。如果您在授予访问权限后更改了客户端 IP 地址,并且客户端随后尝试将视频片段下载到其播放缓冲区中,则会收到来自媒体 CDN 的 |
IPRanges=BASE_64_IP_RANGES |
URLPrefix |
要授予访问权限的 base64(可在网址中安全使用)网址前缀。指定 URLPrefix 可让您对前缀进行签名,并将相同的查询参数附加到播放器或清单生成中的多个网址。
使用签名 Cookie 格式时,必须使用 URLPrefix 。
|
URLPrefix=BASE_64_URL_PREFIX |