Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Przegląd
Środowisko testowe PlayReady udostępnia wiele wersji serwerów do obsługi testowania różnych wersji i zestawów funkcji PlayReady. Każdy serwer w wersji implementuje określone możliwości i wymagania dotyczące zgodności PlayReady, co umożliwia kompleksowe testowanie implementacji klienta.
Dostępne wersje serwera
Serwery testowe PlayReady 1.x
Starsze serwery do testowania zgodności playReady 1.0-1.3:
https://playready-v1.directtaps.net/pr/svc/rightsmanager.asmx
Funkcje:
- Uzyskiwanie licencji podstawowej
- Prosta ochrona danych wyjściowych
- Starsze protokoły SOAP
- Zgodność programu Silverlight
Serwery testowe PlayReady 2.x
Serwery obsługujące funkcje PlayReady 2.0-2.3:
https://playready-v2.directtaps.net/pr/svc/rightsmanager.asmx
Funkcje:
- Rozszerzone zasady licencji
- Licencje powiązane z domeną
- Funkcja bezpiecznego zatrzymywania
- Obsługa drM oparta na sprzęcie
Serwery testowe PlayReady 3.x
Nowoczesne serwery z funkcjami PlayReady 3.0+:
https://playready-v3.directtaps.net/pr/svc/rightsmanager.asmx
Funkcje:
- Obsługa protokołu COMMON Encryption (CENC)
- Zaawansowane poziomy ochrony danych wyjściowych
- Funkcja bezpiecznego usuwania
- Ulepszona rotacja kluczy
Serwery testowe PlayReady 4.x
Najnowsze serwery obsługujące funkcje PlayReady 4.0+:
https://playready-v4.directtaps.net/pr/svc/rightsmanager.asmx
Funkcje:
- Obsługa poziomu zabezpieczeń SL3000
- Zaawansowane zabezpieczenia sprzętowe
- Rozszerzone wymuszanie zasad
- Nowoczesne standardy szyfrowania
testowanie Version-Specific
Wykrywanie wersji klienta
Testowanie zgodności serwera z różnymi wersjami klienta:
// Test client version compatibility
async function testClientVersionCompatibility(clientVersion) {
const serverUrl = getServerUrlForVersion(clientVersion);
const response = await testLicenseAcquisition(serverUrl);
return response.success;
}
function getServerUrlForVersion(version) {
const versionMap = {
'1.x': 'https://playready-v1.directtaps.net/pr/svc/rightsmanager.asmx',
'2.x': 'https://playready-v2.directtaps.net/pr/svc/rightsmanager.asmx',
'3.x': 'https://playready-v3.directtaps.net/pr/svc/rightsmanager.asmx',
'4.x': 'https://playready-v4.directtaps.net/pr/svc/rightsmanager.asmx'
};
return versionMap[version];
}
Macierz zgodności funkcji
| Funkcja | Wersja 1.x | Wersja 2.x | Wersja 3.x | Wersja 4.x |
|---|---|---|---|---|
| Podstawowe pozyskiwanie licencji | ✓ | ✓ | ✓ | ✓ |
| licencje Domain-Bound | ✗ | ✓ | ✓ | ✓ |
| Bezpieczne zatrzymanie | ✗ | ✓ | ✓ | ✓ |
| Bezpieczne usuwanie | ✗ | ✗ | ✓ | ✓ |
| Zabezpieczenia sprzętowe | ✗ | Częściowy | ✓ | ✓ |
| Zaawansowane listy OPL | ✗ | ✗ | ✓ | ✓ |
| Obsługa sl3000 | ✗ | ✗ | ✗ | ✓ |
Konfiguracja Version-Specific
Konfiguracja PlayReady 1.x
Podstawowa konfiguracja licencji dla starszych klientów:
<LicenseAcquisition>
<Header>
<DATA>
<PROTECTINFO>
<KEYLEN>16</KEYLEN>
<ALGID>AESCTR</ALGID>
</PROTECTINFO>
<KID>base64-encoded-kid</KID>
<CHECKSUM>base64-encoded-checksum</CHECKSUM>
</DATA>
</Header>
</LicenseAcquisition>
Konfiguracja PlayReady 2.x
Rozszerzona konfiguracja z obsługą domeny:
{
"version": "2.0",
"licenseType": "persistent",
"keyId": "key-id-guid",
"domainBinding": {
"required": true,
"domainId": "domain-service-id"
},
"outputProtection": {
"digital": "required",
"analog": "copy-never"
}
}
Konfiguracja playReady 3.x
Nowoczesna konfiguracja z zaawansowanymi funkcjami:
{
"version": "3.0",
"licenseType": "persistent",
"keyId": "key-id-guid",
"securityLevel": "SL2000",
"outputProtectionLevels": {
"compressedDigitalVideo": 270,
"uncompressedDigitalVideo": 270,
"analogVideo": 150,
"compressedDigitalAudio": 200,
"uncompressedDigitalAudio": 200
},
"secureStop": {
"required": true,
"serverUrl": "https://securestop.service.com"
}
}
Konfiguracja PlayReady 4.x
Najnowsza konfiguracja z obsługą programu SL3000:
{
"version": "4.0",
"licenseType": "persistent",
"keyId": "key-id-guid",
"securityLevel": "SL3000",
"hardwareBinding": {
"required": true,
"allowSoftwareFallback": false
},
"outputProtectionLevels": {
"compressedDigitalVideo": 270,
"uncompressedDigitalVideo": 270,
"analogVideo": 100
},
"advancedSecurity": {
"antiRollbackClock": true,
"tamperResistance": "required"
}
}
Scenariusze testowania według wersji
Testowanie zgodności wersji
Scenariusze testowe dla każdej wersji serwera:
Testowanie playReady 1.x
// Basic license acquisition test
async function testPlayReady1x() {
const config = {
serverUrl: 'https://playready-v1.directtaps.net/pr/svc/rightsmanager.asmx',
playRight: 1,
keyId: 'test-key-id'
};
return await testBasicLicenseAcquisition(config);
}
Testowanie playReady 2.x
// Domain-bound license test
async function testPlayReady2x() {
const config = {
serverUrl: 'https://playready-v2.directtaps.net/pr/svc/rightsmanager.asmx',
licenseType: 'persistent',
keyId: 'test-key-id',
domainRequired: true
};
return await testDomainBoundLicense(config);
}
Testowanie playReady 3.x
// Secure stop functionality test
async function testPlayReady3x() {
const config = {
serverUrl: 'https://playready-v3.directtaps.net/pr/svc/rightsmanager.asmx',
licenseType: 'persistent',
keyId: 'test-key-id',
secureStopRequired: true,
securityLevel: 'SL2000'
};
return await testSecureStopFunctionality(config);
}
Testowanie playReady 4.x
// Hardware security test
async function testPlayReady4x() {
const config = {
serverUrl: 'https://playready-v4.directtaps.net/pr/svc/rightsmanager.asmx',
licenseType: 'persistent',
keyId: 'test-key-id',
securityLevel: 'SL3000',
hardwareBindingRequired: true
};
return await testHardwareSecurity(config);
}
Strategia wyboru serwera
Automatyczne wykrywanie wersji
async function selectOptimalServer(clientCapabilities) {
// Check client PlayReady version
const clientVersion = clientCapabilities.playreadyVersion;
// Select compatible server version
if (clientVersion >= '4.0') {
return 'https://playready-v4.directtaps.net/pr/svc/rightsmanager.asmx';
} else if (clientVersion >= '3.0') {
return 'https://playready-v3.directtaps.net/pr/svc/rightsmanager.asmx';
} else if (clientVersion >= '2.0') {
return 'https://playready-v2.directtaps.net/pr/svc/rightsmanager.asmx';
} else {
return 'https://playready-v1.directtaps.net/pr/svc/rightsmanager.asmx';
}
}
wybór Feature-Based
function selectServerByFeatures(requiredFeatures) {
const serverCapabilities = {
'v4': ['basic', 'domain', 'secureStop', 'secureDelete', 'sl3000'],
'v3': ['basic', 'domain', 'secureStop', 'secureDelete', 'sl2000'],
'v2': ['basic', 'domain', 'secureStop'],
'v1': ['basic']
};
// Find minimum server version that supports all required features
for (const [version, features] of Object.entries(serverCapabilities).reverse()) {
if (requiredFeatures.every(feature => features.includes(feature))) {
return `https://playready-${version}.directtaps.net/pr/svc/rightsmanager.asmx`;
}
}
throw new Error('No compatible server version found');
}
Testowanie migracji
Zgodność między wersjami
Testowanie zgodności licencji w różnych wersjach serwera:
async function testCrossVersionCompatibility() {
const keyId = 'test-key-12345';
const results = {};
// Test each server version
for (const version of ['v1', 'v2', 'v3', 'v4']) {
try {
const serverUrl = `https://playready-${version}.directtaps.net/pr/svc/rightsmanager.asmx`;
results[version] = await testLicenseAcquisition(serverUrl, keyId);
} catch (error) {
results[version] = { success: false, error: error.message };
}
}
return results;
}
Testowanie ścieżki uaktualniania
Scenariusze uaktualniania klienta testowego:
async function testUpgradePath(fromVersion, toVersion) {
// Get license from old server
const oldServerUrl = `https://playready-${fromVersion}.directtaps.net/pr/svc/rightsmanager.asmx`;
const oldLicense = await acquireLicense(oldServerUrl);
// Test license compatibility with new server
const newServerUrl = `https://playready-${toVersion}.directtaps.net/pr/svc/rightsmanager.asmx`;
return await validateLicenseCompatibility(newServerUrl, oldLicense);
}
Najlepsze praktyki
Wskazówki dotyczące wyboru serwera
- Dopasuj wersję klienta: użyj wersji serwera zgodnej lub zgodnej z klientem
- Wymagania dotyczące funkcji: wybierz na podstawie wymaganych funkcji DRM
- Poziom zabezpieczeń: wybierz odpowiedni poziom zabezpieczeń dla zawartości
- Zgodność z poprzednimi wersjami: testowanie ze starszymi wersjami serwera pod kątem zgodności
Zalecenia dotyczące testowania
- Testowanie macierzy wersji: testowanie wszystkich kombinacji wersji klient-serwer
- Izolacja funkcji: Testowanie poszczególnych funkcji w odpowiednich wersjach serwera
- Scenariusze migracji: testowanie ścieżek uaktualniania i obniżania poziomu
- Obsługa błędów: Scenariusze błędów niezgodności wersji testowej
Monitorowanie i diagnostyka
Testy kondycji serwera
async function checkServerHealth(version) {
const serverUrl = `https://playready-${version}.directtaps.net/pr/svc/rightsmanager.asmx`;
try {
const response = await fetch(`${serverUrl}?health`);
return {
version: version,
status: response.ok ? 'healthy' : 'unhealthy',
responseTime: response.headers.get('x-response-time')
};
} catch (error) {
return {
version: version,
status: 'error',
error: error.message
};
}
}
Powiązana dokumentacja
- PlayReady Test Server Service — omówienie głównej usługi
- Jak testować wersje Client-Server — wskazówki dotyczące testowania wersji
- Jak przeprowadzić migrację — wskazówki dotyczące migracji
- Serwery testowe PlayReady — kompletna dokumentacja serwera
Pomoc techniczna i rozwiązywanie problemów
W przypadku problemów z wersjami serwerów:
- Weryfikowanie zgodności wersji klienta-serwera
- Sprawdzanie macierzy obsługi funkcji
- Testowanie przy użyciu odpowiedniej wersji serwera
- Zapoznaj się z wymaganiami dotyczącymi konfiguracji specyficznymi dla wersji
- Weryfikowanie wymagań dotyczących poziomu zabezpieczeń
Aby uzyskać dodatkową pomoc techniczną, zapoznaj się z główną dokumentacją serwerów testowych PlayReady .