Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
O Servidor de Teste do PlayReady dá suporte à sintaxe JSON CustomData para configuração avançada de licença. Esse método permite que os desenvolvedores especifiquem parâmetros e políticas de licença complexos usando o formato JSON no 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 fecha
- aluguel: licença limitada por tempo com expiração específica
- assinatura: licença baseada em assinatura com validação periódica
Gerenciamento de chaves
Configurar chaves de criptografia e identificadores:
{
"keyId": "12345678-1234-1234-1234-123456789012",
"contentKey": "base64EncodedContentKey",
"keyRotation": {
"enabled": true,
"interval": "PT1H"
}
}
Políticas de proteção de saída
Controlar os requisitos de proteção de saída:
{
"outputProtection": {
"digital": {
"hdcp": "required",
"cgmsa": "copy-never"
},
"analog": {
"macrovision": "required",
"cgmsa": "copy-once"
}
}
}
Configurações de exemplo
Licença persistente básica
{
"version": "1.0",
"config": {
"licenseType": "persistent",
"keyId": "12345678-1234-1234-1234-123456789012",
"policies": {
"playback": {
"allowOffline": true
}
}
}
}
Licença de aluguel 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 assinatura com a 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 de 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 de 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
Recursos avançados
Acesso condicional
Configure o acesso condicional com base em atributos de dispositivo ou usuário:
{
"conditionalAccess": {
"deviceRestrictions": {
"allowedDeviceTypes": ["mobile", "desktop"],
"blockedDevices": ["emulator", "debugger"]
},
"geoRestrictions": {
"allowedCountries": ["US", "CA", "GB"],
"blockedRegions": ["region1", "region2"]
}
}
}
Suporte a várias chaves
Suporte para várias chaves de criptografia:
{
"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 necessá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 sem suporte: HTTP 400 com lista de tipos com suporte
- Formato de chave inválido: HTTP 400 com requisitos de formato de chave
- Conflitos de política: HTTP 400 com diretrizes de resolução de política
Práticas recomendadas
- Validação JSON: validar a estrutura JSON antes de enviar solicitações
- Compatibilidade de versão: usar a versão apropriada para o suporte a recursos
- Segurança de Chave: Nunca exponha chaves de conteúdo no código do lado do cliente
- Teste de política: testar combinações de políticas diferentes completamente
- Tratamento de erros: implementar o tratamento de erros abrangente para todos os cenários
Documentação relacionada
- Serviço de Servidor de Teste do PlayReady – Visão geral do serviço principal
- Sintaxe de cadeia de caracteres de consulta – configuração simples baseada em URL
- Sintaxe JSON base64 – formato JSON codificado em Base64
- Servidores de Teste do PlayReady – Documentação completa do servidor
Suporte e solução de problemas
Para problemas com a sintaxe JSON CustomData:
- Validar o formato JSON e a estrutura
- Verificar a presença e os valores de campo necessários
- Verificar a compatibilidade e as restrições da política
- Testar com configurações simplificadas primeiro
- Examinar a resposta do servidor para obter informações detalhadas de erro
Para obter suporte adicional, consulte a documentação principal dos Servidores de Teste do PlayReady .