Udostępnij przez


Wersjonowane serwery dla środowiska testowego PlayReady

Przegląd

Środowisko testowe PlayReady udostępnia wiele wersji serwerów do obsługi testowania różnych wersji i zestawów funkcji PlayReady. Każdy serwer w wersji implementuje określone możliwości i wymagania dotyczące zgodności PlayReady, co umożliwia kompleksowe testowanie implementacji klienta.

Dostępne wersje serwera

Serwery testowe PlayReady 1.x

Starsze serwery do testowania zgodności playReady 1.0-1.3:

https://playready-v1.directtaps.net/pr/svc/rightsmanager.asmx

Funkcje:

  • Uzyskiwanie licencji podstawowej
  • Prosta ochrona danych wyjściowych
  • Starsze protokoły SOAP
  • Zgodność programu Silverlight

Serwery testowe PlayReady 2.x

Serwery obsługujące funkcje PlayReady 2.0-2.3:

https://playready-v2.directtaps.net/pr/svc/rightsmanager.asmx

Funkcje:

  • Rozszerzone zasady licencji
  • Licencje powiązane z domeną
  • Funkcja bezpiecznego zatrzymywania
  • Obsługa drM oparta na sprzęcie

Serwery testowe PlayReady 3.x

Nowoczesne serwery z funkcjami PlayReady 3.0+:

https://playready-v3.directtaps.net/pr/svc/rightsmanager.asmx

Funkcje:

  • Obsługa protokołu COMMON Encryption (CENC)
  • Zaawansowane poziomy ochrony danych wyjściowych
  • Funkcja bezpiecznego usuwania
  • Ulepszona rotacja kluczy

Serwery testowe PlayReady 4.x

Najnowsze serwery obsługujące funkcje PlayReady 4.0+:

https://playready-v4.directtaps.net/pr/svc/rightsmanager.asmx

Funkcje:

  • Obsługa poziomu zabezpieczeń SL3000
  • Zaawansowane zabezpieczenia sprzętowe
  • Rozszerzone wymuszanie zasad
  • Nowoczesne standardy szyfrowania

testowanie Version-Specific

Wykrywanie wersji klienta

Testowanie zgodności serwera z różnymi wersjami klienta:

// Test client version compatibility
async function testClientVersionCompatibility(clientVersion) {
    const serverUrl = getServerUrlForVersion(clientVersion);
    const response = await testLicenseAcquisition(serverUrl);
    return response.success;
}

function getServerUrlForVersion(version) {
    const versionMap = {
        '1.x': 'https://playready-v1.directtaps.net/pr/svc/rightsmanager.asmx',
        '2.x': 'https://playready-v2.directtaps.net/pr/svc/rightsmanager.asmx',
        '3.x': 'https://playready-v3.directtaps.net/pr/svc/rightsmanager.asmx',
        '4.x': 'https://playready-v4.directtaps.net/pr/svc/rightsmanager.asmx'
    };
    return versionMap[version];
}

Macierz zgodności funkcji

Funkcja Wersja 1.x Wersja 2.x Wersja 3.x Wersja 4.x
Podstawowe pozyskiwanie licencji
licencje Domain-Bound
Bezpieczne zatrzymanie
Bezpieczne usuwanie
Zabezpieczenia sprzętowe Częściowy
Zaawansowane listy OPL
Obsługa sl3000

Konfiguracja Version-Specific

Konfiguracja PlayReady 1.x

Podstawowa konfiguracja licencji dla starszych klientów:

<LicenseAcquisition>
    <Header>
        <DATA>
            <PROTECTINFO>
                <KEYLEN>16</KEYLEN>
                <ALGID>AESCTR</ALGID>
            </PROTECTINFO>
            <KID>base64-encoded-kid</KID>
            <CHECKSUM>base64-encoded-checksum</CHECKSUM>
        </DATA>
    </Header>
</LicenseAcquisition>

Konfiguracja PlayReady 2.x

