Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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
- Corresponder Versão do Cliente: Use a versão do servidor que corresponda ou seja compatível com o cliente
- Requisitos de recursos: selecione com base nos recursos DRM necessários
- Nível de segurança: escolha o nível de segurança apropriado para o conteúdo
- Compatibilidade com versões anteriores: teste a compatibilidade com versões mais antigas do servidor
Recomendações de testes
- Teste de matriz de versão: teste todas as combinações de versão cliente-servidor
- Isolamento de recursos: teste recursos individuais em versões de servidor apropriadas
- Cenários de migração: testar caminhos de upgrade e downgrade
- 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
};
}
}
Documentação relacionada
- Serviço do Servidor de Teste PlayReady - Visão geral do serviço principal
- Como testar versões Client-Server - Diretrizes de teste de versão
- Como migrar - Diretrizes de migração
- PlayReady Test Servers - Documentação completa do servidor
Suporte e solução de problemas
Para problemas com servidores versionados:
- Verificar a compatibilidade da versão cliente-servidor
- Verifique a matriz de suporte de recursos
- Teste com a versão apropriada do servidor
- Revise os requisitos de configuração específicos da versão
- Validar requisitos de nível de segurança
Para obter suporte adicional, consulte a documentação principal dos Servidores de Teste PlayReady .