Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Información general
El servidor de pruebas de PlayReady admite la sintaxis JSON de CustomData para la configuración avanzada de licencias. Este método permite a los desarrolladores especificar parámetros y directivas de licencia complejos mediante el formato JSON dentro del campo CustomData de solicitudes de licencia.
Estructura JSON
El campo CustomData acepta un objeto JSON con varios parámetros de configuración:
{
"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 configuración
Tipo de licencia
Especifica el tipo de licencia que se va a generar:
- persistente: la licencia almacenada en el dispositivo sobrevive al reinicio de la aplicación.
- no persistente: la licencia temporal expira cuando se cierra la aplicación.
- alquiler: licencia limitada por tiempo con expiración específica
- suscripción: licencia basada en suscripciones con validación periódica
Administración de claves
Configure las claves de cifrado y los identificadores:
{
"keyId": "12345678-1234-1234-1234-123456789012",
"contentKey": "base64EncodedContentKey",
"keyRotation": {
"enabled": true,
"interval": "PT1H"
}
}
Directivas de protección de salida
Controlar los requisitos de protección de salida:
{
"outputProtection": {
"digital": {
"hdcp": "required",
"cgmsa": "copy-never"
},
"analog": {
"macrovision": "required",
"cgmsa": "copy-once"
}
}
}
Configuraciones de ejemplo
Licencia persistente básica
{
"version": "1.0",
"config": {
"licenseType": "persistent",
"keyId": "12345678-1234-1234-1234-123456789012",
"policies": {
"playback": {
"allowOffline": true
}
}
}
}
Licencia de alquiler con restricciones de tiempo
{
"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"
}
}
}
}
Licencia de suscripción con protección de salida
{
"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 en solicitudes de licencia
Solicitud HTTP POST
Incluya la configuración JSON en el 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]
Integración de clientes
Ejemplo 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
};
Ejemplo 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
Características avanzadas
Acceso condicional
Configure el acceso condicional basado en atributos de dispositivo o usuario:
{
"conditionalAccess": {
"deviceRestrictions": {
"allowedDeviceTypes": ["mobile", "desktop"],
"blockedDevices": ["emulator", "debugger"]
},
"geoRestrictions": {
"allowedCountries": ["US", "CA", "GB"],
"blockedRegions": ["region1", "region2"]
}
}
}
Compatibilidad con varias claves
Compatibilidad con varias claves de cifrado:
{
"keys": [
{
"keyId": "key-1-guid",
"contentKey": "base64-key-1",
"keyType": "content"
},
{
"keyId": "key-2-guid",
"contentKey": "base64-key-2",
"keyType": "track"
}
]
}
Tratamiento de errores
Errores de validación de JSON
- JSON con formato incorrecto: HTTP 400 con detalles del error de análisis de JSON
- Campos obligatorios que faltan: HTTP 400 con errores de validación de campos
- Valores de campo no válidos: HTTP 400 con infracciones de restricciones de valor
Errores de configuración
- Tipo de licencia no compatible: HTTP 400 con la lista de tipos admitidos
- Formato de clave no válido: HTTP 400 con requisitos de formato de clave
- Conflictos de directivas: HTTP 400 con instrucciones de resolución de directivas
Procedimientos recomendados
- Validación de JSON: validación de la estructura JSON antes de enviar solicitudes
- Compatibilidad de versiones: usar la versión adecuada para la compatibilidad con características
- Seguridad de claves: nunca exponga las claves de contenido en el código del lado cliente
- Pruebas de directivas: prueba exhaustiva de diferentes combinaciones de directivas
- Control de errores: implementar un control completo de errores para todos los escenarios
Documentación relacionada
- Servicio de servidor de prueba de PlayReady : información general sobre el servicio principal
- Sintaxis de cadena de consulta : configuración sencilla basada en direcciones URL
- Sintaxis JSON base64 : formato JSON codificado en Base64
- Servidores de prueba de PlayReady : documentación completa del servidor
Soporte técnico y solución de problemas
Para problemas con la sintaxis JSON de CustomData:
- Validación del formato y la estructura JSON
- Comprobación de la presencia y los valores de campo necesarios
- Comprobación de la compatibilidad y restricciones de directivas
- Prueba con configuraciones simplificadas primero
- Revisión de la respuesta del servidor para obtener información detallada sobre errores
Para obtener soporte adicional, consulte la documentación principal de los servidores de prueba de PlayReady .