Sintassi JSON Base64 per il server di test PlayReady

Informazioni generali

Il server di test PlayReady supporta la sintassi JSON Base64 per la configurazione delle licenze, fornendo un metodo compatto e indipendente dall'URL per incorporare parametri di licenza complessi. Questo approccio codifica i dati di configurazione JSON in formato Base64, rendendoli adatti ai parametri URL e alle intestazioni HTTP.

Processo di codifica

La sintassi JSON di Base64 prevede due passaggi:

  1. Creare un oggetto di configurazione JSON
  2. Codificare la stringa JSON usando la codifica Base64
JSON Configuration → Base64 Encoding → URL Parameter

Struttura JSON di base

Prima della codifica, creare una configurazione JSON:

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

Esempi di codifica Base64

Configurazione semplice

JSON originale:

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

Codifica Base64:

eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Configurazione complessa

JSON originale:

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

Codifica Base64:

eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=

Utilizzo URL

Formato parametro query

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

URL di esempio completi

Licenza permanente

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

Licenza di noleggio

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

Opzioni di configurazione

Tipi di licenza

Supporto per tutti i tipi di licenza standard:

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

Impostazioni di protezione dell'output

Configurare la protezione dell'output digitale e analogico:

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

restrizioni Time-Based

Impostare i periodi di scadenza e di tolleranza:

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

Esempi di implementazione

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}`;

Applicazione C#

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}";

Esempio di Python

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}"

Configurazioni avanzate

Contenuto multitraccia

Configurazione per il contenuto con più tracce:

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

licenze Domain-Bound

Configurazione per il contenuto associato a un dominio:

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

Test e validazione

Verifica della decodifica

Per verificare la codifica Base64:

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

Scenari di test comuni

  1. Tipi di licenza di base: testare singolarmente ogni tipo di licenza
  2. Protezione output: verificare livelli di protezione diversi
  3. Restrizioni temporali: testare la scadenza e i periodi di tolleranza
  4. Configurazioni complesse: testare scenari multitraccia e dominio

Gestione degli errori

Errori di codifica

  • JSON non valido: struttura JSON non valida prima della codifica
  • Problemi di codifica: problemi di codifica dei caratteri durante la conversione Base64
  • Sicurezza URL: garantire la codifica URL corretta dei dati Base64

errori Server-Side

  • Errori di decodifica: HTTP 400 con errore di decodifica Base64
  • Analisi JSON: HTTP 400 con errori di struttura JSON
  • Configurazione non valida: HTTP 400 con errori di convalida della configurazione

Migliori pratiche

  1. Convalida JSON: convalida JSON prima della codifica
  2. Codifica URL: codificare correttamente i dati base64 per gli URL
  3. Limiti di dimensioni: mantenere le configurazioni ragionevolmente ridimensionate per i limiti degli URL
  4. Test: testare accuratamente il processo di codifica/decodifica
  5. Gestione degli errori: gestire correttamente gli errori di codifica e server

Vantaggi

  • Compatta: più compatta di JSON completo negli URL
  • URL sicuro: la codifica Base64 è indipendente dall'URL
  • Flessibile: supporta oggetti di configurazione complessi
  • Standard: usa la codifica Base64 standard

Supporto e risoluzione dei problemi

Per problemi relativi alla sintassi JSON di Base64:

  1. Verificare la struttura JSON prima della codifica
  2. Testare il processo di codifica/decodifica Base64
  3. Controllare la codifica URL dei dati Base64
  4. Convalidare i parametri di configurazione
  5. Esaminare le risposte agli errori del server per informazioni dettagliate

Per ulteriore supporto, vedere la documentazione principale dei server di test PlayReady .