Freigeben über


Base64 JSON-Syntax für PlayReady Test Server

Überblick

Der PlayReady Test Server unterstützt die Base64 JSON-Syntax für die Lizenzkonfiguration und stellt eine kompakte und URL-sichere Methode zum Einbetten komplexer Lizenzparameter bereit. Bei diesem Ansatz werden JSON-Konfigurationsdaten im Base64-Format codiert, sodass sie für URL-Parameter und HTTP-Header geeignet sind.

Codierungsprozess

Die Base64 JSON-Syntax umfasst zwei Schritte:

  1. Erstellen eines JSON-Konfigurationsobjekts
  2. Codieren der JSON-Zeichenfolge mithilfe der Base64-Codierung
JSON Configuration → Base64 Encoding → URL Parameter

Grundlegende JSON-Struktur

Erstellen Sie vor der Codierung eine JSON-Konfiguration:

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

Base64-Codierungsbeispiele

Einfache Konfiguration

Ursprüngliches JSON:

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

Base64-codiert:

eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Komplexe Konfiguration

Ursprüngliches JSON:

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

Base64-codiert:

eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=

URL-Verwendung

Abfrageparameterformat

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

Vollständige Beispiel-URLs

Persistente Lizenz

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

Mietlizenz

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

Konfigurationsoptionen

Lizenztypen

Unterstützung für alle Standardlizenztypen:

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

Ausgabeschutzeinstellungen

Konfigurieren des digitalen und analogen Ausgabeschutzes:

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

Time-Based Einschränkungen

Ablauf- und Karenzzeiträume festlegen:

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

Implementierungsbeispiele

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#-Anwendung

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-Beispiel

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

Erweiterte Konfigurationen

Mehrere Nachverfolgen von Inhalten

Konfiguration für Inhalte mit mehreren Titeln:

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

Domain-Bound-Lizenzen

Konfiguration für domänengebundene Inhalte:

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

Testen und Validierung

Decodierungsüberprüfung

So überprüfen Sie die Base64-Codierung:

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

Allgemeine Testszenarien

  1. Grundlegende Lizenztypen: Testen Sie jeden Lizenztyp einzeln.
  2. Ausgabeschutz: Überprüfen unterschiedlicher Schutzebenen
  3. Zeitbeschränkungen: Ablauf- und Karenzzeiträume testen
  4. Komplexe Konfigurationen: Testen von Multispur- und Domänenszenarien

Fehlerbehandlung

Codierungsfehler

  • Ungültiger JSON-Code: Falsch formatierte JSON-Struktur vor der Codierung
  • Codierungsprobleme: Probleme bei der Zeichencodierung während der Base64-Konvertierung
  • URL-Sicherheit: Sicherstellen der richtigen URL-Codierung von Base64-Daten

Server-Side Fehler

  • Decodierungsfehler: HTTP 400 mit Base64-Decodierungsfehler
  • JSON-Analyse: HTTP 400 mit JSON-Strukturfehlern
  • Konfiguration ungültig: HTTP 400 mit Konfigurationsüberprüfungsfehlern

Bewährte Methoden

  1. JSON-Validierung: Überprüfen von JSON vor der Codierung
  2. URL-Codierung: Ordnungsgemäß codieren Base64-Daten für URLs
  3. Größenbeschränkungen: Halten Sie Konfigurationen für URL-Grenzwerte in angemessener Größe.
  4. Tests: Testen des Codierungs-/Decodierungsprozesses gründlich
  5. Fehlerbehandlung: Behandeln von Codierungs- und Serverfehlern ordnungsgemäß

Vorteile

  • Kompakt: Kompakter als vollständiges JSON in URLs
  • URL-sicher: Base64-Codierung ist URL-sicher
  • Flexibel: Unterstützt komplexe Konfigurationsobjekte
  • Standard: Verwendet die Standardmäßige Base64-Codierung

Support und Problembehandlung

Für Probleme mit der Base64 JSON-Syntax:

  1. Überprüfen der JSON-Struktur vor der Codierung
  2. Testen des Base64-Codierungs-/Decodierungsprozesses
  3. Überprüfen der URL-Codierung von Base64-Daten
  4. Überprüfen von Konfigurationsparametern
  5. Überprüfen von Serverfehlerantworten auf Details

Weitere Unterstützung finden Sie in der Hauptdokumentation zu PlayReady-Testservern .