Rozszerzona konfiguracja z obsługą domeny:

{
    "version": "2.0",
    "licenseType": "persistent",
    "keyId": "key-id-guid",
    "domainBinding": {
        "required": true,
        "domainId": "domain-service-id"
    },
    "outputProtection": {
        "digital": "required",
        "analog": "copy-never"
    }
}

Konfiguracja playReady 3.x

Nowoczesna konfiguracja z zaawansowanymi funkcjami:

{
    "version": "3.0",
    "licenseType": "persistent",
    "keyId": "key-id-guid",
    "securityLevel": "SL2000",
    "outputProtectionLevels": {
        "compressedDigitalVideo": 270,
        "uncompressedDigitalVideo": 270,
        "analogVideo": 150,
        "compressedDigitalAudio": 200,
        "uncompressedDigitalAudio": 200
    },
    "secureStop": {
        "required": true,
        "serverUrl": "https://securestop.service.com"
    }
}

Konfiguracja PlayReady 4.x

Najnowsza konfiguracja z obsługą programu SL3000:

{
    "version": "4.0", 
    "licenseType": "persistent",
    "keyId": "key-id-guid",
    "securityLevel": "SL3000",
    "hardwareBinding": {
        "required": true,
        "allowSoftwareFallback": false
    },
    "outputProtectionLevels": {
        "compressedDigitalVideo": 270,
        "uncompressedDigitalVideo": 270,
        "analogVideo": 100
    },
    "advancedSecurity": {
        "antiRollbackClock": true,
        "tamperResistance": "required"
    }
}

Scenariusze testowania według wersji

Testowanie zgodności wersji

Scenariusze testowe dla każdej wersji serwera:

Testowanie playReady 1.x

// Basic license acquisition test
async function testPlayReady1x() {
    const config = {
        serverUrl: 'https://playready-v1.directtaps.net/pr/svc/rightsmanager.asmx',
        playRight: 1,
        keyId: 'test-key-id'
    };
    
    return await testBasicLicenseAcquisition(config);
}

Testowanie playReady 2.x

// Domain-bound license test
async function testPlayReady2x() {
    const config = {
        serverUrl: 'https://playready-v2.directtaps.net/pr/svc/rightsmanager.asmx',
        licenseType: 'persistent',
        keyId: 'test-key-id',
        domainRequired: true
    };
    
    return await testDomainBoundLicense(config);
}

Testowanie playReady 3.x

// Secure stop functionality test
async function testPlayReady3x() {
    const config = {
        serverUrl: 'https://playready-v3.directtaps.net/pr/svc/rightsmanager.asmx',
        licenseType: 'persistent', 
        keyId: 'test-key-id',
        secureStopRequired: true,
        securityLevel: 'SL2000'
    };
    
    return await testSecureStopFunctionality(config);
}

Testowanie playReady 4.x

// Hardware security test
async function testPlayReady4x() {
    const config = {
        serverUrl: 'https://playready-v4.directtaps.net/pr/svc/rightsmanager.asmx',
        licenseType: 'persistent',
        keyId: 'test-key-id',
        securityLevel: 'SL3000',
        hardwareBindingRequired: true
    };
    
    return await testHardwareSecurity(config);
}

Strategia wyboru serwera

Automatyczne wykrywanie wersji

async function selectOptimalServer(clientCapabilities) {
    // Check client PlayReady version
    const clientVersion = clientCapabilities.playreadyVersion;
    
    // Select compatible server version
    if (clientVersion >= '4.0') {
        return 'https://playready-v4.directtaps.net/pr/svc/rightsmanager.asmx';
    } else if (clientVersion >= '3.0') {
        return 'https://playready-v3.directtaps.net/pr/svc/rightsmanager.asmx';
    } else if (clientVersion >= '2.0') {
        return 'https://playready-v2.directtaps.net/pr/svc/rightsmanager.asmx';
    } else {
        return 'https://playready-v1.directtaps.net/pr/svc/rightsmanager.asmx';
    }
}

