Partilhar via


Servidores versionados para ambiente de teste PlayReady

Visão geral

O ambiente de teste PlayReady fornece vários servidores versionados para suportar testes em diferentes versões e conjuntos de recursos do PlayReady. Cada servidor versionado implementa recursos específicos do PlayReady e requisitos de conformidade, permitindo testes abrangentes de implementações de clientes.

Versões de servidor disponíveis

Servidores de teste PlayReady 1.x

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

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

Funcionalidades:

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

Servidores de teste PlayReady 2.x

Servidores que suportam as funcionalidades do PlayReady 2.0-2.3:

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

Funcionalidades:

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

Servidores de teste PlayReady 3.x

Servidores modernos com capacidades PlayReady 3.0+:

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

Funcionalidades:

  • Suporte a criptografia comum (CENC)
  • Níveis avançados de proteção de saída
  • Funcionalidade de exclusão segura
  • Rotação de chaves melhorada

Servidores de teste PlayReady 4.x

Servidores mais recentes que suportam as funcionalidades do PlayReady 4.0+:

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

Funcionalidades:

  • Suporte de nível de segurança SL3000
  • Segurança avançada de hardware
  • Aplicação reforçada das políticas
  • Padrões de criptografia modernos

Testes Version-Specific

Deteção de versão do cliente

Teste 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 de Licença Básica
Licenças Domain-Bound
Paragem segura
Eliminação Segura
Segurança de hardware Parcial
OPLs avançadas
Suporte SL3000

Configuração Version-Specific

Configuração do PlayReady 1.x

Configuração de licença básica 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 melhorada com suporte de 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 a 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 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 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);
}

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

Deteçã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';
    }
}

Feature-Based Seleção

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

Testes de migração

Compatibilidade entre versões

Teste a compatibilidade da licença em diferentes versões de 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

Cenários de atualização do cliente de teste:

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

Melhores práticas

Diretrizes de seleção de servidor

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

Recomendações de testes

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

Monitorização 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 versionados:

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

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