Compartilhar via


Servidores com versão para o ambiente de teste do PlayReady

Visão geral

O Ambiente de Teste do PlayReady fornece vários servidores com versão para dar suporte a testes em diferentes versões do PlayReady e conjuntos de recursos. Cada servidor com versão implementa recursos específicos do PlayReady e requisitos de conformidade, permitindo testes abrangentes de implementações de cliente.

Versões do servidor disponíveis

Servidores de Teste do PlayReady 1.x

Servidores herdados para testes de compatibilidade do PlayReady 1.0-1.3:

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

Recursos:

  • Aquisição de licença básica
  • Proteção de saída simples
  • Protocolos SOAP herdados
  • Compatibilidade do Silverlight

Servidores de Teste do PlayReady 2.x

Servidores com suporte para recursos do PlayReady 2.0-2.3:

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

Recursos:

  • Políticas de licença aprimoradas
  • Licenças associadas ao domínio
  • Funcionalidade de parada segura
  • Suporte a DRM baseado em hardware

Servidores de Teste do PlayReady 3.x

Servidores modernos com funcionalidades do PlayReady 3.0+:

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

Recursos:

  • Suporte a CENC (Criptografia Comum)
  • Níveis avançados de proteção de saída
  • Funcionalidade de exclusão segura
  • Rotação de chaves aprimorada

Servidores de Teste do PlayReady 4.x

Servidores mais recentes com suporte para recursos do PlayReady 4.0+:

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

Recursos:

  • Suporte ao nível de segurança do SL3000
  • Segurança de hardware avançada
  • Imposição de política aprimorada
  • Padrões de criptografia modernos

Teste de Version-Specific

Detecção de versão do cliente

Testar a compatibilidade do servidor com diferentes versões do 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 compatibilidade de recursos

Característica v1.x v2.x v3.x v4.x
Aquisição básica de licença
Licenças de Domain-Bound
Parada Segura
Exclusão segura
Segurança de hardware Parcial
OPLs avançadas
Suporte ao SL3000

Configuração do Version-Specific

Configuração do PlayReady 1.x

Configuração básica de licença para clientes herdados:

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

Configuração do PlayReady 2.x

Configuração aprimorada com suporte ao domínio:

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

Configuração do PlayReady 3.x

Configuração moderna com recursos avançados:

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

Configuração do PlayReady 4.x

Configuração mais recente com suporte ao 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"
    }
}

Cenários de teste por versão

Teste de compatibilidade de versão

Cenários de teste para cada versão do servidor:

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

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

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

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

Estratégia de seleção de servidor

Detecção automática de versão

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

Seleção 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');
}

Teste de migração

Compatibilidade entre versões

Testar a compatibilidade de licenças em diferentes versões do 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;
}

Teste de caminho de atualização

Testar cenários de atualização do 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);
}

Práticas recomendadas

Diretrizes de seleção de servidor

  1. Corresponder à versão do cliente: usar a versão do servidor que corresponde ou é compatível com o cliente
  2. Requisitos de recurso: selecione com base nos recursos de DRM necessários
  3. Nível de segurança: escolha o nível de segurança apropriado para conteúdo
  4. Compatibilidade com versões anteriores: teste com versões de servidor mais antigas para compatibilidade

Recomendações de teste

  1. Teste de matriz de versão: testar todas as combinações de versão cliente-servidor
  2. Isolamento de recursos: testar recursos individuais em versões de servidor apropriadas
  3. Cenários de migração: testar caminhos de atualização e downgrade
  4. Tratamento de erros: cenários de erro de incompatibilidade de versão de teste

Monitoramento e diagnóstico

Verificações de integridade do 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
        };
    }
}

Suporte e solução de problemas

Para problemas com servidores com versão:

  1. Verificar a compatibilidade de versão do cliente-servidor
  2. Verificar matriz de suporte de recursos
  3. Testar com a versão apropriada do servidor
  4. Examinar os requisitos de configuração específicos da versão
  5. Validar os requisitos de nível de segurança

Para obter suporte adicional, consulte a documentação principal dos Servidores de Teste do PlayReady .