Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Información general
El servidor de pruebas de PlayReady incluye una característica especial clientinfo que refleja la información disponible para el servidor de licencias del desafío de solicitud de licencia generado por el cliente. Esta característica permite a los desarrolladores examinar fácilmente qué información de cliente se transmite a los servidores de licencias y crear la lógica de generación de licencias adecuada en función de las funcionalidades del cliente.
Característica de información de cliente
Use el parámetro para inspeccionar la clientinfo información de cliente enviada en las solicitudes de licencia:
Dirección URL del servidor de prueba:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(msg:clientinfo)
Acción SOAP:
http://schemas.microsoft.com/DRM/2007/03/protocols/AcquireLicense
Estructura de solicitud de ejemplo
La característica de información de cliente procesa solicitudes estándar de adquisición de licencias de PlayReady y devuelve información detallada sobre el cliente en lugar de una licencia. Esta es la estructura de una solicitud típica:
<?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>
Respuesta de ejemplo: Explorador Windows 10 Edge
Para un desafío emitido por Microsoft Edge en 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=
Respuesta de ejemplo: Cliente de PlayReady 3.2 SL3000
Para un desafío emitido por un cliente SL3000 basado en 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=
Elementos de información de cliente
Información básica del cliente
| Campo | Descripción | Valores de ejemplo |
|---|---|---|
| Versión del cliente | Versión del cliente de PlayReady |
10.0.16384.10011, 3.2.0.4242 |
| Hora del cliente | Hora del sistema cliente | 10/01/2017 2:00:00 PM |
| Plataforma | Identificador de la plataforma cliente |
WindowsOnX86, OEM |
Características admitidas
| Característica | Descripción |
|---|---|
| receptor de | El cliente puede recibir y descifrar contenido |
| Transmisor | El cliente puede transmitir contenido a otros dispositivos |
| AntiRollbackClock | El cliente admite la funcionalidad anti-reversión del reloj |
| Lista de revocación | El cliente admite el procesamiento de listas de revocación |
| PlayReady3Features | El cliente admite características de PlayReady 3.0+ |
| SecureClock | El cliente admite la funcionalidad de reloj segura |
Información de nivel de seguridad
| Nivel de seguridad | Descripción | Casos de uso |
|---|---|---|
| SL150 | Protección basada en software | Protección básica del contenido |
| SL2000 | Protección basada en hardware | Contenido Premium estándar |
| SL3000 | Módulo de seguridad de hardware | Contenido Ultra-Premium |
Información de la cadena de certificados
Cada certificado de la cadena proporciona:
- ManufacturerName : fabricante del dispositivo
- ModelName : identificador del modelo de dispositivo
- ModelNumber : versión específica del modelo
- DigestValue : huella digital del certificado
- Plataforma : tipo de plataforma de hardware
Escenarios de prueba
Detección de funcionalidades de cliente
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;
}
}
Validación de nivel de seguridad
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'
};
}
Pruebas de compatibilidad de características
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
};
}
Implementación del servidor de licencias
Uso de la información de cliente para las decisiones de licencia
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;
}
}
Lógica de licencia de 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;
}
Análisis de información de cliente
Análisis de la plataforma Windows
Características del cliente de Windows 10 Edge:
- Plataforma:
WindowsOnX86 - Nivel de seguridad:
2000(SL2000) - Versión de solidez: valor específico del hardware
- Cadena de certificados: certificados emitidos por Microsoft
- Características: Conjunto de características de PlayReady 3.0 estándar
Análisis de dispositivos OEM
Características de cliente OEM personalizadas:
- Plataforma:
OEM - Nivel de seguridad:
3000(SL3000) - Fabricante: nombre de OEM personalizado
- Cadena de certificados: OEM + certificados de Microsoft
- Características: Características avanzadas de PlayReady 3.0+
Procedimientos recomendados
Uso de información de cliente
- Validación de nivel de seguridad: compruebe que el cliente cumple los requisitos de seguridad de contenido
- Detección de características: ajuste la licencia en función de las características admitidas
- Optimización de la plataforma: optimización de la configuración para plataformas específicas
- Validación de certificados: comprobación de la integridad de la cadena de certificados
- Coincidencia de funcionalidades : coincidencia de los requisitos de contenido con las funcionalidades del cliente
Estrategia de generación de licencias
- Valores predeterminados conservadores : uso de valores predeterminados seguros para clientes desconocidos
- Mejora progresiva : adición de características basadas en las funcionalidades de cliente
- Seguridad en primer lugar : priorizar la seguridad sobre la funcionalidad
- Reconocimiento de la plataforma : considere las limitaciones específicas de la plataforma
- Compatibilidad futura : diseño para la compatibilidad con reenvíos
Documentación relacionada
- Servicio de servidor de pruebas de PlayReady : funcionalidad principal del servidor de pruebas
- Sintaxis de cadena de consulta : referencia de sintaxis de parámetros
- Pruebas de protecciones de salida : pruebas de protección de salida
- Servidores de prueba de PlayReady : documentación completa del servidor
Recursos de soporte técnico
Consultas empresariales
- Correo electrónico: playready@microsoft.com
Consultas de operaciones
- Sitio web: http://wmlalicensing.com/
- Correo electrónico: ipla@microsoft.com
Soporte técnico
- Portal de soporte técnico: Soporte técnico de PlayReady
Información de entrenamiento
- Correo electrónico: plyrdyev@microsoft.com
© Microsoft Corporation. Todos los derechos reservados. Marcas | Privacidad