Base64 JSON szintaxis a PlayReady tesztkiszolgálóhoz

Áttekintés

A PlayReady tesztkiszolgáló támogatja a Base64 JSON-szintaxist a licenckonfigurációhoz, és kompakt és URL-biztonságos módszert biztosít az összetett licencparaméterek beágyazásához. Ez a megközelítés a JSON-konfigurációs adatokat Base64 formátumban kódolja, így alkalmassá teszi az URL-paraméterek és a HTTP-fejlécek megadására.

Kódolási folyamat

A Base64 JSON szintaxisa két lépésből áll:

  1. JSON-konfigurációs objektum létrehozása
  2. A JSON-sztring kódolása Base64 kódolással
JSON Configuration → Base64 Encoding → URL Parameter

Alapszintű JSON-struktúra

Kódolás előtt hozzon létre egy JSON-konfigurációt:

{
  "licenseType": "persistent",
  "keyId": "12345678-1234-1234-1234-123456789012",
  "outputProtection": {
    "digital": "required",
    "analog": "optional"
  }
}

Base64-kódolási példák

Egyszerű konfiguráció

Eredeti JSON:

{"licenseType": "persistent", "keyId": "12345678-1234-1234-1234-123456789012"}

Base64 Kódolás:

eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Összetett konfiguráció

Eredeti JSON:

{
  "licenseType": "rental",
  "keyId": "87654321-4321-4321-4321-210987654321",
  "expirationDate": "2024-12-31T23:59:59Z",
  "outputProtection": {
    "digital": "required",
    "analog": "never"
  }
}

Base64 Kódolás:

eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=

URL-használat

Lekérdezési paraméter formátuma

https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=BASE64_ENCODED_JSON

Példa URL-címeinek kitöltése

Állandó licenc

https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Bérleti licenc

https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiJ9

Konfigurációs beállítások

Licenctípusok

Az összes standard licenctípus támogatása:

{
  "licenseType": "persistent|non-persistent|rental|subscription"
}

Kimeneti védelmi beállítások

Digitális és analóg kimeneti védelem konfigurálása:

{
  "outputProtection": {
    "digital": "required|optional|never",
    "analog": "required|optional|never",
    "hdcp": {
      "version": "1.4|2.0|2.1|2.2",
      "required": true
    }
  }
}

Time-Based korlátozások

Lejárati és türelmi időszakok beállítása:

{
  "expirationDate": "2024-12-31T23:59:59Z",
  "gracePeriod": 3600,
  "firstPlayExpiration": "PT48H"
}

Megvalósítási példák

JavaScript/HTML5

// Create configuration object
const config = {
  licenseType: "persistent",
  keyId: keyId,
  outputProtection: {
    digital: "required",
    analog: "optional"
  }
};

// Convert to JSON and encode
const jsonString = JSON.stringify(config);
const base64Data = btoa(jsonString);

// Build URL
const licenseUrl = `https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=${base64Data}`;

C# alkalmazás

using System;
using System.Text;
using Newtonsoft.Json;

// Create configuration object
var config = new {
    licenseType = "persistent",
    keyId = keyId,
    outputProtection = new {
        digital = "required",
        analog = "optional"
    }
};

// Convert to JSON and encode
string jsonString = JsonConvert.SerializeObject(config);
byte[] jsonBytes = Encoding.UTF8.GetBytes(jsonString);
string base64Data = Convert.ToBase64String(jsonBytes);

// Build URL
string licenseUrl = $"https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data={base64Data}";

Python-példa

import json
import base64

# Create configuration dictionary
config = {
    "licenseType": "persistent",
    "keyId": key_id,
    "outputProtection": {
        "digital": "required",
        "analog": "optional"
    }
}

# Convert to JSON and encode
json_string = json.dumps(config)
base64_data = base64.b64encode(json_string.encode('utf-8')).decode('utf-8')

# Build URL
license_url = f"https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data={base64_data}"

Speciális konfigurációk

Többsávos tartalom

Többsávos tartalom konfigurálása:

{
  "licenseType": "persistent",
  "tracks": [
    {
      "keyId": "video-key-guid",
      "trackType": "video",
      "outputProtection": {
        "digital": "required"
      }
    },
    {
      "keyId": "audio-key-guid", 
      "trackType": "audio",
      "outputProtection": {
        "digital": "optional"
      }
    }
  ]
}

Domain-Bound licencek

Tartományhoz kötött tartalom konfigurálása:

{
  "licenseType": "persistent",
  "keyId": "domain-key-guid",
  "domainBinding": {
    "domainId": "domain-service-id",
    "domainAccountId": "account-identifier",
    "required": true
  }
}

Tesztelés és ellenőrzés

Dekódolás ellenőrzése

A Base64 kódolásának ellenőrzése:

// Decode Base64 back to JSON
const decodedJson = atob(base64Data);
const configObject = JSON.parse(decodedJson);
console.log(configObject);

Gyakori tesztelési forgatókönyvek

  1. Alapszintű licenctípusok: Az egyes licenctípusok egyenkénti tesztelése
  2. Kimeneti védelem: Különböző védelmi szintek ellenőrzése
  3. Időkorlátozások: Lejárati és türelmi időszakok tesztelése
  4. Összetett konfigurációk: Többsávos és tartományi forgatókönyvek tesztelése

Hibakezelés

Kódolási hibák

  • Érvénytelen JSON: Hibás JSON-struktúra kódolás előtt
  • Kódolási problémák: Karakterkódolási problémák a Base64-átalakítás során
  • URL-biztonság: A Base64-adatok megfelelő URL-kódolásának biztosítása

Server-Side hibák

  • Dekódolási hibák: HTTP 400 Base64-dekódolási hibával
  • JSON-elemzés: HTTP 400 JSON-struktúrahibákkal
  • Érvénytelen konfiguráció: HTTP 400 konfigurációérvényesítési hibákkal

Ajánlott eljárások

  1. JSON-ellenőrzés: JSON ellenőrzése kódolás előtt
  2. URL-kódolás: Base64-adatok megfelelő kódolása URL-címekhez
  3. Méretkorlátok: Az URL-korlátokhoz megfelelő méretű konfigurációk megtartása
  4. Tesztelés: A kódolási/dekódolási folyamat alapos tesztelése
  5. Hibakezelés: A kódolási és a kiszolgálói hibák kezelése kecsesen

Előnyök

  • Kompakt: Kompaktabb, mint a teljes JSON URL-címekben
  • BIZTONSÁGOS URL- cím: A Base64 kódolása URL-biztonságos
  • Rugalmas: Támogatja az összetett konfigurációs objektumokat
  • Standard: Standard Base64 kódolást használ

Támogatás és hibaelhárítás

A Base64 JSON szintaxisával kapcsolatos problémák esetén:

  1. JSON-struktúra ellenőrzése kódolás előtt
  2. A Base64 kódolási/dekódolási folyamatának tesztelése
  3. A Base64-adatok URL-kódolásának ellenőrzése
  4. Konfigurációs paraméterek ellenőrzése
  5. A részletekért tekintse át a kiszolgálói hibaválaszokat

További támogatásért tekintse meg a PlayReady tesztkiszolgálók fő dokumentációját.