Udostępnij przez


Składnia base64 JSON dla serwera PlayReady Test Server

Przegląd

Serwer Test PlayReady obsługuje składnię Base64 JSON dla konfiguracji licencji, zapewniając kompaktową i bezpieczną pod adresem URL metodę osadzania złożonych parametrów licencji. To podejście koduje dane konfiguracji JSON w formacie Base64, dzięki czemu nadaje się do parametrów adresu URL i nagłówków HTTP.

Proces kodowania

Składnia base64 JSON obejmuje dwa kroki:

  1. Tworzenie obiektu konfiguracji JSON
  2. Kodowanie ciągu JSON przy użyciu kodowania Base64
JSON Configuration → Base64 Encoding → URL Parameter

Podstawowa struktura JSON

Przed kodowaniem utwórz konfigurację JSON:

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

Przykłady kodowania Base64

Prosta konfiguracja

Oryginalny kod JSON:

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

Zakodowane w formacie Base64:

eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Konfiguracja złożona

Oryginalny kod JSON:

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

Zakodowane w formacie Base64:

eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=

Użycie adresu URL

Format parametru zapytania

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

Kompletne przykładowe adresy URL

Licencja trwała

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

Licencja na wynajem

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

Opcje konfiguracji

Typy licencji

Obsługa wszystkich standardowych typów licencji:

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

Ustawienia ochrony danych wyjściowych

Konfigurowanie ochrony danych wyjściowych cyfrowych i analogowych:

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

Ograniczenia Time-Based

Ustaw okresy wygaśnięcia i prolongaty:

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

Przykłady implementacji

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

Aplikacja języka 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}";

Przykład języka 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}"

Konfiguracje zaawansowane

Zawartość obejmująca wiele ścieżek

Konfiguracja zawartości z wieloma ścieżkami:

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

licencje Domain-Bound

Konfiguracja zawartości powiązanej z domeną:

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

Testowanie i walidacja

Weryfikacja dekodowania

Aby sprawdzić kodowanie Base64:

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

Typowe scenariusze testowe

  1. Podstawowe typy licencji: testowanie poszczególnych typów licencji osobno
  2. Ochrona danych wyjściowych: weryfikowanie różnych poziomów ochrony
  3. Ograniczenia czasowe: wygasanie testów i okresy prolongaty
  4. Złożone konfiguracje: Testowanie scenariuszy obejmujących wiele ścieżek i domen

Obsługa błędów

Błędy kodowania

  • Nieprawidłowy kod JSON: Nieprawidłowo sformułowana struktura JSON przed kodowaniem
  • Problemy z kodowaniem: problemy z kodowaniem znaków podczas konwersji base64
  • Bezpieczeństwo adresu URL: Zapewnianie prawidłowego kodowania adresów URL danych Base64

błędy Server-Side

  • Błędy dekodowania: HTTP 400 z błędem dekodowania Base64
  • Analizowanie kodu JSON: HTTP 400 z błędami struktury JSON
  • Nieprawidłowa konfiguracja: HTTP 400 z błędami walidacji konfiguracji

Najlepsze praktyki

  1. Walidacja JSON: sprawdzanie poprawności kodu JSON przed kodowaniem
  2. Kodowanie adresów URL: poprawnie kodowanie danych Base64 dla adresów URL
  3. Limity rozmiaru: zachowaj rozsądny rozmiar konfiguracji dla limitów adresów URL
  4. Testowanie: Dokładnie przetestuj proces kodowania/dekodowania
  5. Obsługa błędów: obsługa zarówno kodowania, jak i błędów serwera w sposób elastyczny

Zalety

  • Kompaktowanie: Bardziej kompaktowy niż pełny kod JSON w adresach URL
  • Bezpieczny adres URL: kodowanie Base64 jest bezpieczne pod adresem URL
  • Elastyczny: obsługuje złożone obiekty konfiguracji
  • Standardowa: używa standardowego kodowania Base64

Pomoc techniczna i rozwiązywanie problemów

W przypadku problemów ze składnią base64 JSON:

  1. Sprawdzanie struktury JSON przed kodowaniem
  2. Testowanie procesu kodowania/dekodowania Base64
  3. Sprawdzanie kodowania adresów URL danych Base64
  4. Weryfikowanie parametrów konfiguracji
  5. Przejrzyj odpowiedzi na błędy serwera, aby uzyskać szczegółowe informacje

Aby uzyskać dodatkową pomoc techniczną, zapoznaj się z główną dokumentacją serwerów testowych PlayReady .