簡介
要在訪問視頻庫時添加額外的保護,或對您的內容應用用戶級限制,您可以將呼叫傳遞給 Brightcove Playback API。JSON Web Token (JWT)
如果您是新手JWT's,請檢閱以下內容:
工作流程
要創建JSON Web Token (JWT)並註冊 Brightcove,請按照以下步驟操作:
產生公開私密金鑰組
您(發布者)將生成一對公私密鑰並將公鑰提供給 Brightcove。您將使用私鑰對令牌進行簽名。私鑰不與 Brightcove 共享。
有很多方法可以產生公開私密金鑰組。以下是一些範例:
bash 腳本示例:
產生金鑰配對的範例指令碼:
執行指令碼:
使用範例Go
使用Go編程語言生成密鑰對的示例:
使用 node.js 的範例
使用 node.js 生成密鑰對的示例:
註冊公開金鑰
您擁有私鑰,您將使用它來生成簽名令牌。您將與 Brightcove 共享公鑰以驗證您的令牌。密鑰 API 允許您使用 Brightcove 註冊您的公鑰。
有關 API 的詳細信息,請參閱 使用身份驗證 API 文檔。
建立JSON Web Token
發行者創建一個JSON Web Token(JWT)。使用 SHA-256 雜湊演算法 (在 JWT 規格中識別為 " RS256 」) 使用 RSA 演算法簽署該令牌不會支援其他 JWT 演算法。
JSON Web Token claims將使用標準的一部分,以及 Brightcove 定義的一些私人索賠。您將創建一個用您的私鑰JSON Web Token簽名。
靜態 URL 傳遞的宣告
以下聲明可用於 Brightcove 的靜態 URL 交付。
宣稱 | 類型 | 必填 | 描述 |
---|---|---|---|
accid |
字串 | 擁有播放內容的帳號 ID | |
iat |
整數 | 這個令牌發出的時間,以秒為單位,自紀元 | |
exp |
整數 |
這個令牌的時間將不再有效,以秒為單位,自紀元以來。必須不超過 30 天iat
|
|
drules |
串[] | 要應用的傳送規則操作 ID 列表。有關詳細信息,請參閱 實施交付規則 文檔。 如果還設置了 config_id 查詢參數,它將被忽略,因為這個聲明覆蓋它。
|
|
conid |
字串 | 如果存在,此令牌將僅授權特定的 Video Cloud 視頻 ID。這可以是 DRM/HLSe 流或非 DRM 資產。 必須是有效的視頻 ID。請注意,不支持參考 ID。 |
|
pro |
字串 | 在單一視訊可用多個情況下,指定保護類型。 值:
|
|
vod |
物件 | 包含視訊隨選視訊的特定組態選項。 | |
vod.ssai |
字串 | 您的伺服器端廣告插入 (SSAI) 組態識別碼。擷取 HLS 或破折號 VMAP 需要此宣告。 |
以下是您可能使用的JSON Web Token(JWT)聲明的示例:
播放限制索賠
以下聲明可與 Brightcove 播放限制一起使用。作為播放限制的一部分,您可以執行以下操作:
功能 | 宣稱 | 類型 | 功能所需 | 僅限 DRM | 描述 |
---|---|---|---|---|---|
一般 | accid |
字串 | 是 | 擁有播放內容的帳號 ID | |
iat |
整數 | 是 | 這個令牌發出的時間,以秒為單位,自紀元 | ||
exp |
整數 | 是 |
不是必需的,但強烈推薦。 此令牌不再有效的時間,自紀元以來的秒數。必須不超過 30 天 iat
|
||
nbf |
整數 | 此令牌開始生效的時間,自紀元以來的秒數。 如果未指定,令牌將立即可用。 |
|||
播放權限 | prid |
字串 | playback_rights_id 用來覆寫此影片目錄中設定的 ID 此欄位未驗證 |
||
tags |
陣列 < 字串 > | 如果存在,此令牌僅對具有列出的標籤值的視頻有效。只有這些視頻才有權播放。 | |||
vids |
陣列 < 字串 > | 如果存在,此令牌將只授權獲取一組視頻 ID 的許可證。 |
|||
許可證密鑰保護 | ua |
字串 | 如果存在,此令牌將僅對來自此用戶代理的請求有效。 該字段不必遵循任何特定格式。 你必須有許可證密鑰保護啟用。 |
||
conid |
字串 | 如果存在,此權杖只會授權擷取特定 Video Cloud 視訊 ID 的授權。 必須是有效的視頻 ID 你必須有許可證密鑰保護啟用。 |
|||
maxip |
整數 | 是 | 如果存在,則此令牌將只能由此數量的不同 IP 地址使用。 必需的用於會話跟踪;僅限 HLSe (AES-128) 你必須有許可證密鑰保護啟用。 |
||
maxu |
整數 | 是 |
如果存在,此令牌將僅對此數量的許可請求有效。
你必須有許可證密鑰保護啟用。 |
||
並發流 | uid |
字串 | 是 | 是 | 最終檢視器的使用者 ID。該字段用於關聯多個會話以實施流並發。 您可以使用任意 ID(最多 64 個字符,限於 AZ、az、0-9 和 =/、@_.+-)。但是,根據您的用例,Brightcove 建議使用用戶標識符來跟踪每個用戶的會話,或者使用帳戶標識符來跟踪每個付費帳戶的會話。 工作階段並行需要 |
climit |
整數 | 是 | 是 | 包括此字段後,它將啟用流並發檢查以及許可證續訂請求。此值表示允許並行觀察者的數目。 工作階段並行需要 |
|
cbeh |
字串 | 是 | 將值設定為BLOCK_NEW 以啟用並行串流限制,以便在達到串流數目上限時封鎖任何新要求,即使來自相同使用者也是如此。將該值設定為 BLOCK_NEW_USER ,只有在達到串流數目上限時,才封鎖來自新使用者的任何新要求。當達到最大流數時,默認值將阻止最早的流。 |
||
sid |
字串 | 是 |
通過指定當前流的會話ID,您可以控制如何定義會話。默認情況下,會話定義為用戶代理(瀏覽器)+ IP地址+視頻ID。
比如可以把session的定義放寬到IP地址+視頻ID |
||
裝置限制 | uid |
字串 | 是 | 是 | 最終檢視器的使用者 ID。該字段用於關聯多個會話以實施流並發。 您可以使用任意 ID(最多 64 個字符,限於 AZ、az、0-9 和 =/、@_.+-)。但是,根據您的用例,Brightcove 建議使用用戶標識符來跟踪每個用戶的會話,或者使用帳戶標識符來跟踪每個付費帳戶的會話。 裝置註冊時需要 |
dlimit |
整數 | 是 | 是 | 包含此欄位時,它會控制可以與指定的使用者 ( uid ) 關聯的裝置數目。值必須是 > 0 。如果在稍後的要求中捨棄該 dlimit 值,先前允許的裝置將繼續運作。範例:如果值設定為 3 ,則使用者可以在裝置 A、B 和 C 上播放 (所有將被允許)。嘗試在裝置 D 上播放將被拒絕。如果將值更改為 1 ,用戶仍然可以在A,B和C的所有3種設備上播放,除非通過使用以下命令管理設備來手動撤消設備播放權限API。裝置註冊時需要 |
|
傳送規則 | drules |
串[] | 要應用的傳送規則操作 ID 列表。有關詳細信息,請參閱 實施交付規則 文檔。
|
按等級索賠
有幾個安全包可用於播放限制。有關詳細信息,請參見概述:布萊特灣播放限制文件。
以下是每個播放限制包的可用聲明:
功能 | 理賠 | 安全等級 1 | 安全等級 2 | 安全等級 3 |
---|---|---|---|---|
一般 | 酸 | 是 | 是 | 是 |
我在 | 是 | 是 | 是 | |
exp | 是 | 是 | 是 | |
nbf | 是 | 是 | 是 | |
播放權 [1] | 驕傲 | 是 | 是 | 是 |
標籤 | 是 | 是 | 是 | |
西元 | 是 | 是 | 是 | |
許可證密鑰保護 | ua | 否 | 是 | 是 |
錐度 | 否 | 是 | 是 | |
最大的 | 否 | 是 | 是 | |
最大 | 否 | 是 | 是 | |
並發流 | uid | 否 | 否 | 是 |
極限 | 否 | 否 | 是 | |
cbeh | 否 | 否 | 是 | |
資料庫 | 否 | 否 | 是 | |
通用並發流 | uid | 否 | 否 | 是 |
極限 | 否 | 否 | 是 | |
資料庫 | 否 | 否 | 是 | |
設備註冊 | uid | 否 | 否 | 是 |
限制 | 否 | 否 | 是 |
產生權杖
庫通常可用於生成 JWT 令牌。有關詳細信息,請參閱JSON Web Tokens網站。
一個 時代 & Unix 時間戳轉換工具 在處理時間字段時可能會有幫助。
bash 腳本示例:
生成 JWT 令牌的示例腳本:
執行指令碼:
使用範例Go
以下是一個引用Go實現(作為 cli 工具)的示例,用於在不使用任何第三方庫的情況下生成令牌:
結果
以下是一個使用 https://JWT.io 指定完整的聲明集的解碼令牌的示例:
標頭:
有效載荷:
測試播放
雖然不是必要的,但您可能想要在設定播放器之前先測試視訊播放。
靜態 URL 傳送
要求播放:
有關靜態 URL 端點的列表,請參閱 靜態 URL 交付 文檔。
播放限制
要求播放: