Partager via


Serveurs avec version pour l’environnement de test PlayReady

Aperçu

L’environnement de test PlayReady fournit plusieurs serveurs avec version pour prendre en charge les tests entre différentes versions et jeux de fonctionnalités PlayReady. Chaque serveur avec version implémente des fonctionnalités PlayReady et des exigences de conformité spécifiques, ce qui permet de tester de manière complète les implémentations du client.

Versions de serveur disponibles

Serveurs de test PlayReady 1.x

Serveurs hérités pour les tests de compatibilité PlayReady 1.0-1.3 :

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

Fonctionnalités :

  • Acquisition de licences de base
  • Protection de sortie simple
  • Protocoles SOAP hérités
  • Compatibilité Silverlight

Serveurs de test PlayReady 2.x

Serveurs prenant en charge les fonctionnalités PlayReady 2.0-2.3 :

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

Fonctionnalités :

  • Stratégies de licence améliorées
  • Licences liées au domaine
  • Fonctionnalité d’arrêt sécurisée
  • Prise en charge de DRM basée sur le matériel

Serveurs de test PlayReady 3.x

Serveurs modernes avec fonctionnalités PlayReady 3.0+ :

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

Fonctionnalités :

  • Prise en charge du chiffrement commun (CENC)
  • Niveaux de protection de sortie avancés
  • Fonctionnalité de suppression sécurisée
  • Rotation améliorée des clés

Serveurs de test PlayReady 4.x

Derniers serveurs prenant en charge les fonctionnalités PlayReady 4.0+ :

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

Fonctionnalités :

  • Prise en charge du niveau de sécurité SL3000
  • Sécurité matérielle avancée
  • Application améliorée de la stratégie
  • Normes de chiffrement modernes

test de Version-Specific

Détection de version du client

Testez la compatibilité du serveur avec différentes versions du client :

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

Matrice de compatibilité des fonctionnalités

Caractéristique v1.x v2.x v3.x v4.x
Acquisition de licences de base
licences Domain-Bound
Arrêt sécurisé
Suppression sécurisée
Sécurité matérielle Partiel
Listes de contrôle d’accès avancées
Prise en charge de SL3000

Configuration de Version-Specific

PlayReady 1.x Configuration

Configuration de licence de base pour les clients hérités :

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

Configuration améliorée avec prise en charge du domaine :

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

Configuration moderne avec fonctionnalités avancées :

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

Dernière configuration avec prise en charge de 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"
    }
}

Scénarios de test par version

Test de compatibilité des versions

Scénarios de test pour chaque version du serveur :

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

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

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

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

Stratégie de sélection de serveur

Détection automatique des versions

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

sélection de 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');
}

Test de migration

Compatibilité des versions

Testez la compatibilité des licences entre différentes versions de serveur :

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

Test de chemin de mise à niveau

Scénarios de mise à niveau du client de test :

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

Meilleures pratiques

Recommandations en matière de sélection de serveur

  1. Mettre en correspondance la version du client : utiliser la version du serveur qui correspond ou est compatible avec le client
  2. Configuration requise pour les fonctionnalités : sélectionner en fonction des fonctionnalités DRM requises
  3. Niveau de sécurité : choisissez le niveau de sécurité approprié pour le contenu
  4. Compatibilité descendante : tester avec des versions antérieures du serveur pour la compatibilité

Recommandations de test

  1. Test de la matrice de version : tester toutes les combinaisons de versions client-serveur
  2. Isolation des fonctionnalités : tester des fonctionnalités individuelles sur les versions de serveur appropriées
  3. Scénarios de migration : tester les chemins de mise à niveau et de rétrogradation
  4. Gestion des erreurs : Scénarios d’erreur d’incompatibilité de version de test

Surveillance et diagnostics

Vérifications d’intégrité du serveur

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 et résolution des problèmes

Pour les problèmes liés aux serveurs avec version :

  1. Vérifier la compatibilité des versions du serveur client
  2. Vérifier la matrice de prise en charge des fonctionnalités
  3. Tester avec la version appropriée du serveur
  4. Passer en revue les exigences de configuration spécifiques à la version
  5. Valider les exigences de niveau de sécurité

Pour obtenir une prise en charge supplémentaire, reportez-vous à la documentation principale des serveurs de test PlayReady .