Delen via


Base64 JSON-syntaxis voor PlayReady-testserver

Overzicht

De PlayReady-testserver biedt ondersteuning voor de syntaxis van Base64 JSON voor licentieconfiguratie en biedt een compacte en URL-veilige methode voor het insluiten van complexe licentieparameters. Deze methode codeert JSON-configuratiegegevens in Base64-indeling, waardoor deze geschikt is voor URL-parameters en HTTP-headers.

Coderingsproces

De JSON-syntaxis base64 omvat twee stappen:

  1. Een JSON-configuratieobject maken
  2. De JSON-tekenreeks coderen met Base64-codering
JSON Configuration → Base64 Encoding → URL Parameter

Basis-JSON-structuur

Voordat u coderen, maakt u een JSON-configuratie:

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

Voorbeelden van Base64-codering

Eenvoudige configuratie

Oorspronkelijke JSON:

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

Base64 Gecodeerd:

eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Complexe configuratie

Oorspronkelijke JSON:

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

Base64 Gecodeerd:

eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=

URL-gebruik

Queryparameterindeling

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

Volledige voorbeeld-URL's

Permanente licentie

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

Huurlicentie

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

Configuratieopties

Licentietypen

Ondersteuning voor alle standaardlicentietypen:

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

Instellingen voor uitvoerbeveiliging

Digitale en analoge uitvoerbeveiliging configureren:

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

beperkingen voor Time-Based

Verloop- en respijtperioden instellen:

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

Implementatievoorbeelden

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

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

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

Geavanceerde configuraties

Inhoud met meerdere traceren

Configuratie voor inhoud met meerdere sporen:

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

Domain-Bound licenties

Configuratie voor domeingebonden inhoud:

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

Testen en validatie

Verificatie decoderen

Base64-codering controleren:

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

Algemene testscenario's

  1. Basislicentietypen: elk licentietype afzonderlijk testen
  2. Uitvoerbeveiliging: verschillende beveiligingsniveaus controleren
  3. Tijdsbeperkingen: verloop- en respijtperioden testen
  4. Complexe configuraties: scenario's met meerdere paden en domeinen testen

Foutafhandeling

Coderingsfouten

  • Ongeldige JSON: Ongeldige JSON-structuur vóór codering
  • Coderingsproblemen: Problemen met tekencodering tijdens de Base64-conversie
  • URL-veiligheid: zorg voor de juiste URL-codering van Base64-gegevens

Server-Side fouten

  • Decoderingsfouten: HTTP 400 met Base64-decoderingsfout
  • JSON Parsing: HTTP 400 met JSON-structuurfouten
  • Configuratie ongeldig: HTTP 400 met configuratievalidatiefouten

Beste praktijken

  1. JSON-validatie: JSON valideren vóór codering
  2. URL-codering: Base64-gegevens correct coderen voor URL's
  3. Groottelimieten: configuraties redelijk groot houden voor URL-limieten
  4. Testen: Het coderings-/decoderingsproces grondig testen
  5. Foutafhandeling: afhandelen van zowel coderings- als serverfouten probleemloos

Voordelen

  • Compact: Compacter dan volledige JSON in URL's
  • URL Veilig: Base64-codering is URL-veilig
  • Flexibel: ondersteunt complexe configuratieobjecten
  • Standaard: Maakt gebruik van standaard Base64-codering

Ondersteuning en probleemoplossing

Voor problemen met de JSON-syntaxis van Base64:

  1. JSON-structuur controleren vóór codering
  2. Base64-coderings-/decoderingsproces testen
  3. URL-codering van Base64-gegevens controleren
  4. Configuratieparameters valideren
  5. Controleer de antwoorden op serverfouten voor meer informatie

Raadpleeg de belangrijkste documentatie voor PlayReady-testservers voor aanvullende ondersteuning.