DRM Callback

DRM Callback

概要

KollusモバイルダウンロードDRMを利用してダウンロードしたコンテンツの「再生回数」、「再生有効期限」、「再生時間」を設定してコンテンツの再生を制御する機能について説明する文書です。サービス提供形態によって重複制限の設定として使用されることもあります。

Expire option

設定項目のdata-typeや値が範囲から外れた場合、エンドユーザーのコンテンツの利用に問題が発生する可能性があります。また、誤った設定値による使用回数の過剰などを回収する方法はありませんので設定に注意してください。

  • Expire count : 再生回数の制限

    • data-type : integer

    • range : 0 ~ 1000

    • 0 : unlimited (無制限)

  • Expire date : 有効期限の制限

    • data-type : integer, unixtime stamp

    • コンテンツの有効期限(再生可能期限)

      • 終了日(日時)
        例) 2014. 3. 3.  5時 45分 30秒 GMT → 1393825531

      • 0 : unlimited (無制限)

      • 最大値 : 2029年 12月 31日 23時 59分 59秒 (1893455999)

  • Expire playtime : 再生時間(倍速再生の場合は倍速が適用された時間で計算)

    • data-type : integer

    • range : 0, 60 ~ 604800 (単位: 秒, min : 60秒, max:1週間)

    • 0 : unlimited (無制限)

DRM callback

DRM ポリシーを適用するためには、チャンネルにDRM Callback URLを設定する必要があります。

チャンネルにDRM Callback URLを設定すると、コンテンツをダウンロードする時点にDRM Callback URLを呼び出して、リターン値をDRMポリシーとして使用します。ダウンロードされるDRMポリシー情報はJWT EncodeされてHttp Bodyにリターンしなければなりません。

注意:

  1. DRM Callback URLがレスポンスしないとダウンロードできません。

  2. アルゴリズムはHS256のみ対応しており、Httpヘッダに指定された(X-KOLLUS-USERKEY)ヘッダに“ユーザーキー”を共に転送しなければなりません。

Callback ​flow

  1. 配信チャンネルに DRM CallbackURLを設定します。

    • ex> http://www.foo.com/auth.php を顧客のDRM認証サーバーとする

  2. JSONデータを生成してJWTでエンコードする

  3. Kollus mobile playerがhttp://www.foo.com/auth.php に以下の情報をPOST転送します。

    • session_key : Playerが生成したリクエスト確認用のセッションキー

      • kind3のcontent_expire_resetの場合、リクエストしたsession_keyを確認します。

      • Callback v2が適用されるv1.6以降から使用可能です。

    • kind : 1 - 3

    • client_user_id : ユーザID(サービス会員情報)

      • Media token 生成の際に含まれたID

    • player_id : ユーザのデバイスID

    • device_name : ユーザのデバイス名

      • Android, iOS別に転送される端末名が異なります。

      • iOS:事前にApple社が定義した文字列で転送されます。

      • Android:デバイス名、モデル名が転送されます。※該当する情報がない場合NULLで転送

    • media_content_key : ダウンロードするコンテンツキー

      • チャンネルに登録されたコンテンツのメディアコンテンツキー(ユニーク)

      • 同じコンテンツを複数のチャンネルに登録する場合、それぞれのmedia_content_keyは全て異なります。

  4. 顧客のDRM認証サーバーは転送された上記の情報に基づいて以下のjson フォーマットのdataをJWT payloadに追加してEncoding します。ヘッダーに指定された“ユーザキー(X-KOLLUS-USERKEY)"を一緒に転送します。
    (顧客が認証データをPlayerに転送する全てのデータは必ずinteger型で転送しなければなりません。)

device_name 追加説明

  • Andoid

    Androidアプリケーションの開発に使用される Build.DEVICE, Build.MODELは /(スラッシュ)で区分した文字列を作成して使用してください。

    • Build.DEVICE+”/”+Build.MODEL

    • デバイスによって該当情報はNULLで表示される可能性があります。

  • iOS

    iOSから提供するdevice-nameを使用します。

Device Type

Product Name

Device Type

Product Name

iPhone1,1

iPhone

iPhone1,2

iPhone 3G

