Condividi tramite


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 .