Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 :
- Créer un objet de configuration JSON
- 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
- Types de licences de base : tester chaque type de licence individuellement
- Protection de sortie : vérifier différents niveaux de protection
- Restrictions de temps : expiration des tests et périodes de grâce
- 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
- Validation JSON : valider JSON avant l’encodage
- Encodage d’URL : encoder correctement les données Base64 pour les URL
- Limites de taille : conserver les configurations raisonnablement dimensionnées pour les limites d’URL
- Test : test de processus d’encodage/décodage minutieusement
- 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
Documentation connexe
- PlayReady Test Server Service - Vue d’ensemble du service principal
- Syntaxe JSON CustomData - Format de configuration JSON complet
- Syntaxe de chaîne de requête - Approche simple basée sur des paramètres
- Serveurs de test PlayReady - Documentation complète sur le serveur
Support et résolution des problèmes
Pour les problèmes liés à la syntaxe JSON Base64 :
- Vérifier la structure JSON avant l’encodage
- Tester le processus d’encodage/décodage Base64
- Vérifier l’encodage d’URL des données Base64
- Valider les paramètres de configuration
- 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 .