Partager via


Syntaxe JSON Base64 pour le serveur de test PlayReady

Aperçu

Le serveur de test PlayReady prend en charge la syntaxe JSON Base64 pour la configuration des licences, fournissant une méthode compacte et sécurisée d’URL pour l’incorporation de paramètres de licence complexes. Cette approche encode les données de configuration JSON au format Base64, ce qui le rend adapté aux paramètres d’URL et aux en-têtes HTTP.

Processus d’encodage

La syntaxe JSON Base64 implique deux étapes :

  1. Créer un objet de configuration JSON
  2. Encoder la chaîne JSON à l’aide de l’encodage Base64
JSON Configuration → Base64 Encoding → URL Parameter

Structure JSON de base

Avant l’encodage, créez une configuration JSON :

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

Exemples d’encodage Base64

Simple Configuration

JSON d’origine :

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

Codé en base64 :

eyJsaWNlbnNlVHlwZSI6InBlcnNpc3RlbnQiLCJrZXlJZCI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTAxMiJ9

Configuration complexe

JSON d’origine :

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

Codé en base64 :

eyJsaWNlbnNlVHlwZSI6InJlbnRhbCIsImtleUlkIjoiODc2NTQzMjEtNDMyMS00MzIxLTQzMjEtMjEwOTg3NjU0MzIxIiwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTEyLTMxVDIzOjU5OjU5WiIsIm91dHB1dFByb3RlY3Rpb24iOnsiZGlnaXRhbCI6InJlcXVpcmVkIiwiYW5hbG9nIjoibmV2ZXIifX0=

Utilisation de l’URL

Format des paramètres de requête

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

Exemples complets d’URL

Licence persistante

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

Licence de location

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

Options de configuration

Types de licences

Prise en charge de tous les types de licences standard :

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

Paramètres de protection de sortie

Configurez la protection de sortie numérique et analogique :

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

restrictions de Time-Based

Définissez les périodes d’expiration et de grâce :

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

Exemples d’implémentation

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

C# Application

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

Exemple 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}"

Configurations avancées

Contenu à plusieurs pistes

Configuration du contenu avec plusieurs pistes :

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

licences Domain-Bound

Configuration du contenu lié au domaine :

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

Test et validation

Vérification du décodage

Pour vérifier l’encodage Base64 :

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

Scénarios de test courants

  1. Types de licences de base : tester chaque type de licence individuellement
  2. Protection de sortie : vérifier différents niveaux de protection
  3. Restrictions de temps : expiration des tests et périodes de grâce
  4. Configurations complexes : tester des scénarios multi-suivi et de domaine

Gestion des erreurs

Erreurs d’encodage

  • JSON non valide : structure JSON mal formée avant l’encodage
  • Problèmes d’encodage : problèmes d’encodage de caractères pendant la conversion Base64
  • Sécurité de l’URL : garantir l’encodage d’URL approprié des données Base64

erreurs de Server-Side

  • Échecs de décodage : Erreur de décodage HTTP 400 avec décodage Base64
  • Analyse JSON : HTTP 400 avec des erreurs de structure JSON
  • Configuration non valide : HTTP 400 avec des erreurs de validation de configuration

Meilleures pratiques

  1. Validation JSON : valider JSON avant l’encodage
  2. Encodage d’URL : encoder correctement les données Base64 pour les URL
  3. Limites de taille : conserver les configurations raisonnablement dimensionnées pour les limites d’URL
  4. Test : test de processus d’encodage/décodage minutieusement
  5. Gestion des erreurs : gérer correctement les erreurs d’encodage et de serveur

Avantages

  • Compact : plus compact que json complet dans les URL
  • URL safe : l’encodage Base64 est url-safe
  • Flexible : prend en charge les objets de configuration complexes
  • Standard : utilise l’encodage Base64 standard

Support et résolution des problèmes

Pour les problèmes liés à la syntaxe JSON Base64 :

  1. Vérifier la structure JSON avant l’encodage
  2. Tester le processus d’encodage/décodage Base64
  3. Vérifier l’encodage d’URL des données Base64
  4. Valider les paramètres de configuration
  5. Passer en revue les réponses d’erreur du serveur pour plus d’informations

Pour obtenir une prise en charge supplémentaire, reportez-vous à la documentation principale des serveurs de test PlayReady .