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
PlayReady Secure Stop Server fournit un point de terminaison de test pour la validation des fonctionnalités d’arrêt sécurisé dans les implémentations PlayReady. L’arrêt sécurisé garantit que les données de suivi de la consommation multimédia sont transmises de manière sécurisée des clients aux fournisseurs de contenu, ce qui permet une surveillance précise de l’utilisation et des rapports de conformité.
Point de terminaison de service
Le serveur de test Secure Stop est disponible à l’adresse suivante :
https://playready.directtaps.net/pr/svc/securestop.asmx
Protocole d’arrêt sécurisé
Vue d’ensemble du protocole
L’arrêt sécurisé permet aux clients de signaler en toute sécurité les informations de fin de session :
- Le client commence la session de lecture
- La licence spécifie les exigences en matière d’arrêt sécurisé
- Le client génère des données d’arrêt sécurisées pendant la lecture
- À la fin de la session, le client envoie un rapport d’arrêt sécurisé au serveur
- Le serveur valide et accuse réception
Flux de messages
Client License Server Secure Stop Server
| | |
|-- License Request -------->| |
|<-- License Response -------| |
| (with SecureStop URL) | |
| | |
| [Playback Session] | |
| | |
|-- Secure Stop Report ------|-------------------------->|
|<-- Acknowledgment ---------|---------------------------|
Configuration du serveur
Exigences en matière d’arrêt sécurisé
Configurez l’arrêt sécurisé dans les réponses de licence :
{
"licenseType": "persistent",
"keyId": "key-id-guid",
"secureStop": {
"required": true,
"serverUrl": "https://playready.directtaps.net/pr/svc/securestop.asmx",
"reportingFrequency": "session-end",
"customData": {
"sessionId": "unique-session-identifier",
"contentId": "content-identifier"
}
}
}
Configuration de la réponse au serveur
Le serveur prend en charge différents modes de réponse pour les tests :
{
"responseMode": "success|failure|timeout|partial",
"acknowledgmentDelay": 0,
"customData": {
"testScenario": "normal-operation"
}
}
Points de terminaison d’API
Envoyer un rapport d’arrêt sécurisé
Point de terminaison :POST /pr/svc/securestop.asmx/SubmitReport
Format de la demande :
POST /pr/svc/securestop.asmx/SubmitReport HTTP/1.1
Host: playready.directtaps.net
Content-Type: application/octet-stream
[Secure Stop Report Data - Binary Format]
Format de réponse :
HTTP/1.1 200 OK
Content-Type: application/octet-stream
[Secure Stop Acknowledgment - Binary Format]
État du rapport de requête
Point de terminaison :GET /pr/svc/securestop.asmx/QueryStatus
Format de la demande :
GET /pr/svc/securestop.asmx/QueryStatus?sessionId=SESSION_ID HTTP/1.1
Host: playready.directtaps.net
Format de réponse :
{
"sessionId": "session-identifier",
"status": "pending|received|processed|error",
"timestamp": "2024-01-15T10:30:00Z",
"reportSize": 1024,
"processingTime": 50
}
Scénarios de test
Test d’arrêt sécurisé de base
Testez le flux d’arrêt sécurisé normal :
async function testBasicSecureStop() {
// 1. Acquire license with secure stop requirement
const license = await acquireLicense({
keyId: 'test-key-id',
secureStopRequired: true,
secureStopUrl: 'https://playready.directtaps.net/pr/svc/securestop.asmx'
});
// 2. Simulate playback session
const session = await startPlaybackSession(license);
// 3. End session and generate secure stop report
const secureStopReport = await endSessionWithSecureStop(session);
// 4. Submit secure stop report
const response = await submitSecureStopReport(secureStopReport);
return response.acknowledged;
}
Test de gestion des erreurs
Scénarios d’erreur de test :
async function testSecureStopErrorHandling() {
const testCases = [
{
name: 'Invalid Report Format',
data: generateInvalidReport(),
expectedError: 'INVALID_FORMAT'
},
{
name: 'Expired Session',
data: generateExpiredSessionReport(),
expectedError: 'SESSION_EXPIRED'
},
{
name: 'Duplicate Report',
data: generateDuplicateReport(),
expectedError: 'DUPLICATE_REPORT'
}
];
const results = [];
for (const testCase of testCases) {
try {
await submitSecureStopReport(testCase.data);
results.push({ test: testCase.name, result: 'UNEXPECTED_SUCCESS' });
} catch (error) {
results.push({
test: testCase.name,
result: error.code === testCase.expectedError ? 'PASS' : 'FAIL'
});
}
}
return results;
}
Tests de performances
Testez les performances d’arrêt sécurisées :
async function testSecureStopPerformance() {
const concurrentReports = 10;
const reports = [];
// Generate multiple secure stop reports
for (let i = 0; i < concurrentReports; i++) {
reports.push(generateSecureStopReport(`session-${i}`));
}
// Submit reports concurrently
const startTime = Date.now();
const promises = reports.map(report => submitSecureStopReport(report));
const results = await Promise.allSettled(promises);
const endTime = Date.now();
return {
totalTime: endTime - startTime,
averageTime: (endTime - startTime) / concurrentReports,
successCount: results.filter(r => r.status === 'fulfilled').length,
errorCount: results.filter(r => r.status === 'rejected').length
};
}
Intégration du client
Implémentation JavaScript
class SecureStopClient {
constructor(serverUrl) {
this.serverUrl = serverUrl;
}
async submitReport(secureStopData) {
const response = await fetch(`${this.serverUrl}/SubmitReport`, {
method: 'POST',
headers: {
'Content-Type': 'application/octet-stream'
},
body: secureStopData
});
if (!response.ok) {
throw new Error(`Secure stop submission failed: ${response.status}`);
}
return await response.arrayBuffer();
}
async queryStatus(sessionId) {
const response = await fetch(`${this.serverUrl}/QueryStatus?sessionId=${sessionId}`);
if (!response.ok) {
throw new Error(`Status query failed: ${response.status}`);
}
return await response.json();
}
}
// Usage
const secureStopClient = new SecureStopClient('https://playready.directtaps.net/pr/svc/securestop.asmx');
Implémentation C#
public class SecureStopClient
{
private readonly HttpClient httpClient;
private readonly string serverUrl;
public SecureStopClient(string serverUrl)
{
this.serverUrl = serverUrl;
this.httpClient = new HttpClient();
}
public async Task<byte[]> SubmitReportAsync(byte[] secureStopData)
{
var content = new ByteArrayContent(secureStopData);
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
var response = await httpClient.PostAsync($"{serverUrl}/SubmitReport", content);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsByteArrayAsync();
}
public async Task<SecureStopStatus> QueryStatusAsync(string sessionId)
{
var response = await httpClient.GetAsync($"{serverUrl}/QueryStatus?sessionId={sessionId}");
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<SecureStopStatus>(json);
}
}
Format des données
Structure de rapport d’arrêt sécurisé
Le rapport d’arrêt sécurisé contient les éléments suivants :
- Identificateur de session : ID de session unique
- Identificateur de contenu : contenu consommé
- Données d’utilisation : durée de lecture, qualité, etc.
- Informations sur l’appareil : détails de l’appareil client
- Informations d’horodatage : heures de début/de fin de session
- Signature numérique : preuve de chiffrement d’authenticité
Validation du rapport
Le serveur valide les rapports pour :
- Intégrité du format : structure binaire correcte
- Signature numérique : authenticité de chiffrement
- Validité de session : paramètres de session valides
- Précision de l’horodatage : valeurs de temps raisonnables
- Détection dupliquée : prévention des soumissions en double
Fonctionnalités avancées
Prise en charge des données personnalisées
Incluez des données personnalisées dans des rapports d’arrêt sécurisé :
{
"customData": {
"contentProvider": "test-provider",
"userAgent": "PlayReady-Client/4.0",
"playbackQuality": "HD",
"geolocation": "US-WEST"
}
}
Création de rapports par lots
Envoyez plusieurs rapports d’arrêt sécurisés dans une seule requête :
async function submitBatchReports(reports) {
const batchData = {
reports: reports,
batchId: generateBatchId(),
timestamp: new Date().toISOString()
};
const response = await fetch(`${serverUrl}/SubmitBatch`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(batchData)
});
return await response.json();
}
Supervision et analytique
Analyse des rapports
Le serveur de test fournit des points de terminaison d’analyse :
GET /pr/svc/securestop.asmx/Analytics?period=24h
La réponse inclut :
- Nombre total de rapports reçus
- Temps de traitement moyen
- Taux d’erreur par type
- Distribution géographique
- Statistiques de version du client
Surveillance de la santé
Surveiller l’intégrité du serveur :
async function checkSecureStopServerHealth() {
const response = await fetch('https://playready.directtaps.net/pr/svc/securestop.asmx/Health');
return await response.json();
}
Meilleures pratiques
Mise en œuvre chez le client
- Livraison fiable : Implémenter la logique de nouvelle tentative pour les soumissions ayant échoué
- Prise en charge hors connexion : rapports de file d’attente lorsque le réseau n’est pas disponible
- Validation des données : valider les données de rapport avant la soumission
- Gestion des erreurs : Gérer correctement les erreurs du serveur
- Confidentialité : Protéger les données sensibles dans les rapports
Recommandations de test
- Scénarios complets : Tester des conditions normales et d’erreur
- Test des performances : Valider dans des conditions de charge
- Conditions réseau : Tester avec différents scénarios réseau
- Intégrité des données : vérifier la précision des données du rapport
- Test de sécurité : Valider les composants de chiffrement
Documentation connexe
- PlayReady Test Server Service - Vue d’ensemble du service principal
- Secure Delete Server - Fonctionnalités sécurisées associées
- Serveurs avec version - Informations sur la version du serveur
- Serveurs de test PlayReady - Documentation complète sur le serveur
Support et résolution des problèmes
Pour les problèmes liés à la fonctionnalité d’arrêt sécurisé :
- Vérifier que l’arrêt sécurisé est activé dans la licence
- Vérifier le format et la structure du rapport
- Valider la connectivité réseau au serveur
- Passer en revue la réponse du serveur pour obtenir les détails de l’erreur
- Tester avec des scénarios simplifiés en premier
Problèmes courants :
- Erreurs de format de rapport : format ou structure binaire non valide
- Validation de signature : problèmes de signature de chiffrement
- Délais d’expiration du réseau : problèmes de connectivité du serveur
- Expiration de session : rapports envoyés trop tard
Pour obtenir une prise en charge supplémentaire, reportez-vous à la documentation principale des serveurs de test PlayReady .