DRM Download Callback
お知らせ
このドキュメントは機械翻訳で作成された下書きであり、現在レビュー中です。機械翻訳の特性上、一部の内容が不正確であったり、韓国語の原文と異なる場合があります。より正確な情報については、韓国語のドキュメントをご参照ください。
Kollus VOD は、ユーザーがコンテンツをデバイスにダウンロードしたり、保存されたファイルをオフライン状態で再生する際にセキュリティ権限を検証する DRM Download Callback 機能をサポートしています。 これにより、ダウンロードの許可可否、再生可能回数、有効期限などの精緻な DRM ポリシーをリアルタイムで制御できます。
注意事項
- データ整合性: レスポンスデータのタイプが一致しない場合や範囲外の場合、ダウンロードおよび再生が即座にブロックされます。
- 設定の取り消し不可: 誤って送信された有効期限日時(
expiration_date)などの設定値は Kollus システム内で任意に修正またはキャンセルできないため、正確な値を送信する必要があります。 - サーバーの可用性: Callback サーバーのレスポンス遅延や障害発生時にサービス利用が制限されるため、安定したサーバー環境の構成を推奨します。
Callback の設定方法
Callback URL は Kollus VOD コンソールで設定できます。
Callback フロー
注意
- レスポンス仕様: Callback サーバーのレスポンスデータは必ず**JWT(JSON Web Token)**形式で返却される必要があります。
- ヘッダー認証: HTTP レスポンスヘッダーに
X-KOLLUS-USERKEY: {CUSTOM_KEY}を必ず含める必要があります。- 確認方法: Kollus VOD コンソール > [設定] > [ユーザーキー]
- データタイプ: JSON 内のすべての整数型フィールド(
expiration_date、result、content_expiredなど)はinteger型で渡す必要があります。("1"のように string 型で送信すると処理に失敗します)
Callback の種類
DRM Download Callback は処理目的に応じて 3 種類に分類されます。
kind 1(ダウンロード承認): ユーザーがダウンロードボタンをクリックした際にサーバーで権限および DRM ポリシーを割り当てます。kind 2(ダウンロード完了通知): デバイスへのファイル保存が 100%完了した時点で結果データを送信します。kind 3(オフライン再生権限確認): 保存されたコンテンツを再生するたびに再生権限および有効期限の確認を行います。
リクエスト仕様
転送方式
- Method:
POST - Content-Type:
application/x-www-form-urlencoded - Data Format:
itemsパラメーターにJSONArray形式の JSON 文字列を含めて送信
kind 1、kind 2 リクエストパラメーター
items
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
kind | integer | ◯ | DRM Download Callback の種類
|
client_user_id | string | ◯ | ユーザー ID(JWT 生成時に入力したclient_user_id) |
player_id | string | ◯ | Kollus Player 固有 ID |
hardware_id | string | - | ハードウェア ID(Windows 環境など識別可能な値が存在する場合に提供) |
device_name | string | - | デバイスのモデル名 |
media_content_key | string | ◯ | メディアコンテンツキー |
localtime | integer | - | リクエスト時点のデバイス時刻(Unix timestamp) |
uservalues | JSON string | - | カスタム変数(uservalue0〜uservalue99) |
kind 1、kind 2 items の例
[
{
"kind": 1,
"media_content_key" : "{MEDIA_CONTENT_KEY}",
"client_user_id": "{END_USER_ID}",
"player_id": "{PLAYER_ID}",
"device_name": "{DEVICE_NAME}",
"uservalues": {
"uservalue0": "value0"
}
}
]
kind 3 リクエストパラメーター
items
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
kind | integer | ◯ | DRM Download Callback の種類
|
session_key | string | ◯ | 有効期限更新(Renewal)のためのセッションキー(content_expire_resetリクエスト時の整合性検証に使用) |
client_user_id | string | ◯ | ユーザー ID(JWT 生成時に入力したclient_user_id) |
player_id | string | ◯ | Kollus Player 固有 ID |
hardware_id | string | - | ハードウェア ID(Windows 環境など識別可能な値が存在する場合に提供) |
device_name | string | - | デバイスのモデル名 |
media_content_key | string | ◯ | メディアコンテンツキー |
start_at | integer | ◯ | 送信リクエスト時点のローカル時刻 |
uservalues | JSON string | - | カスタム変数(uservalue0〜uservalue99) |
content_expired | integer | - | 再生有効期限状態
|
check_expired | integer | - | 検証有効期間の期限切れ状態
|
reset_req | integer | - | 一括更新リクエスト状態
|
expiration_date | integer | - | 再生有効期限日時(Unix timestamp) |
localtime | integer | - | リクエスト時点のデバイス時刻(Unix timestamp) |
kind 3 items の例
[
{
"kind": 3,
"session_key" : "{SESSION_KEY}",
"media_content_key" : "{MEDIA_CONTENT_KEY}",
"client_user_id": "{END_USER_ID}",
"player_id": "{PLAYER_ID}",
"device_name": "{DEVICE_NAME}",
"uservalues": {
"uservalue1": "value1"
}
}
]
uservalues の例
{
"uservalue0": "class_code_01",
"uservalue1": "product_code_02",
"uservalue99": "custom_code_03"
}
レスポンス仕様
転送方式
DRM Download Callback のレスポンスは、データのセキュリティと整合性のために必ず JWT(JSON Web Token)形式にエンコードして返却する必要があります。
- Header:
X-KOLLUS-USERKEY: {CUSTOM_KEY} - Content-Type:
text/plain - Payload 構造:
dataフィールド内に個別コンテンツのレスポンスオブジェクトを含む配列構造{
"data": [
{ "kind": 1, "media_content_key": "...", "result": 1, ... },
{ "kind": 1, "media_content_key": "...", "result": 1, ... }
]
}
DRM 有効期限オプション仕様
注意
有効期限オプションは Kollus システムに記録された後、修正または取り消しができません。必ず正確な Unix timestamp 値を設定してください。
| オプション | タイプ | 許容範囲 | 説明 |
|---|---|---|---|
expiration_count | integer | 0(制限なし)〜 1000 | 再生許可回数 |
expiration_date | integer | 0(制限なし)〜 2145916799(2037-12-31 23:59:59) | 再生有効期限日時(Unix timestamp) |
expiration_playtime | integer | 0(制限なし)、60(60 秒)〜 604800(7 日) | 再生制限時間(sec) |
kind 1 レスポンスフィールド
ユーザーのダウンロードリクエストに対してサーバーが承認可否を決定し、該当デバイスに保存されるコンテンツの DRM ポリシーを割り当てます。
data の項目
| フィールド | タイプ | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
kind | integer | ◯ | - | DRM Download Callback の種類
|
media_content_key | string | ◯ | - | メディアコンテンツキー |
expiration_date | integer | - | - | 再生有効期限日時(Unix timestamp) |
expiration_count | integer | - | - | 再生許可回数(例: 10 → 10 回再生可能) |
expiration_playtime | integer | - | - | 再生制限時間(例: 60 → 60 秒、3600 → 1 時間再生可能) |
expiration_playtime_type | integer | - | - | 再生時間の差し引き方式
|
result | integer | ◯ | - | 承認結果
|
message | string | - | - | 再生ブロック(result: 0)時にプレイヤー画面に表示する案内メッセージ(未入力時は Kollus デフォルトエラーメッセージを表示) |
expiration_refresh_popup | integer | - | 0 | 有効期限切れ時の更新(Renewal)通知の表示可否
|
vmcheck | integer | - | 1 | (HTML5 Player for PC 専用) 仮想マシン(VM)環境での再生許可可否
|
check_abuse | integer | - | 0 | オフライン再生時のkind 3呼び出し可否
|
offline_bookmark.download | integer | - | 0 | ブックマークデータの同時ダウンロード可否
|
offline_bookmark.readonly | integer | - | 0 | オフライン状態でのブックマーク編集権限
|
kind 1 レスポンス例
{
"data" : [
{
"kind": 1,
"media_content_key": "{MEDIA_CONTENT_KEY}",
"expiration_date": 1402444800,
"expiration_playtime": 1800,
"result": 1
}
]
}
kind 2 レスポンスフィールド
コンテンツのダウンロードプロセスが正常に完了したことをサーバーに通知し、サーバーはレスポンスを通じて該当コンテンツの有効性を最終確定します。
data の項目
| フィールド | タイプ | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
kind | integer | ◯ | - | DRM Download Callback の種類
|
media_content_key | string | ◯ | - | メディアコンテンツキー |
content_delete | integer | - | 0 | ダウンロード完了直後のファイル削除可否
|
message | string | - | - | 再生ブロック(result: 0またはcontent_expired: 1)時にプレイヤーに表示する案内メッセージ(未入力時は Kollus デフォルトエラーメッセージを表示) |
check_expiration_date | integer | - | 0 | 検証有効期間(Unix timestamp)
|
result | integer | ◯ | - | 処理結果
|