wybór Feature-Based

function selectServerByFeatures(requiredFeatures) {
    const serverCapabilities = {
        'v4': ['basic', 'domain', 'secureStop', 'secureDelete', 'sl3000'],
        'v3': ['basic', 'domain', 'secureStop', 'secureDelete', 'sl2000'],
        'v2': ['basic', 'domain', 'secureStop'],
        'v1': ['basic']
    };
    
    // Find minimum server version that supports all required features
    for (const [version, features] of Object.entries(serverCapabilities).reverse()) {
        if (requiredFeatures.every(feature => features.includes(feature))) {
            return `https://playready-${version}.directtaps.net/pr/svc/rightsmanager.asmx`;
        }
    }
    
    throw new Error('No compatible server version found');
}

Testowanie migracji

Zgodność między wersjami

Testowanie zgodności licencji w różnych wersjach serwera:

async function testCrossVersionCompatibility() {
    const keyId = 'test-key-12345';
    const results = {};
    
    // Test each server version
    for (const version of ['v1', 'v2', 'v3', 'v4']) {
        try {
            const serverUrl = `https://playready-${version}.directtaps.net/pr/svc/rightsmanager.asmx`;
            results[version] = await testLicenseAcquisition(serverUrl, keyId);
        } catch (error) {
            results[version] = { success: false, error: error.message };
        }
    }
    
    return results;
}

Testowanie ścieżki uaktualniania

Scenariusze uaktualniania klienta testowego:

async function testUpgradePath(fromVersion, toVersion) {
    // Get license from old server
    const oldServerUrl = `https://playready-${fromVersion}.directtaps.net/pr/svc/rightsmanager.asmx`;
    const oldLicense = await acquireLicense(oldServerUrl);
    
    // Test license compatibility with new server
    const newServerUrl = `https://playready-${toVersion}.directtaps.net/pr/svc/rightsmanager.asmx`;
    return await validateLicenseCompatibility(newServerUrl, oldLicense);
}

Najlepsze praktyki

Wskazówki dotyczące wyboru serwera

  1. Dopasuj wersję klienta: użyj wersji serwera zgodnej lub zgodnej z klientem
  2. Wymagania dotyczące funkcji: wybierz na podstawie wymaganych funkcji DRM
  3. Poziom zabezpieczeń: wybierz odpowiedni poziom zabezpieczeń dla zawartości
  4. Zgodność z poprzednimi wersjami: testowanie ze starszymi wersjami serwera pod kątem zgodności

Zalecenia dotyczące testowania

  1. Testowanie macierzy wersji: testowanie wszystkich kombinacji wersji klient-serwer
  2. Izolacja funkcji: Testowanie poszczególnych funkcji w odpowiednich wersjach serwera
  3. Scenariusze migracji: testowanie ścieżek uaktualniania i obniżania poziomu
  4. Obsługa błędów: Scenariusze błędów niezgodności wersji testowej

Monitorowanie i diagnostyka

Testy kondycji serwera

async function checkServerHealth(version) {
    const serverUrl = `https://playready-${version}.directtaps.net/pr/svc/rightsmanager.asmx`;
    
    try {
        const response = await fetch(`${serverUrl}?health`);
        return {
            version: version,
            status: response.ok ? 'healthy' : 'unhealthy',
            responseTime: response.headers.get('x-response-time')
        };
    } catch (error) {
        return {
            version: version,
            status: 'error',
            error: error.message
        };
    }
}

Pomoc techniczna i rozwiązywanie problemów

W przypadku problemów z wersjami serwerów:

  1. Weryfikowanie zgodności wersji klienta-serwera
  2. Sprawdzanie macierzy obsługi funkcji
  3. Testowanie przy użyciu odpowiedniej wersji serwera
  4. Zapoznaj się z wymaganiami dotyczącymi konfiguracji specyficznymi dla wersji
  5. Weryfikowanie wymagań dotyczących poziomu zabezpieczeń

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