Delen via


Versieservers voor PlayReady-testomgeving

Overzicht

De PlayReady-testomgeving biedt meerdere versies van servers die ondersteuning bieden voor het testen in verschillende PlayReady-versies en functiesets. Elke versieserver implementeert specifieke PlayReady-mogelijkheden en nalevingsvereisten, waardoor uitgebreide tests van client-implementaties mogelijk zijn.

Beschikbare serverversies

PlayReady 1.x-testservers

Verouderde servers voor PlayReady 1.0-1.3-compatibiliteitstests:

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

Functies:

  • Basislicentieaankoop
  • Eenvoudige uitvoerbeveiliging
  • Verouderde SOAP-protocollen
  • Silverlight-compatibiliteit

PlayReady 2.x-testservers

Servers die PlayReady 2.0-2.3-functies ondersteunen:

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

Functies:

  • Uitgebreid licentiebeleid
  • Domeingebonden licenties
  • Veilige stopfunctionaliteit
  • Drm-ondersteuning op basis van hardware

PlayReady 3.x-testservers

Moderne servers met PlayReady 3.0+ mogelijkheden:

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

Functies:

  • Ondersteuning voor Common Encryption (CENC)
  • Geavanceerde uitvoerbeveiligingsniveaus
  • Functionaliteit voor veilig verwijderen
  • Verbeterde sleutelrotatie

PlayReady 4.x-testservers

Nieuwste servers die PlayReady 4.0+ functies ondersteunen:

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

Functies:

  • Ondersteuning voor SL3000-beveiligingsniveau
  • Geavanceerde hardwarebeveiliging
  • Verbeterde beleidshandhaving
  • Moderne versleutelingsstandaarden

testen Version-Specific

Detectie van clientversies

Servercompatibiliteit testen met verschillende clientversies:

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

Functiecompatibiliteitsmatrix

Eigenschap v1.x v2.x v3.x v4.x
Basislicentieaankoop
Domain-Bound licenties
Beveiligde stop
Beveiligd verwijderen
Hardwarebeveiliging Gedeeltelijk
Geavanceerde OPL's
ONDERSTEUNING VOOR SL3000

configuratie van Version-Specific

PlayReady 1.x-configuratie

Basislicentieconfiguratie voor verouderde clients:

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

Verbeterde configuratie met domeinondersteuning:

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

Moderne configuratie met geavanceerde functies:

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

Nieuwste configuratie met SL3000-ondersteuning:

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

Testscenario's per versie

Versiecompatibiliteitstests

Testscenario's voor elke serverversie:

PlayReady 1.x Testen

// 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 Testen

// 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 Testen

// 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 Testen

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

Strategie voor serverselectie

Automatische versiedetectie

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 selectie

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

Migratietests

Compatibiliteit tussen versies

Testlicentiecompatibiliteit in verschillende serverversies:

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

Upgradepad testen

Testscenario's voor clientupgrades:

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

Beste praktijken

Richtlijnen voor serverselectie

  1. Overeenkomen met clientversie: serverversie gebruiken die overeenkomt met of compatibel is met de client
  2. Functievereisten: selecteren op basis van vereiste DRM-functies
  3. Beveiligingsniveau: kies het juiste beveiligingsniveau voor inhoud
  4. Compatibiliteit met eerdere versies: testen met oudere serverversies voor compatibiliteit

Aanbevelingen testen

  1. Versiematrix testen: alle combinaties van client-serverversies testen
  2. Functieisolatie: Afzonderlijke functies testen op de juiste serverversies
  3. Migratiescenario's: upgrade- en downgradepaden testen
  4. Foutafhandeling: Foutscenario's testen die niet overeenkomen met versies

Controle en diagnose

Serverstatuscontroles

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

Ondersteuning en probleemoplossing

Voor problemen met versiebeheerservers:

  1. Compatibiliteit met client-serverversies controleren
  2. Ondersteuningsmatrix voor functies controleren
  3. Testen met de juiste serverversie
  4. Versiespecifieke configuratievereisten controleren
  5. Vereisten op beveiligingsniveau valideren

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