Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Überblick
Der PlayReady Test Server enthält ein spezielles clientinfo Feature, das die informationen widerspiegelt, die dem Lizenzserver aus der vom Client generierten Lizenzanforderungsanforderung zur Verfügung stehen. Mit diesem Feature können Entwickler auf einfache Weise untersuchen, welche Clientinformationen an Lizenzserver übertragen werden, und basierend auf clientspezifischen Funktionen geeignete Logik für die Lizenzgenerierung erstellen.
Clientinfo-Feature
Verwenden Sie den clientinfo Parameter, um Clientinformationen zu prüfen, die in Lizenzanforderungen gesendet werden:
Url des Testservers:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(msg:clientinfo)
SOAP-Aktion:
http://schemas.microsoft.com/DRM/2007/03/protocols/AcquireLicense
Beispielanforderungsstruktur
Das Clientinformationsfeature verarbeitet standardmäßige PlayReady-Lizenzerwerbsanforderungen und gibt detaillierte Informationen zum Client anstelle einer Lizenz zurück. Dies ist die Struktur einer typischen Anforderung:
<?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>
Beispielantwort: Windows 10 Edge-Browser
Für eine Von Microsoft Edge unter Windows 10 ausgegebene Herausforderung:
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=
Beispielantwort: PlayReady 3.2 SL3000-Client
Für eine Herausforderung, die von einem playReady 3.2-basierten SL3000-Client ausgegeben wird:
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=
Clientinformationselemente
Grundlegende Clientinformationen
| Feld | BESCHREIBUNG | Beispielwerte |
|---|---|---|
| Clientversion | PlayReady-Clientversion |
10.0.16384.10011, 3.2.0.4242 |
| Clientzeit | Clientsystemzeit | 10/01/2017 2:00:00 PM |
| Plattform | Clientplattform-ID |
WindowsOnX86, OEM |
Unterstützte Features
| Merkmal | BESCHREIBUNG |
|---|---|
| Empfänger- | Client kann Inhalte empfangen und entschlüsseln |
| Sender | Der Client kann Inhalte an andere Geräte übertragen. |
| AntiRollbackClock | Client unterstützt Antirollbackuhrfunktionen |
| RevocationLists | Client unterstützt die Verarbeitung von Sperrlisten |
| PlayReady3Features | Client unterstützt PlayReady 3.0+-Features |
| SecureClock | Client unterstützt sichere Uhrfunktionen |
Informationen zur Sicherheitsstufe
| Sicherheitsstufe | BESCHREIBUNG | Anwendungsfälle |
|---|---|---|
| SL150 | Softwarebasierter Schutz | Grundlegender Inhaltsschutz |
| SL2000 | Hardwarebasierter Schutz | Standard Premium-Inhalte |
| SL3000 | Hardwaresicherheitsmodul | Ultra-Premium-Inhalte |
Zertifikatketteninformationen
Jedes Zertifikat in der Kette bietet Folgendes:
- ManufacturerName - Gerätehersteller
- ModelName – Gerätemodellbezeichner
- ModelNumber – Bestimmte Modellversion
- DigestValue – Zertifikatfingerabdrücke
- Plattform – Hardwareplattformtyp
Testszenarien
Erkennung von Clientfunktionen
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;
}
}
Überprüfung auf Sicherheitsebene
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'
};
}
Featurekompatibilitätstests
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
};
}
Lizenzserverimplementierung
Verwenden von Clientinformationen für Lizenzentscheidungen
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;
}
}
Platform-Specific Lizenzlogik
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;
}
Clientinformationsanalyse
Windows-Plattformanalyse
Windows 10 Edge-Clientmerkmale:
- Bahnsteig:
WindowsOnX86 - Sicherheitsstufe:
2000(SL2000) - Robuste Version: Hardwarespezifischer Wert
- Zertifikatkette: von Microsoft ausgestellte Zertifikate
- Features: Standardmäßiger PlayReady 3.0-Featuresatz
OEM-Geräteanalyse
Benutzerdefinierte OEM-Clientmerkmale:
- Bahnsteig:
OEM - Sicherheitsstufe:
3000(SL3000) - Hersteller: Benutzerdefinierter OEM-Name
- Zertifikatkette: OEM + Microsoft-Zertifikate
- Features: Erweiterte PlayReady 3.0+-Features
Bewährte Methoden
Clientinformationsnutzung
- Überprüfung auf Sicherheitsstufe – Überprüfen, ob der Client die Anforderungen an die Inhaltssicherheit erfüllt
- Featureerkennung – Anpassen der Lizenz basierend auf unterstützten Features
- Plattformoptimierung – Optimieren von Einstellungen für bestimmte Plattformen
- Zertifikatüberprüfung – Überprüfen der Integrität der Zertifikatkette
- Funktionsabgleich – Abgleichen von Inhaltsanforderungen an Clientfunktionen
Strategie für die Lizenzgenerierung
- Konservative Standardwerte – Sichere Standardwerte für unbekannte Clients verwenden
- Progressive Erweiterung – Hinzufügen von Features basierend auf Clientfunktionen
- Sicherheit zuerst – Priorisieren der Sicherheit gegenüber Funktionen
- Plattformbewusstsein – Berücksichtigen plattformspezifischer Einschränkungen
- Zukünftige Kompatibilität – Design zur Vorwärtskompatibilität
Verwandte Dokumentation
- PlayReady Test Server Service – Hauptfunktionen des Testservers
- Abfragezeichenfolgensyntax – Parametersyntaxreferenz
- Testen von Ausgabeschutz – Ausgabeschutztests
- PlayReady-Testserver – Vollständige Serverdokumentation
Supportressourcen
Geschäftsabfragen
- E-Mail: playready@microsoft.com
Operations-Abfragen
- Website:http://wmlalicensing.com/
- E-Mail: ipla@microsoft.com
Technischer Support
- Supportportal: Technischer Support für PlayReady
Schulungsinformationen
- E-Mail: plyrdyev@microsoft.com
© Microsoft Corporation. Alle Rechte vorbehalten. Handelsmarken | Privatsphäre