次の方法で共有


PlayReady テスト サーバーの CustomData JSON 構文

概要

PlayReady テスト サーバーでは、高度なライセンス構成用の CustomData JSON 構文がサポートされています。 このメソッドを使用すると、開発者は、ライセンス要求の CustomData フィールド内で JSON 形式を使用して、複雑なライセンス パラメーターとポリシーを指定できます。

JSON 構造体

CustomData フィールドは、さまざまな構成パラメーターを持つ JSON オブジェクトを受け入れます。

{
  "version": "1.0",
  "config": {
    "licenseType": "persistent|non-persistent|rental|subscription",
    "keyId": "GUID",
    "contentKey": "base64-encoded-key",
    "policies": {
      "outputProtection": {
        "digital": "required|optional|never",
        "analog": "required|optional|never"
      },
      "playback": {
        "allowOffline": true|false,
        "expirationDate": "ISO-8601-datetime",
        "gracePeriod": "duration-in-seconds"
      }
    }
  }
}

構成パラメーター

ライセンスの種類

生成するライセンスの種類を指定します。

  • 永続的: デバイスに格納されているライセンス、アプリケーションの再起動後も存続する
  • 非永続的: 一時的なライセンス、アプリケーションの終了時に有効期限が切れる
  • レンタル: 特定の有効期限が切れる時間制限付きライセンス
  • サブスクリプション: サブスクリプション ベースのライセンスと定期的な検証

キー管理

暗号化キーと識別子を構成します。

{
  "keyId": "12345678-1234-1234-1234-123456789012",
  "contentKey": "base64EncodedContentKey",
  "keyRotation": {
    "enabled": true,
    "interval": "PT1H"
  }
}

出力保護ポリシー

出力保護の要件を制御する:

{
  "outputProtection": {
    "digital": {
      "hdcp": "required",
      "cgmsa": "copy-never"
    },
    "analog": {
      "macrovision": "required",
      "cgmsa": "copy-once"
    }
  }
}

構成の例

基本永続ライセンス

{
  "version": "1.0",
  "config": {
    "licenseType": "persistent",
    "keyId": "12345678-1234-1234-1234-123456789012",
    "policies": {
      "playback": {
        "allowOffline": true
      }
    }
  }
}

時間制限付きレンタル ライセンス

{
  "version": "1.0",
  "config": {
    "licenseType": "rental",
    "keyId": "87654321-4321-4321-4321-210987654321",
    "policies": {
      "playback": {
        "expirationDate": "2024-12-31T23:59:59Z",
        "gracePeriod": 3600
      },
      "outputProtection": {
        "digital": "required",
        "analog": "optional"
      }
    }
  }
}

Output Protection を使用したサブスクリプション ライセンス

{
  "version": "1.0",
  "config": {
    "licenseType": "subscription",
    "keyId": "11111111-2222-3333-4444-555555555555",
    "policies": {
      "playback": {
        "allowOffline": false
      },
      "outputProtection": {
        "digital": "required",
        "analog": "required"
      },
      "subscription": {
        "renewalUrl": "https://subscription.service.com/renew",
        "validationInterval": "PT24H"
      }
    }
  }
}

ライセンス要求での使用状況

HTTP POST 要求

CustomData フィールドに JSON 構成を含めます。

POST /pr/svc/rightsmanager.asmx HTTP/1.1
Host: playready.directtaps.net
Content-Type: application/octet-stream

[License Request with CustomData containing JSON configuration]

クライアント統合

JavaScript の例

const customData = {
  version: "1.0",
  config: {
    licenseType: "persistent",
    keyId: keyId,
    policies: {
      playback: {
        allowOffline: true
      }
    }
  }
};

// Include in license request
const licenseRequest = {
  customData: JSON.stringify(customData),
  // ... other license request parameters
};

C# の例

var customData = new {
    version = "1.0",
    config = new {
        licenseType = "persistent",
        keyId = keyId,
        policies = new {
            playback = new {
                allowOffline = true
            }
        }
    }
};

string jsonCustomData = JsonConvert.SerializeObject(customData);
// Include in PlayReady license request

高度な機能

条件付きアクセス

デバイスまたはユーザー属性に基づいて条件付きアクセスを構成します。

{
  "conditionalAccess": {
    "deviceRestrictions": {
      "allowedDeviceTypes": ["mobile", "desktop"],
      "blockedDevices": ["emulator", "debugger"]
    },
    "geoRestrictions": {
      "allowedCountries": ["US", "CA", "GB"],
      "blockedRegions": ["region1", "region2"]
    }
  }
}

マルチキーのサポート

複数の暗号化キーのサポート:

{
  "keys": [
    {
      "keyId": "key-1-guid",
      "contentKey": "base64-key-1",
      "keyType": "content"
    },
    {
      "keyId": "key-2-guid", 
      "contentKey": "base64-key-2",
      "keyType": "track"
    }
  ]
}

エラー処理

JSON 検証エラー

  • 形式が正しくない JSON: HTTP 400 と JSON 解析エラーの詳細
  • 必須フィールドがありません: フィールド検証エラーが発生した HTTP 400
  • 無効なフィールド値: HTTP 400 と値制約違反

構成エラー

  • サポートされていないライセンスの種類: サポートされている種類の一覧を含む HTTP 400
  • 無効なキー形式: キー形式の要件がある HTTP 400
  • ポリシーの競合: ポリシー解決ガイダンスを使用した HTTP 400

ベスト プラクティス

  1. JSON 検証: 要求を送信する前に JSON 構造を検証する
  2. バージョンの互換性: 機能のサポートに適切なバージョンを使用する
  3. キー セキュリティ: クライアント側コードでコンテンツ キーを公開しない
  4. ポリシー テスト: さまざまなポリシーの組み合わせを徹底的にテストする
  5. エラー処理: すべてのシナリオで包括的なエラー処理を実装する

サポートとトラブルシューティング

CustomData JSON 構文に関する問題の場合:

  1. JSON の形式と構造を検証する
  2. 必須フィールドの存在と値を確認する
  3. ポリシーの互換性と制約を確認する
  4. 簡略化された構成を最初に使用してテストする
  5. サーバーの応答で詳細なエラー情報を確認する

追加のサポートについては、 PlayReady テスト サーバー のメイン ドキュメントを参照してください。