iPhone2,1

iPhone 3GS

iPhone3,1

iPhone 4 (GSM)

iPhone3,3

iPhone 4 (CDMA)

iPhone4,1

iPhone 4S

iPhone5,1

iPhone 5 (A1428)

iPhone5,2

iPhone 5 (A1429)

iPhone5,3

iPhone 5c (A1456/A1532)

iPhone5,4

iPhone 5c (A1507/A1516/A1529)

iPhone6,1

iPhone 5s (A1433/A1453)

iPhone6,2

iPhone 5s (A1457/A1518/A1530)

iPhone7,1

iPhone 6 Plus

iPhone7,2

iPhone 6

iPhone8,1

iPhone 6s

iPhone8,2

iPhone 6s Plus

iPhone8,4

iPhone SE

iPhone9,1

iPhone 7 (A1660/A1779/A1780)

iPhone9,2

iPhone 7 Plus (A1661/A1785/A1786)

iPhone9,3

iPhone 7 (A1778)

iPhone9,4

iPhone 7 Plus (A1784)

iPhone10,1

iPhone 8 (A1863/A1906)

iPhone10,2

iPhone 8 Plus (A1864/A1898)

iPhone10,3

iPhone X (A1865/A1902)

iPhone10,4

iPhone 8 (A1905)

iPhone10,5

iPhone 8 Plus (A1897)

iPhone10,6

iPhone X (A1901)

iPad1,1

iPad

iPad2,1

iPad 2 (Wi-Fi)

iPad2,2

iPad 2 (GSM)

iPad2,3

iPad 2 (CDMA)

iPad2,4

iPad 2 (Wi-Fi, revised)

iPad2,5

iPad mini (Wi-Fi)

iPad2,6

iPad mini (A1454)

iPad2,7

iPad mini (A1455)

iPad3,1

iPad (3rd gen, Wi-Fi)

iPad3,2

iPad (3rd gen, Wi-Fi+LTE Verizon)

iPad3,3

iPad (3rd gen, Wi-Fi+LTE AT&T)

iPad3,4

iPad (4th gen, Wi-Fi)

iPad3,5

iPad (4th gen, A1459)

iPad3,6

iPad (4th gen, A1460)

iPad4,1

iPad Air (Wi-Fi)

iPad4,2

iPad Air (Wi-Fi+LTE)

iPad4,3

iPad Air (Rev)

iPad4,4

iPad mini 2 (Wi-Fi)

iPad4,5

iPad mini 2 (Wi-Fi+LTE)

iPad4,6

iPad mini 2 (Rev)

iPad4,7

iPad mini 3 (Wi-Fi)

iPad4,8

iPad mini 3 (A1600)

iPad4,9

iPad mini 3 (A1601)

iPad5,1

iPad mini 4 (Wi-Fi)

iPad5,2

iPad mini 4 (Wi-Fi+LTE)

iPad5,3

iPad Air 2 (Wi-Fi)

iPad5,4

iPad Air 2 (Wi-Fi+LTE)

iPad6,3

iPad Pro (9.7 inch) (Wi-Fi)

iPad6,4

iPad Pro (9.7 inch) (Wi-Fi+LTE)

iPad6,7

iPad Pro (12.9 inch, Wi-Fi)

iPad6,8

iPad Pro (12.9 inch, Wi-Fi+LTE)

iPad6,11

iPad 9.7-Inch 5th Gen (Wi-Fi Only)

iPad6,12

iPad 9.7-Inch 5th Gen (Wi-Fi/Cellular)

iPad7,1

iPad Pro (12.9 inch, A1670)

iPad7,2

iPad Pro (12.9 inch, A18219)

iPad7,3

iPad Pro (10.5 inch, A1701)

iPad7,4

iPad Pro (10.5 inch, A1709)

iPad7,5

iPad (6th gen, A1893)

iPad7,6

iPad (6th gen, A1954)

iPod1,1

iPod touch

iPod2,1

iPod touch (2nd gen)

iPod3,1

iPod touch (3rd gen)

iPod4,1

iPod touch (4th gen)

iPod5,1

iPod touch (5th gen)

iPod7,1

iPod touch (6th gen)


