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
Serwer Test PlayReady zawiera specjalną clientinfo funkcję, która odzwierciedla informacje dostępne dla serwera licencji z żądania licencji wygenerowanego przez klienta. Ta funkcja umożliwia deweloperom łatwe badanie informacji o klientach przesyłanych do serwerów licencji i tworzenie odpowiedniej logiki generowania licencji na podstawie możliwości klienta.
Funkcja informacji o kliencie
Użyj parametru , clientinfo aby sprawdzić informacje o kliencie wysyłane w żądaniach licencji:
Adres URL serwera testowego:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(msg:clientinfo)
Akcja protokołu SOAP:
http://schemas.microsoft.com/DRM/2007/03/protocols/AcquireLicense
Przykładowa struktura żądań
Funkcja informacji o kliencie przetwarza standardowe żądania pozyskiwania licencji PlayReady i zwraca szczegółowe informacje o kliencie zamiast licencji. Oto struktura typowego żądania:
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AcquireLicense xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols">
<challenge>
<Challenge xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/messages">
<LA xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols"
Id="SignedData" xml:space="preserve">
<Version>1</Version>
<ContentHeader>
<WRMHEADER xmlns="http://schemas.microsoft.com/DRM/2007/03/PlayReadyHeader"
version="4.0.0.0">
<DATA>
<PROTECTINFO>
<KEYLEN>16</KEYLEN>
<ALGID>AESCTR</ALGID>
</PROTECTINFO>
<KID>JpbjtvscoUq8vU7xq6eEOg==</KID>
<LA_URL>http://test.playready.microsoft.com/service/rightsmanager.asmx</LA_URL>
<LUI_URL>http://test.playready.microsoft.com/service/getrights.html</LUI_URL>
</DATA>
</WRMHEADER>
</ContentHeader>
<CLIENTINFO>
<CLIENTVERSION>10.0.16384.10011</CLIENTVERSION>
</CLIENTINFO>
<RevocationLists>
<RevListInfo>
<ListID>ioydTlK2p0WXkWklprR5Hw==</ListID>
<Version>11</Version>
</RevListInfo>
<!-- Additional revocation lists... -->
</RevocationLists>
<LicenseNonce>YCBas7tAUmkjOcabdD4DuQ==</LicenseNonce>
<ClientTime>1488568844</ClientTime>
<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#"
Type="http://www.w3.org/2001/04/xmlenc#Element">
<!-- Encrypted client data... -->
</EncryptedData>
</LA>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<!-- Digital signature... -->
</Signature>
</Challenge>
</challenge>
</AcquireLicense>
</soap:Body>
</soap:Envelope>
Przykładowa odpowiedź: Przeglądarka Windows 10 Edge
W przypadku wyzwania wydanego przez przeglądarkę Microsoft Edge w systemie Windows 10:
Client Info:
Client Version: 10.0.16384.10011
Client Time: 10/01/2017 2:00:00 PM
Supported Features:
Receiver
AntiRollbackClock
RevocationLists
PlayReady3Features
Device Certificate Info (Cert 0):
Platform: WindowsOnX86
Type: Device
SecurityLevel: 2000
RobustnessVersion: 100925543
DigestValue: 04+2aK5sjv+m5/EUY9BIMFqe0ResBkL9wfuFepWDU9E=
IssuerKey: h/k8EU71zsgAqa0niR1TnpKDC6dyOEgUGjybc3+s/EnUJWpkMtOwygoyCPp1nuRCFDvfoaaI78kb2fqGBI0tWg==
Binding Key Type: 3
Certificate Chain:
↳ Cert 1:
ManufacturerName: Microsoft
ModelName: Windows
ModelNumber: 6.4.0.103
DigestValue: LLp1fynIs9tgDxDDU+8jFveBoQp+0x8fXnqyV9tk1Zc=
Platform: WindowsOnX86
↳ Cert 2:
ManufacturerName: Microsoft
ModelName: PlayReady SL2000 Device Port- Windows Lib Codebase Version CA
ModelNumber: 1.0.0.4
DigestValue: Y3C0kjOxz3h/njYBKeApsvfPscwLcV1qAiTfAXXSLw4=
↳ Cert 3:
ManufacturerName: Microsoft
ModelName: PlayReady SL2000 Device Port - Windows Platform CA for x86/amd64
ModelNumber: 1.0.0.3
DigestValue: L62pDo9+gkd6LoLDbQwgxwtYldcuhSEog7GcJwtJ3CE=
↳ Cert 4:
ManufacturerName: Microsoft
ModelName: PlayReady SL2000 Device Port + Link CA
ModelNumber: 1.0.0.1
DigestValue: 7Q8z1rSr8I3AGkcf0BNoDgwS46nO0wD5m0WvYfFoTWQ=
Przykładowa odpowiedź: Klient PlayReady 3.2 SL3000
W przypadku wyzwania wydanego przez klienta SL3000 opartego na technologii PlayReady 3.2:
Client Info:
Client Version: 3.2.0.4242
Client Time: 10/01/2017 2:00:00 PM
Supported Features:
SecureClock
RevocationLists
Receiver
Transmitter
PlayReady3Features
Device Certificate Info (Cert 0):
Platform: OEM
Type: Device
SecurityLevel: 3000
RobustnessVersion: 0
ManufacturerName: Contoso
ModelName: Cool Device Name
ModelNumber: Cool Device Name
DigestValue: IOSxDmGiRlX+dUf62sohHj/IB0qRKSkV7wz7sbZ3HSo=
IssuerKey: UlT6XXcgAMzaVAJN9JLJVomCFwppjoqgMMcT748yX27D053iiEP69pjEBnTxWiSEVXj76/e2wDImTgQDtbLTVg==
Binding Key Type: 3
Certificate Chain:
↳ Cert 1:
ManufacturerName: Contoso
ModelName: Cool Device Name
ModelNumber: ABC-XYZ-123
DigestValue: rmnxSlpuh9WTlXa6ACLcSJDnPVtoS5/2P1wa/kEgs1M=
↳ Cert 2:
ManufacturerName: Contoso
DigestValue: 5H3YVzR9EhHVnsseOJmO/ZCrX10Z8bOx9PDhKOhrxe4=
↳ Cert 3:
ManufacturerName: Microsoft
ModelName: PlayReady SL3000 Device Port + Link CA
ModelNumber: 1.0.0.1
DigestValue: bk7YOJRioSgnzjpZgLasowaL96LFIBHDx6B0z+JoDPE=
Elementy informacji o kliencie
Podstawowe informacje o kliencie
| (No changes needed) | Opis | Przykładowe wartości |
|---|---|---|
| Wersja klienta | Wersja klienta PlayReady |
10.0.16384.10011, 3.2.0.4242 |
| Czas klienta | Czas systemu klienta | 10/01/2017 2:00:00 PM |
| Platforma | Identyfikator platformy klienta |
WindowsOnX86, OEM |
Obsługiwane funkcje
| Funkcja | Opis |
|---|---|
| odbiornik | Klient może odbierać i odszyfrowywać zawartość |
| Nadajnik | Klient może przesyłać zawartość do innych urządzeń |
| AntiRollbackClock | Klient obsługuje funkcję zegara wycofywania |
| Listy odwołania | Klient obsługuje przetwarzanie listy odwołania |
| PlayReady3Features | Klient obsługuje funkcje PlayReady 3.0+ |
| SecureClock | Klient obsługuje funkcję bezpiecznego zegara |
Informacje o poziomie zabezpieczeń
| Poziom zabezpieczeń | Opis | Przypadki użycia |
|---|---|---|
| SL150 | Ochrona oparta na oprogramowaniu | Podstawowa ochrona zawartości |
| SL2000 | Ochrona sprzętowa | Zawartość w warstwie Standardowa Premium |
| SL3000 | Sprzętowy moduł zabezpieczeń | Zawartość w warstwie Ultra-Premium |
Informacje o łańcuchu certyfikatów
Każdy certyfikat w łańcuchu zapewnia:
- ManufacturerName — producent urządzenia
- ModelName — identyfikator modelu urządzenia
- ModelNumber — określona wersja modelu
- DigestValue — odcisk palca certyfikatu
- Platforma — typ platformy sprzętowej
Scenariusze testowania
Wykrywanie możliwości klienta
async function detectClientCapabilities() {
const clientInfoUrl = 'http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(msg:clientinfo)';
try {
const response = await sendLicenseRequest(clientInfoUrl);
const clientInfo = parseClientInfoResponse(response);
return {
version: clientInfo.clientVersion,
securityLevel: clientInfo.deviceCert.securityLevel,
features: clientInfo.supportedFeatures,
platform: clientInfo.deviceCert.platform,
manufacturer: clientInfo.certificateChain[0].manufacturerName
};
} catch (error) {
console.error('Failed to detect client capabilities:', error);
return null;
}
}
Walidacja poziomu zabezpieczeń
async function validateSecurityLevel(requiredLevel) {
const clientInfo = await detectClientCapabilities();
if (!clientInfo) {
return { valid: false, reason: 'Could not detect client capabilities' };
}
const clientLevel = parseInt(clientInfo.securityLevel);
const required = parseInt(requiredLevel);
return {
valid: clientLevel >= required,
clientLevel: clientLevel,
requiredLevel: required,
reason: clientLevel >= required ? 'Security level sufficient' : 'Security level insufficient'
};
}
Testowanie zgodności funkcji
async function testFeatureCompatibility(requiredFeatures) {
const clientInfo = await detectClientCapabilities();
if (!clientInfo) {
return { compatible: false, reason: 'Could not detect client features' };
}
const missingFeatures = requiredFeatures.filter(
feature => !clientInfo.features.includes(feature)
);
return {
compatible: missingFeatures.length === 0,
supportedFeatures: clientInfo.features,
missingFeatures: missingFeatures,
requiredFeatures: requiredFeatures
};
}
Implementacja serwera licencji
Używanie informacji o kliencie do podejmowania decyzji dotyczących licencji
public class ClientInfoBasedLicenseHandler
{
public LicenseResponse GenerateLicense(LicenseRequest request)
{
var clientInfo = ExtractClientInfo(request.Challenge);
// Determine security level
var securityLevel = GetSecurityLevel(clientInfo);
// Check feature support
var supportedFeatures = GetSupportedFeatures(clientInfo);
// Build license based on client capabilities
var license = new LicenseBuilder()
.WithSecurityLevel(securityLevel)
.WithFeatures(supportedFeatures)
.WithOutputProtections(GetOutputProtections(securityLevel))
.Build();
return new LicenseResponse(license);
}
private SecurityLevel GetSecurityLevel(ClientInfo clientInfo)
{
switch (clientInfo.DeviceCertificate.SecurityLevel)
{
case 3000:
return SecurityLevel.SL3000;
case 2000:
return SecurityLevel.SL2000;
default:
return SecurityLevel.SL150;
}
}
private List<string> GetSupportedFeatures(ClientInfo clientInfo)
{
var features = new List<string>();
if (clientInfo.SupportedFeatures.Contains("PlayReady3Features"))
{
features.Add("AdvancedOutputProtection");
features.Add("SecureStop");
}
if (clientInfo.SupportedFeatures.Contains("SecureClock"))
{
features.Add("AntiRollback");
}
return features;
}
}
logika licencji Platform-Specific
public OutputProtectionLevels DetermineOutputProtections(ClientInfo clientInfo)
{
var protections = new OutputProtectionLevels();
// Adjust based on platform
switch (clientInfo.Platform.ToLower())
{
case "windowsonx86":
case "windowsonx64":
protections.CompressedDigitalVideo = 270;
protections.UncompressedDigitalVideo = 270;
break;
case "oem":
// Custom OEM device - check manufacturer
if (IsHighSecurityOEM(clientInfo.ManufacturerName))
{
protections.CompressedDigitalVideo = 270;
protections.UncompressedDigitalVideo = 270;
}
else
{
protections.CompressedDigitalVideo = 200;
protections.UncompressedDigitalVideo = 200;
}
break;
default:
// Conservative defaults for unknown platforms
protections.CompressedDigitalVideo = 150;
protections.UncompressedDigitalVideo = 150;
break;
}
return protections;
}
Analiza informacji o kliencie
Analiza platformy systemu Windows
Właściwości klienta przeglądarki Windows 10 Edge:
- Podest:
WindowsOnX86 - Poziom zabezpieczeń:
2000(SL2000) - Wersja niezawodności: wartość specyficzna dla sprzętu
- Łańcuch certyfikatów: certyfikaty wystawione przez firmę Microsoft
- Funkcje: standardowy zestaw funkcji PlayReady 3.0
Analiza urządzenia OEM
Niestandardowe cechy klienta OEM:
- Podest:
OEM - Poziom zabezpieczeń:
3000(SL3000) - Producent: niestandardowa nazwa producenta OEM
- Łańcuch certyfikatów: OEM + certyfikaty firmy Microsoft
- Funkcje: zaawansowane funkcje PlayReady 3.0+
Najlepsze praktyki
Użycie informacji o kliencie
- Weryfikacja poziomu zabezpieczeń — sprawdzanie, czy klient spełnia wymagania dotyczące zabezpieczeń zawartości
- Wykrywanie funkcji — dostosowywanie licencji na podstawie obsługiwanych funkcji
- Optymalizacja platformy — optymalizowanie ustawień dla określonych platform
- Weryfikacja certyfikatu — weryfikowanie integralności łańcucha certyfikatów
- Dopasowywanie możliwości — dopasowywanie wymagań dotyczących zawartości do możliwości klienta
Strategia generowania licencji
- Domyślne konserwatystów — używaj bezpiecznych wartości domyślnych dla nieznanych klientów
- Ulepszenia progresywne — dodawanie funkcji opartych na możliwościach klienta
- Najpierw zabezpieczenia — określanie priorytetów zabezpieczeń za pośrednictwem funkcji
- Świadomość platformy — rozważ ograniczenia specyficzne dla platformy
- Zgodność w przyszłości — projektowanie pod kątem zgodności z usługą Forward
Powiązana dokumentacja
- Usługa PlayReady Test Server — główne funkcje serwera testowego
- Składnia ciągu zapytania — dokumentacja składni parametrów
- Testowanie ochrony danych wyjściowych — testowanie ochrony danych wyjściowych
- Serwery testowe PlayReady — kompletna dokumentacja serwera
Zasoby pomocy technicznej
Zapytania biznesowe
- Adres e-mail: playready@microsoft.com
Zapytania operacji
- Witryna internetowa: http://wmlalicensing.com/
- Adres e-mail: ipla@microsoft.com
Pomocy technicznej
- Portal pomocy technicznej: Pomoc techniczna PlayReady
Informacje o szkoleniu
- Adres e-mail: plyrdyev@microsoft.com
© Microsoft Corporation. Wszelkie prawa zastrzeżone. Znakami towarowymi | Prywatność