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 base64 para configuração de licença, fornecendo um método compacto e seguro de URL para inserir parâmetros de licença complexos. Essa abordagem codifica dados de configuração JSON no formato Base64, tornando-os adequados para parâmetros de URL e cabeçalhos HTTP.
Processo de codificação
A sintaxe JSON base64 envolve duas etapas:
- Criar um objeto de configuração JSON
- Codificar a cadeia de caracteres JSON usando a codificação Base64
JSON Configuration → Base64 Encoding → URL Parameter
Estrutura JSON básica
Antes de codificar, crie uma configuração JSON:
{
"licenseType": "persistent",
"keyId": "12345678-1234-1234-1234-123456789012",
"outputProtection": {
"digital": "required",
"analog": "optional"
}
}
Exemplos de codificação base64
Configuração simples
JSON original:
{"licenseType": "persistent", "keyId": "12345678-1234-1234-1234-123456789012"}
Codificado em Base64:
eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9
Configuração complexa
JSON original:
{
"licenseType": "rental",
"keyId": "87654321-4321-4321-4321-210987654321",
"expirationDate": "2024-12-31T23:59:59Z",
"outputProtection": {
"digital": "required",
"analog": "never"
}
}
Codificado em Base64:
eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=
Uso de URL
Formato de parâmetro de consulta
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=BASE64_ENCODED_JSON
Concluir URLs de exemplo
Licença persistente
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9
Licença de aluguel
https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiJ9
Opções de configuração
Tipos de licença
Suporte para todos os tipos de licença padrão:
{
"licenseType": "persistent|non-persistent|rental|subscription"
}
Configurações de proteção de saída
Configurar a proteção de saída digital e analógica:
{
"outputProtection": {
"digital": "required|optional|never",
"analog": "required|optional|never",
"hdcp": {
"version": "1.4|2.0|2.1|2.2",
"required": true
}
}
}
Restrições de Time-Based
Definir períodos de expiração e carência:
{
"expirationDate": "2024-12-31T23:59:59Z",
"gracePeriod": 3600,
"firstPlayExpiration": "PT48H"
}
Exemplos de implementação
JavaScript/HTML5
// Create configuration object
const config = {
licenseType: "persistent",
keyId: keyId,
outputProtection: {
digital: "required",
analog: "optional"
}
};
// Convert to JSON and encode
const jsonString = JSON.stringify(config);
const base64Data = btoa(jsonString);
// Build URL
const licenseUrl = `https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=${base64Data}`;
Aplicativo C#
using System;
using System.Text;
using Newtonsoft.Json;
// Create configuration object
var config = new {
licenseType = "persistent",
keyId = keyId,
outputProtection = new {
digital = "required",
analog = "optional"
}
};
// Convert to JSON and encode
string jsonString = JsonConvert.SerializeObject(config);
byte[] jsonBytes = Encoding.UTF8.GetBytes(jsonString);
string base64Data = Convert.ToBase64String(jsonBytes);
// Build URL
string licenseUrl = $"https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data={base64Data}";
Exemplo do Python
import json
import base64
# Create configuration dictionary
config = {
"licenseType": "persistent",
"keyId": key_id,
"outputProtection": {
"digital": "required",
"analog": "optional"
}
}
# Convert to JSON and encode
json_string = json.dumps(config)
base64_data = base64.b64encode(json_string.encode('utf-8')).decode('utf-8')
# Build URL
license_url = f"https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data={base64_data}"
Configurações Avançadas
Conteúdo de várias faixas
Configuração de conteúdo com várias faixas:
{
"licenseType": "persistent",
"tracks": [
{
"keyId": "video-key-guid",
"trackType": "video",
"outputProtection": {
"digital": "required"
}
},
{
"keyId": "audio-key-guid",
"trackType": "audio",
"outputProtection": {
"digital": "optional"
}
}
]
}
Licenças de Domain-Bound
Configuração para conteúdo associado ao domínio:
{
"licenseType": "persistent",
"keyId": "domain-key-guid",
"domainBinding": {
"domainId": "domain-service-id",
"domainAccountId": "account-identifier",
"required": true
}
}
Teste e validação
Verificação de decodificação
Para verificar a codificação base64:
// Decode Base64 back to JSON
const decodedJson = atob(base64Data);
const configObject = JSON.parse(decodedJson);
console.log(configObject);
Cenários comuns de teste
- Tipos básicos de licença: testar cada tipo de licença individualmente
- Proteção de Saída: verificar diferentes níveis de proteção
- Restrições de tempo: Períodos de expiração e carência de teste
- Configurações complexas: testar cenários de vários controles e domínio
Tratamento de erros
Erros de codificação
- JSON inválido: estrutura JSON malformada antes da codificação
- Problemas de codificação: problemas de codificação de caracteres durante a conversão do Base64
- Segurança da URL: garantir a codificação de URL adequada dos dados base64
Erros de Server-Side
- Falhas de decodificação: erro de decodificação HTTP 400 com Base64
- Análise JSON: HTTP 400 com erros de estrutura JSON
- Configuração inválida: HTTP 400 com erros de validação de configuração
Práticas recomendadas
- Validação JSON: validar JSON antes da codificação
- Codificação de URL: codificar corretamente dados Base64 para URLs
- Limites de tamanho: manter configurações razoavelmente dimensionadas para limites de URL
- Teste: testar o processo de codificação/decodificação minuciosamente
- Tratamento de erros: manipular erros de codificação e de servidor normalmente
Vantagens
- Compacto: JSON mais compacto do que completo em URLs
- Url Safe: a codificação Base64 é segura para URL
- Flexível: dá suporte a objetos de configuração complexos
- Padrão: usa a codificação base64 padrão
Documentação relacionada
- Serviço de Servidor de Teste do PlayReady – Visão geral do serviço principal
- Sintaxe JSON CustomData – formato de configuração JSON completo
- Sintaxe de cadeia de caracteres de consulta – abordagem simples baseada em parâmetro
- Servidores de Teste do PlayReady – Documentação completa do servidor
Suporte e solução de problemas
Para problemas com a sintaxe JSON base64:
- Verificar a estrutura JSON antes da codificação
- Testar o processo de codificação/decodificação base64
- Verificar a codificação de URL de dados base64
- Validar parâmetros de configuração
- Examinar as respostas de erro do servidor para obter detalhes
Para obter suporte adicional, consulte a documentação principal dos Servidores de Teste do PlayReady .