本指南說明如何建立簽章,以及簽章的必填和選填欄位。
如要建立簽章,請編寫要簽署的字串,在本指南中稱為「簽署值」。簽署值包含的參數會說明您要保護的內容、簽署值的到期時間等。
建立簽章字串時,請使用已簽署的值。您可透過撰寫簽章參數 (例如簽署值的非對稱金鑰 Ed25519 簽章),建立簽章字串。
媒體 CDN 會使用最終組成的簽章,協助保護您的內容。
支援的簽署格式
媒體 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 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
必填簽名欄位
每份簽名文件都必須填寫下列欄位:
ExpiresKeyNameSignature
如有查詢參數,必須將其歸為網址中的最後一組參數。除非另有說明,否則參數名稱和值會區分大小寫。
下表說明各個參數:
| 欄位名稱 | 簽名參數 | 簽署的值 |
|---|---|---|
Expires |
自 Unix 紀元 (1970-01-01T00:00:00Z) 經過的整數秒數 | Expires=EXPIRATION_TIME,之後簽名就會失效。 |
KeyName |
用於簽署這項要求的 EdgeCacheKeyset 名稱。KeyName 是指整個金鑰組,而不是金鑰組內的個別金鑰。 |
KeyName=EDGE_CACHE_KEYSET |
Signature |
簽章的 Base64 編碼版本。 | 不適用 |
選填簽名欄位
如有查詢參數,必須將其歸為網址中的最後一組參數。除非另有說明,否則參數名稱和值會區分大小寫。
下表說明選用簽章參數的名稱和詳細資料:
| 欄位名稱 | 簽名參數 | 簽署的值 |
|---|---|---|
HeaderName |
要求中必須出現的具名要求標頭欄位名稱。 簽署時必須為小寫,因為標頭欄位名稱區分大小寫。Media CDN 會先將標頭轉換為小寫,再驗證簽章。 |
HeaderName=HEADER_NAME |
HeaderValue |
要求中必須出現的具名要求標頭欄位值。這通常是使用者 ID 或其他不透明的 ID。如果要求包含 HeaderValue,但沒有 HeaderName,系統會拒絕要求。 |
HeaderValue=HEADER_VALUE |
IPRanges |
最多五個 IPv4 和 IPv6 位址的清單 (採用 CIDR 格式),這些位址的網址採用網頁安全 Base64 格式。舉例來說,如要指定 IP 範圍「192.6.13.13/32,193.5.64.135/32」,請指定 如果用戶端有 WAN 遷移風險,或應用程式前端的網路路徑與傳送路徑不同,則可能不適合在簽章中加入 IPRanges。如果用戶端連線時使用的 IP 位址不屬於經簽署的要求,Media CDN 會以 在下列情況下,Media CDN 可能會以
所有這些因素都可能導致特定用戶端在影片播放期間擁有非決定性 IP 位址。如果發出存取權後用戶端 IP 位址有所變更,且用戶端嘗試將影片片段下載至播放緩衝區,就會收到 Media CDN 的 |
IPRanges=BASE_64_IP_RANGES |
URLPrefix |
要授予存取權的 base64 (網址安全) 網址前置字元。指定 URLPrefix 可讓您簽署前置字元,並在播放器或資訊清單產生期間,將相同的查詢參數附加至多個網址。使用已簽署的 Cookie 格式時,必須提供 URLPrefix。
|
URLPrefix=BASE_64_URL_PREFIX |