DRM Callback 新規バージョン v2

バージョン1.4まで提供していた「kind1, kind2, kind3」の個別で呼び出しを行われたことを、一回の呼出で統合しました。ユーザー側の呼出が増えることで対応が難しいとの多数の顧客からの意見に対応しました。新しいバージョンを"v2"で、以前バージョンを"v1"で記載します。

Reuest

区分

Description

区分

Description

POST

Http POSTでリクエスト (parameterではない)

items

JsonArrayで構成されたstring

items項目はkind1, kind2, kind3の全てのデータが含まれた呼出にすることができます。

items (JsonArray)
kind1, kind2

区分

Description

区分

Description

kind

1,2

client_user_id

ユーザーID, media_token 生成に使用されたclient_user_idと同一です。

player_id

ユーザーのデバイスID

hardware_id

デバイスのhardware ID(PC, 内容がある場合)

device_name

ユーザーデバイスのモデル名

media_content_key

コンテンツのメディアコンテンツキー

uservalues

JSON format (VideoGatewayの呼出に使用されたuservalue0~9)

localtime

デバイスの時刻 (UTC)

kind3

区分

Description

区分

Description

kind

3

session_key

content_expire_resetリクエストの際に同じsession_keyを確認します。

client_user_id

ユーザーID, media_token 生成に使用されたclient_user_idと同一です。

player_id

ユーザのデバイスID

hardware_id

デバイスのhardware ID(PC, 内容がある場合)

device_name

ユーザーデバイスのモデル名

media_content_key

コンテンツのメディアコンテンツキー

start_at

unixtimestamp (localtime)
- 転送リクエスト時刻

uservalues

JSON format (VideoGatewayの呼出に使用されたuservalue0~9)

content_expired

コンテンツの有効期限を確認 flag ( 1: 再生不可, 0: 再生可能)

check_expired

更新チェックの有効期限を確認 flag ( 1: 再生不可, 0: 再生可能)

reset_req

一括更新なのかを確認 ( 0 (default), 1: 一括更新)

expiration_date

有効期限終了日(unixtimestamp)

localtime

デバイスの時刻 (UTC)

Items Sample
[ { "kind": 1, "media_content_key" : "XXX-MEDIA_CONTENTKEY-XXX", "client_user_id": "XXXXXXX", "player_id": "xxxxxxxxxxxxxxxx", "device_name": "XXXXX", "uservalues": { "uservalue0": "value0" } }, { "kind": 2, "media_content_key" : "XXX-MEDIA_CONTENTKEY-XXX", "client_user_id": "XXXXXXX", "player_id": "xxxxxxxxxxxxxxxx", "device_name": "XXXXX", "uservalues": { "uservalue0": "value0" } }, { "kind": 3, "session_key" : "XXX-SESSION_KEY-XXX", ← content_expire_reset リクエストする際に確認します。 "media_content_key" : "XXX-MEDIA_CONTENTKEY-XXX", "client_user_id": "XXXXXXX", "player_id": "xxxxxxxxxxxxxxxx", "device_name": "XXXXX", "uservalues": { "uservalue1": "value1" } } ]

Response

Arrayは“data”フィールドで受け取る

kind1

区分

必須

Description

区分

必須

Description

(int) kind

O

1

(string) media_content_key

O

コンテンツのメディアコンテンツキー

(int) expiration_date

 

有効期限のunixtime stamp
最大値 : 2029年 12月 31日 23時 59分 59秒 (1893455999)

(int) expiration_count

 

再生回数制限 例) 10 ← 10回まで再生可能

(int) expiration_playtime

 

再生時間制限 例) 3600 ← 3600秒(1時間)まで再生可能

(int) expiration_playtime_type

 

1の場合、play状態を起動時間として制限

(int) result

O

0 (エラー), 1 (正常)
0の場合ダウンロードできません。
0の場合リトライしません。

(string) message

 

0 (エラー)の場合、message内容を追加するとエラーが起きた際に内容が表示されます。

(int)
expiration_refresh_popup

Copyright © CATENOID, lnc. All Rights Reserved.
E-mail. jp_sales@catenoid.net | Tel. 03-4405-8462