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 PlayReady Test Server suporta a sintaxe JSON CustomData para configuração de licença avançada. Esse método permite que os desenvolvedores especifiquem parâmetros e políticas de licença complexos usando o formato JSON dentro do campo CustomData de solicitações de licença.
Estrutura JSON
O campo CustomData aceita um objeto JSON com vários parâmetros de configuração:
{
"version": "1.0",
"config": {
"licenseType": "persistent|non-persistent|rental|subscription",
"keyId": "GUID",
"contentKey": "base64-encoded-key",
"policies": {
"outputProtection": {
"digital": "required|optional|never",
"analog": "required|optional|never"
},
"playback": {
"allowOffline": true|false,
"expirationDate": "ISO-8601-datetime",
"gracePeriod": "duration-in-seconds"
}
}
}
}
Parâmetros de configuração
Tipo de Licença
Especifica o tipo de licença a ser gerada:
- persistente: Licença armazenada no dispositivo, sobrevive à reinicialização do aplicativo
- não persistente: licença temporária, expira quando o aplicativo é fechado
- aluguer: Licença por tempo limitado com expiração específica
- assinatura: licença baseada em assinatura com validação periódica
Gestão de Chaves
Configure chaves e identificadores de criptografia:
{
"keyId": "12345678-1234-1234-1234-123456789012",
"contentKey": "base64EncodedContentKey",
"keyRotation": {
"enabled": true,
"interval": "PT1H"
}
}
Políticas de proteção de saída
Controle os requisitos de proteção de saída:
{
"outputProtection": {
"digital": {
"hdcp": "required",
"cgmsa": "copy-never"
},
"analog": {
"macrovision": "required",
"cgmsa": "copy-once"
}
}
}
Exemplos de configurações
Licença Básica Persistente
{
"version": "1.0",
"config": {
"licenseType": "persistent",
"keyId": "12345678-1234-1234-1234-123456789012",
"policies": {
"playback": {
"allowOffline": true
}
}
}
}
Licença de aluguer com restrições de tempo
{
"version": "1.0",
"config": {
"licenseType": "rental",
"keyId": "87654321-4321-4321-4321-210987654321",
"policies": {
"playback": {
"expirationDate": "2024-12-31T23:59:59Z",
"gracePeriod": 3600
},
"outputProtection": {
"digital": "required",
"analog": "optional"
}
}
}
}
Licença de Subscrição com Proteção de Saída
{
"version": "1.0",
"config": {
"licenseType": "subscription",
"keyId": "11111111-2222-3333-4444-555555555555",
"policies": {
"playback": {
"allowOffline": false
},
"outputProtection": {
"digital": "required",
"analog": "required"
},
"subscription": {
"renewalUrl": "https://subscription.service.com/renew",
"validationInterval": "PT24H"
}
}
}
}
Uso em solicitações de licença
Solicitação HTTP POST
Inclua a configuração JSON no campo CustomData:
POST /pr/svc/rightsmanager.asmx HTTP/1.1
Host: playready.directtaps.net
Content-Type: application/octet-stream
[License Request with CustomData containing JSON configuration]
Integração do Cliente
Exemplo de JavaScript
const customData = {
version: "1.0",
config: {
licenseType: "persistent",
keyId: keyId,
policies: {
playback: {
allowOffline: true
}
}
}
};
// Include in license request
const licenseRequest = {
customData: JSON.stringify(customData),
// ... other license request parameters
};
Exemplo em C#
var customData = new {
version = "1.0",
config = new {
licenseType = "persistent",
keyId = keyId,
policies = new {
playback = new {
allowOffline = true
}
}
}
};
string jsonCustomData = JsonConvert.SerializeObject(customData);
// Include in PlayReady license request
Funcionalidades avançadas
Acesso Condicional
Configure o acesso condicional com base nos atributos do dispositivo ou do usuário:
{
"conditionalAccess": {
"deviceRestrictions": {
"allowedDeviceTypes": ["mobile", "desktop"],
"blockedDevices": ["emulator", "debugger"]
},
"geoRestrictions": {
"allowedCountries": ["US", "CA", "GB"],
"blockedRegions": ["region1", "region2"]
}
}
}
Suporte Multi-Key
Suporte para várias chaves de encriptação:
{
"keys": [
{
"keyId": "key-1-guid",
"contentKey": "base64-key-1",
"keyType": "content"
},
{
"keyId": "key-2-guid",
"contentKey": "base64-key-2",
"keyType": "track"
}
]
}
Tratamento de erros
Erros de validação JSON
- JSON malformado: HTTP 400 com detalhes de erro de análise JSON
- Campos obrigatórios ausentes: HTTP 400 com erros de validação de campo
- Valores de campo inválidos: HTTP 400 com violações de restrição de valor
Erros de configuração
- Tipo de licença não suportado: HTTP 400 com lista de tipos suportados
- Formato de chave inválido: HTTP 400 com requisitos de formato de chave
- Conflitos de política: HTTP 400 com orientação de resolução de política
Melhores práticas
- Validação JSON: Valide a estrutura JSON antes de enviar solicitações
- Compatibilidade de versão: use a versão apropriada para suporte a recursos
- Segurança de chave: nunca exponha chaves de conteúdo no código do lado do cliente
- Teste de políticas: teste completamente diferentes combinações de políticas
- Tratamento de erros: implemente um tratamento de erros abrangente para todos os cenários
Documentação relacionada
- Serviço do Servidor de Teste PlayReady - Visão geral do serviço principal
- Sintaxe da cadeia de caracteres de consulta - Configuração simples baseada em URL
- Sintaxe JSON Base64 - formato JSON codificado Base64
- PlayReady Test Servers - Documentação completa do servidor
Suporte e solução de problemas
Para problemas com a sintaxe JSON CustomData:
- Validar o formato e a estrutura JSON
- Verificar presença e valores obrigatórios no campo
- Verificar a compatibilidade e as restrições da política
- Teste primeiro com configurações simplificadas
- Revise a resposta do servidor para obter informações detalhadas sobre erros
Para obter suporte adicional, consulte a documentação principal dos Servidores de Teste PlayReady .