Freigeben über


Versionsgeschützte Server für PlayReady-Testumgebung

Überblick

Die PlayReady-Testumgebung bietet mehrere versionsgeschützte Server, um Tests in verschiedenen PlayReady-Versionen und Featuresätzen zu unterstützen. Jeder versionsgebundene Server implementiert spezifische PlayReady-Funktionen und Complianceanforderungen und ermöglicht umfassende Tests von Clientimplementierungen.

Verfügbare Serverversionen

PlayReady 1.x Testserver

Legacyserver für Kompatibilitätstests für PlayReady 1.0-1.3:

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

Funktionen:

  • Basislizenzerwerb
  • Einfacher Ausgabeschutz
  • Ältere SOAP-Protokolle
  • Silverlight-Kompatibilität

PlayReady 2.x Testserver

Server, die PlayReady 2.0-2.3-Features unterstützen:

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

Funktionen:

  • Erweiterte Lizenzrichtlinien
  • Domänengebundene Lizenzen
  • Funktion für sicheres Beenden
  • Hardwarebasierte DRM-Unterstützung

PlayReady 3.x Testserver

Moderne Server mit PlayReady 3.0+-Funktionen:

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

Funktionen:

  • Common Encryption (CENC)-Unterstützung
  • Erweiterte Ausgabeschutzebenen
  • Sichere Löschfunktionalität
  • Erweiterte Schlüsseldrehung

PlayReady 4.x Testserver

Neueste Server, die PlayReady 4.0+-Features unterstützen:

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

Funktionen:

  • SL3000-Unterstützung auf Sicherheitsebene
  • Erweiterte Hardwaresicherheit
  • Erweiterte Richtlinienerzwingung
  • Moderne Verschlüsselungsstandards

Version-Specific-Tests

Clientversionserkennung

Testen der Serverkompatibilität mit verschiedenen Clientversionen:

// 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];
}

Featurekompatibilitätsmatrix

Merkmal v1.x v2.x v3.x v4.x
Basislizenzerwerb
Domain-Bound-Lizenzen
Sicheres Beenden
Sicheres Löschen
Hardwaresicherheit Teilweise
Erweiterte OPLs
SL3000-Unterstützung

Version-Specific-Konfiguration

PlayReady 1.x-Konfiguration

Grundlegende Lizenzkonfiguration für Legacyclients:

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

PlayReady 2.x-Konfiguration

Erweiterte Konfiguration mit Domänenunterstützung:

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

PlayReady 3.x-Konfiguration

Moderne Konfiguration mit erweiterten Features:

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

PlayReady 4.x-Konfiguration

Neueste Konfiguration mit SL3000-Unterstützung:

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

Testszenarien nach Version

Versionskompatibilitätstests

Testszenarien für jede Serverversion:

PlayReady 1.x-Tests

// 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);
}

PlayReady 2.x-Tests

// 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);
}

PlayReady 3.x-Tests

// 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);
}

PlayReady 4.x-Tests

// 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);
}

Serverauswahlstrategie

Automatische Versionserkennung

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

Feature-Based Auswahl

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');
}

Migrationstests

Versionsübergreifende Kompatibilität

Testen der Lizenzkompatibilität in verschiedenen Serverversionen:

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

Upgradepfadtests

Testen von Clientupgradeszenarien:

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

Bewährte Methoden

Richtlinien für die Serverauswahl

  1. Clientversion beachten: Verwenden der Serverversion, die mit dem Client übereinstimmt oder kompatibel ist
  2. Featureanforderungen: Auswählen basierend auf den erforderlichen DRM-Features
  3. Sicherheitsstufe: Auswählen der geeigneten Sicherheitsstufe für Inhalte
  4. Abwärtskompatibilität: Testen mit älteren Serverversionen zur Kompatibilität

Testempfehlungen

  1. Versionsmatrixtests: Testen aller Clientserverversionskombinationen
  2. Featureisolation: Testen einzelner Features in entsprechenden Serverversionen
  3. Migrationsszenarien: Testen von Upgrade- und Downgradepfaden
  4. Fehlerbehandlung: Fehlerszenarien für Testversionskonflikt

Überwachung und Diagnose

Serverintegritätsprüfungen

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

Support und Problembehandlung

Für Probleme mit versionsierten Servern:

  1. Überprüfen der Clientserverversionskompatibilität
  2. Überprüfen der Featureunterstützungsmatrix
  3. Testen mit entsprechender Serverversion
  4. Überprüfen der versionsspezifischen Konfigurationsanforderungen
  5. Überprüfen der Anforderungen auf Sicherheitsebene

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