Compartir a través de


Servidores con versiones para el entorno de prueba de PlayReady

Información general

El entorno de prueba de PlayReady proporciona varios servidores con versiones para admitir pruebas en diferentes versiones y conjuntos de características de PlayReady. Cada servidor con versiones implementa funcionalidades y requisitos de cumplimiento específicos de PlayReady, lo que permite realizar pruebas completas de implementaciones de cliente.

Versiones disponibles del servidor

Servidores de prueba de PlayReady 1.x

Servidores heredados para pruebas de compatibilidad de PlayReady 1.0-1.3:

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

Características

  • Adquisición de licencias básica
  • Protección de salida sencilla
  • Protocolos SOAP heredados
  • Compatibilidad de Silverlight

Servidores de prueba de PlayReady 2.x

Servidores compatibles con las características de PlayReady 2.0-2.3:

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

Características

  • Directivas de licencia mejoradas
  • Licencias enlazadas a dominio
  • Funcionalidad de detención segura
  • Compatibilidad con DRM basada en hardware

Servidores de prueba de PlayReady 3.x

Servidores modernos con funcionalidades de PlayReady 3.0+:

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

Características

  • Compatibilidad con el cifrado común (CENC)
  • Niveles de protección de salida avanzados
  • Funcionalidad de eliminación segura
  • Rotación de claves mejorada

Servidores de prueba de PlayReady 4.x

Servidores más recientes que admiten características de PlayReady 4.0+:

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

Características

  • Compatibilidad con el nivel de seguridad SL3000
  • Seguridad avanzada de hardware
  • Aplicación mejorada de directivas
  • Estándares de cifrado modernos

pruebas de Version-Specific

Detección de versiones de cliente

Pruebe la compatibilidad del servidor con diferentes versiones de cliente:

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

Matriz de compatibilidad de características

Característica v1.x v2.x v3.x v4.x
Adquisición básica de licencias
licencias de Domain-Bound
Detención segura
Eliminación segura
Seguridad de hardware Parcial
OPLs avanzadas
Compatibilidad con SL3000

Configuración de Version-Specific

Configuración de PlayReady 1.x

Configuración básica de licencias para clientes heredados:

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

Configuración de PlayReady 2.x

Configuración mejorada con compatibilidad con dominios:

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

Configuración de PlayReady 3.x

Configuración moderna con características avanzadas:

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

Configuración de PlayReady 4.x

Configuración más reciente con compatibilidad con 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"
    }
}

Escenarios de prueba por versión

Pruebas de compatibilidad de versiones

Escenarios de prueba para cada versión del servidor:

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

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

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

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

Estrategia de selección de servidor

Detección automática de versiones

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

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

Pruebas de migración

Compatibilidad entre versiones

Pruebe la compatibilidad de licencias en distintas versiones del servidor:

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

Actualizar pruebas de ruta de acceso

Probar escenarios de actualización de cliente:

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

Procedimientos recomendados

Directrices de selección de servidor

  1. Coincidir con la versión del cliente: use la versión del servidor que coincida o sea compatible con el cliente.
  2. Requisitos de características: seleccione en función de las características DE DRM necesarias.
  3. Nivel de seguridad: elija el nivel de seguridad adecuado para el contenido.
  4. Compatibilidad con versiones anteriores: prueba con versiones anteriores del servidor para la compatibilidad

Recomendaciones de pruebas

  1. Pruebas de matriz de versiones: probar todas las combinaciones de versión de cliente-servidor
  2. Aislamiento de características: probar características individuales en las versiones de servidor adecuadas
  3. Escenarios de migración: probar rutas de actualización y degradación
  4. Control de errores: escenarios de error de coincidencia de versiones de prueba

Supervisión y diagnóstico

Comprobaciones de estado del servidor

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

Soporte técnico y solución de problemas

Para problemas con servidores con versiones:

  1. Comprobación de la compatibilidad de la versión de cliente-servidor
  2. Comprobación de la matriz de compatibilidad de características
  3. Prueba con la versión de servidor adecuada
  4. Revisión de los requisitos de configuración específicos de la versión
  5. Validación de los requisitos de nivel de seguridad

Para obtener soporte adicional, consulte la documentación principal de los servidores de prueba de PlayReady .