PlayReady Test Sunucusu için Base64 JSON Sözdizimi

Genel Bakış

PlayReady Test Sunucusu, lisans yapılandırması için Base64 JSON söz dizimini destekler ve karmaşık lisans parametrelerini eklemek için kompakt ve URL güvenli bir yöntem sağlar. Bu yaklaşım, JSON yapılandırma verilerini Base64 biçiminde kodlayarak URL parametreleri ve HTTP üst bilgileri için uygun hale getirir.

Kodlama İşlemi

Base64 JSON söz dizimi iki adımdan oluşur:

  1. JSON yapılandırma nesnesi oluşturma
  2. Base64 kodlamasını kullanarak JSON dizesini kodlama
JSON Configuration → Base64 Encoding → URL Parameter

Temel JSON Yapısı

Kodlamadan önce bir JSON yapılandırması oluşturun:

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

Base64 Kodlama Örnekleri

Basit Yapılandırma

Özgün JSON:

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

Base64 Kodlanmış:

eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Karmaşık Yapılandırma

Özgün JSON:

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

Base64 Kodlanmış:

eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=

URL Kullanımı

Sorgu Parametresi Biçimi

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

Tam Örnek URL'ler

Kalıcı Lisans

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

Kiralama Lisansı

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

Yapılandırma Seçenekleri

Lisans Türleri

Tüm standart lisans türleri için destek:

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

Çıkış Koruması Ayarları

Dijital ve analog çıkış korumasını yapılandırın:

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

Time-Based Kısıtlamaları

Süre sonu ve yetkisiz kullanım sürelerini ayarlayın:

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

Uygulama Örnekleri

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# Uygulaması

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 Örneği

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

Gelişmiş Yapılandırmalar

çok parçalı içerik

Birden çok parça içeren içerik için yapılandırma:

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

Domain-Bound Lisansları

Etki alanına bağlı içerik için yapılandırma:

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

Test ve Doğrulama

Kod Çözme Doğrulaması

Base64 kodlamasını doğrulamak için:

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

Yaygın Test Senaryoları

  1. Temel Lisans Türleri: Her lisans türünü ayrı ayrı test edin
  2. Çıkış Koruması: Farklı koruma düzeylerini doğrulama
  3. Zaman Kısıtlamaları: Test süre sonu ve yetkisiz kullanım süreleri
  4. Karmaşık Yapılandırmalar: Çoklu izleme ve etki alanı senaryolarını test etme

Hata İşleme

Kodlama Hataları

  • Geçersiz JSON: Kodlamadan önce hatalı biçimlendirilmiş JSON yapısı
  • Kodlama Sorunları: Base64 dönüştürme sırasında karakter kodlama sorunları
  • URL Güvenliği: Base64 verilerinin düzgün URL kodlamasını sağlayın

Server-Side Hataları

  • Kod Çözme Hataları: Base64 kod çözme hatasıyla HTTP 400
  • JSON Ayrıştırma: JSON yapısı hatalarıyla HTTP 400
  • Yapılandırma Geçersiz: Yapılandırma doğrulama hatalarıyla HTTP 400

En İyi Yöntemler

  1. JSON Doğrulaması: Kodlamadan önce JSON doğrulama
  2. URL Kodlama: URL'ler için Base64 verilerini düzgün bir şekilde kodlama
  3. Boyut Sınırları: URL sınırları için yapılandırmaların makul boyutta kalmasını sağlayın
  4. Test: Kodlama/kod çözme işlemini kapsamlı bir şekilde test etme
  5. Hata İşleme: Hem kodlama hem de sunucu hatalarını düzgün bir şekilde işleme

Avantajlar

  • Kompakt: URL'lerde tam JSON'dan daha kompakt
  • URL Güvenli: Base64 kodlaması URL güvenlidir
  • Esnek: Karmaşık yapılandırma nesnelerini destekler
  • Standart: Standart Base64 kodlamasını kullanır

Destek ve Sorun Giderme

Base64 JSON söz dizimi ile ilgili sorunlar için:

  1. Kodlamadan önce JSON yapısını doğrulama
  2. Base64 kodlama/kod çözme işlemini test etme
  3. Base64 verilerinin URL kodlamasını denetleme
  4. Yapılandırma parametrelerini doğrulama
  5. Ayrıntılar için sunucu hata yanıtlarını gözden geçirin

Ek destek için ana PlayReady Test Sunucuları belgelerine bakın.