Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Visão geral
O PlayReady Test Server inclui um recurso especial clientinfo que reflete as informações disponíveis para o servidor de licenças a partir do desafio de solicitação de licença gerado pelo cliente. Esse recurso permite que os desenvolvedores examinem facilmente quais informações do cliente são transmitidas aos servidores de licenças e criem uma lógica de geração de licença apropriada com base nos recursos do cliente.
Recurso de informações do cliente
Use o parâmetro para inspecionar as clientinfo informações do cliente enviadas em solicitações de licença:
URL do servidor de teste:
http://test.playready.microsoft.com/service/rightsmanager.asmx?cfg=(msg:clientinfo)
Ação SOAP:
http://schemas.microsoft.com/DRM/2007/03/protocols/AcquireLicense
Estrutura de solicitação de amostra
O recurso de informações do cliente processa solicitações padrão de aquisição de licença PlayReady e retorna informações detalhadas sobre o cliente em vez de uma licença. Aqui está a estrutura de uma solicitação 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>
Exemplo de resposta: Windows 10 Edge Browser
Para um desafio lançado pelo Microsoft Edge no 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=
Exemplo de resposta: Cliente PlayReady 3.2 SL3000
Para um desafio lançado por um cliente SL3000 baseado em 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 informação do cliente
Informação Básica do Cliente
| Campo | Descrição | Valores de exemplo |
|---|---|---|
| Versão do cliente | Versão do cliente PlayReady |
10.0.16384.10011, 3.2.0.4242 |
| Tempo do Cliente | Hora do sistema do cliente | 10/01/2017 2:00:00 PM |
| Plataforma | Identificador da plataforma do cliente |
WindowsOnX86, OEM |
Funcionalidades Suportadas
| Característica | Descrição |
|---|---|
| Recetor | O cliente pode receber e desencriptar conteúdo |
| Transmissor | Cliente pode transmitir conteúdo para outros dispositivos |
| AntiRollbackClock | O cliente suporta a funcionalidade de relógio anti-reversão |
| RevogaçõesListas | O cliente suporta o processamento da lista de revogação |
| PlayReady3Features | O cliente suporta recursos PlayReady 3.0+ |
| Relógio Seguro | O cliente suporta a funcionalidade de relógio seguro |
Informações sobre o nível de segurança
| Nível de Segurança | Descrição | Casos de uso |
|---|---|---|
| SL150 | Proteção baseada em software | Proteção básica de conteúdo |
| SL2000 | Proteção baseada em hardware | Conteúdo premium padrão |
| SL3000 | Módulo de segurança de hardware | Conteúdo ultra-premium |
Informações da cadeia de certificados
Cada certificado na cadeia fornece:
- ManufacturerName - Fabricante do dispositivo
- ModelName - Identificador do modelo do dispositivo
- ModelNumber - Versão específica do modelo
- DigestValue - Impressão digital do certificado
- Plataforma - Tipo de plataforma de hardware
Cenários de teste
Deteção de capacidade do 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;
}
}
Validação do Nível de Segurança
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'
};
}
Testes de compatibilidade de recursos
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
};
}
Implementação do Servidor de Licenças
Usando informações do cliente para decisões de licença
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 Lógica de Licença
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álise de Informação do Cliente
Análise da plataforma Windows
Características do cliente de borda do Windows 10:
- Plataforma:
WindowsOnX86 - Nível de segurança:
2000(SL2000) - Versão de robustez: valor específico de hardware
- Cadeia de certificados: certificados emitidos pela Microsoft
- Características: Conjunto de recursos padrão PlayReady 3.0
Análise de dispositivos OEM
Características personalizadas do cliente OEM:
- Plataforma:
OEM - Nível de segurança:
3000(SL3000) - Fabricante: Nome do OEM personalizado
- Cadeia de certificados: OEM + certificados Microsoft
- Características: Recursos avançados do PlayReady 3.0+
Melhores práticas
Uso das informações do cliente
- Validação de nível de segurança - Verifique se o cliente atende aos requisitos de segurança de conteúdo
- Deteção de recursos - Ajuste a licença com base nos recursos suportados
- Otimização de plataforma - Otimize as configurações para plataformas específicas
- Validação de certificado - Verificar a integridade da cadeia de certificados
- Correspondência de recursos - Adequar os requisitos de conteúdo aos recursos do cliente
Estratégia de Geração de Licenças
- Padrões conservadores - Use padrões seguros para clientes desconhecidos
- Aprimoramento progressivo - Adicione recursos com base nos recursos do cliente
- Segurança em primeiro lugar - Priorize a segurança sobre a funcionalidade
- Reconhecimento da plataforma - Considere as limitações específicas da plataforma
- Compatibilidade futura - Design para compatibilidade futura
Documentação relacionada
- Serviço de Servidor de Teste PlayReady - Funcionalidade principal do servidor de teste
- Sintaxe da Cadeia de Caracteres de Consulta - Referência de sintaxe de parâmetro
- Teste de proteções de saída - Teste de proteção de saída
- PlayReady Test Servers - Documentação completa do servidor
Recursos de suporte
Consultas de negócios
- E-mail: playready@microsoft.com
Consultas de operações
- Sítio Internet: http://wmlalicensing.com/
- E-mail: ipla@microsoft.com
Suporte Técnico
- Portal de suporte: Suporte técnico PlayReady
Informação de Formação
- E-mail: plyrdyev@microsoft.com
© Microsoft Corporation. Todos os direitos reservados. Marcas comerciais | Privacidade