Compartir a través de


Sintaxis JSON base64 para el servidor de pruebas de PlayReady

Información general

El servidor de pruebas de PlayReady admite la sintaxis JSON de Base64 para la configuración de licencias, lo que proporciona un método compacto y seguro para url para insertar parámetros de licencia complejos. Este enfoque codifica los datos de configuración JSON en formato Base64, lo que lo convierte en adecuado para los parámetros de dirección URL y los encabezados HTTP.

Proceso de codificación

La sintaxis JSON de Base64 implica dos pasos:

  1. Creación de un objeto de configuración JSON
  2. Codificación de la cadena JSON mediante codificación Base64
JSON Configuration → Base64 Encoding → URL Parameter

Estructura JSON básica

Antes de codificar, cree una configuración JSON:

{
  "licenseType": "persistent",
  "keyId": "12345678-1234-1234-1234-123456789012",
  "outputProtection": {
    "digital": "required",
    "analog": "optional"
  }
}

Ejemplos de codificación base64

Configuración sencilla

JSON original:

{"licenseType": "persistent", "keyId": "12345678-1234-1234-1234-123456789012"}

Codificado en Base64:

eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Configuración compleja

JSON original:

{
  "licenseType": "rental",
  "keyId": "87654321-4321-4321-4321-210987654321",
  "expirationDate": "2024-12-31T23:59:59Z",
  "outputProtection": {
    "digital": "required",
    "analog": "never"
  }
}

Codificado en Base64:

eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=

Uso de direcciones URL

Formato de parámetro de consulta

https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=BASE64_ENCODED_JSON

Direcciones URL de ejemplo completas

Licencia persistente

https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Licencia de alquiler

https://playready.directtaps.net/pr/svc/rightsmanager.asmx?cfg=base64&data=eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiJ9

Opciones de configuración

Tipos de licencia

Compatibilidad con todos los tipos de licencia estándar:

{
  "licenseType": "persistent|non-persistent|rental|subscription"
}

Configuración de protección de salida

Configurar la protección de salida digital y analógica:

{
  "outputProtection": {
    "digital": "required|optional|never",
    "analog": "required|optional|never",
    "hdcp": {
      "version": "1.4|2.0|2.1|2.2",
      "required": true
    }
  }
}

Restricciones de Time-Based

Establecer períodos de expiración y gracia:

{
  "expirationDate": "2024-12-31T23:59:59Z",
  "gracePeriod": 3600,
  "firstPlayExpiration": "PT48H"
}

Ejemplos de implementación

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

Aplicación de 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}";

Ejemplo de 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}"

Configuraciones avanzadas

Contenido de varias pistas

Configuración del contenido con varias pistas:

{
  "licenseType": "persistent",
  "tracks": [
    {
      "keyId": "video-key-guid",
      "trackType": "video",
      "outputProtection": {
        "digital": "required"
      }
    },
    {
      "keyId": "audio-key-guid", 
      "trackType": "audio",
      "outputProtection": {
        "digital": "optional"
      }
    }
  ]
}

licencias de Domain-Bound

Configuración del contenido enlazado a un dominio:

{
  "licenseType": "persistent",
  "keyId": "domain-key-guid",
  "domainBinding": {
    "domainId": "domain-service-id",
    "domainAccountId": "account-identifier",
    "required": true
  }
}

Pruebas y validación

Comprobación de descodificación

Para comprobar la codificación Base64:

// Decode Base64 back to JSON
const decodedJson = atob(base64Data);
const configObject = JSON.parse(decodedJson);
console.log(configObject);

Escenarios de prueba comunes

  1. Tipos de licencia básicos: pruebe cada tipo de licencia individualmente.
  2. Protección de salida: comprobación de distintos niveles de protección
  3. Restricciones de tiempo: prueba de expiración y períodos de gracia
  4. Configuraciones complejas: probar escenarios de varios seguimientos y dominios

Tratamiento de errores

Errores de codificación

  • JSON no válido: estructura JSON con formato incorrecto antes de codificar
  • Problemas de codificación: problemas de codificación de caracteres durante la conversión de Base64
  • Seguridad de direcciones URL: asegúrese de que la codificación de direcciones URL adecuada de los datos de Base64

errores de Server-Side

  • Errores de descodificación: error de descodificación HTTP 400 con Base64
  • Análisis de JSON: HTTP 400 con errores de estructura JSON
  • Configuración no válida: HTTP 400 con errores de validación de configuración

Procedimientos recomendados

  1. Validación de JSON: validar JSON antes de codificar
  2. Codificación de direcciones URL: codifique correctamente los datos base64 para las direcciones URL.
  3. Límites de tamaño: mantener las configuraciones de tamaño razonable para los límites de direcciones URL
  4. Pruebas: Prueba exhaustiva del proceso de codificación y descodificación
  5. Control de errores: control de errores tanto de codificación como de servidor

Ventajas

  • Compact: más compacto que json completo en direcciones URL
  • Seguro para direcciones URL: La codificación base64 es segura para direcciones URL
  • Flexible: admite objetos de configuración complejos
  • Estándar: usa codificación Base64 estándar

Soporte técnico y solución de problemas

Para problemas con la sintaxis JSON de Base64:

  1. Comprobación de la estructura JSON antes de codificar
  2. Prueba del proceso de codificación y descodificación de Base64
  3. Comprobación de la codificación de direcciones URL de los datos base64
  4. Validación de parámetros de configuración
  5. Revise las respuestas de error del servidor para obtener más información.

Para obtener soporte adicional, consulte la documentación principal de los servidores de prueba de PlayReady .