Condividi tramite


Server di licenze PlayReady

Il processo di recupero di una licenza per riprodurre il contenuto protetto PlayReady viene gestito da un server licenze PlayReady. Il server PlayReady contiene il gestore che autorizza la riproduzione del dispositivo protetto da PlayReady. Lo fa fornendo la chiave di crittografia che sblocca il contenuto crittografato che il client richiede di riprodurre. Inoltre, la risposta del server licenze PlayReady contiene i diritti e le restrizioni relative ai diritti per tale contenuto.

La figura seguente illustra i passaggi che descrivono come un client ottiene una licenza da un servizio licenze PlayReady.

Architettura del servizio video

  1. Il client ottiene i contenuti multimediali da riprodurre.
  2. Il client avvia una richiesta di licenza dal servizio licenze PlayReady. Il client può richiedere proattivamente la licenza prima di riprodurre il contenuto oppure in modo reattivo dopo aver scoperto che è necessaria una licenza all'inizio della riproduzione.
  3. Il server licenze PlayReady riceve la richiesta dal client ed elabora la richiesta di licenza.
  4. Il server licenze PlayReady invia la risposta alla richiesta al client. La risposta della licenza conterrà la chiave per sbloccare i supporti crittografati, insieme a un set di diritti e restrizioni relative ai diritti che specificano esattamente ciò che può essere riprodotto.
  5. Il client riceve la risposta della licenza, analizza i diritti e le restrizioni dei diritti e inizia la riproduzione.

Sviluppo e distribuzione di un server licenze PlayReady

Non è necessario sviluppare e distribuire il proprio servizio licenze PlayReady. È possibile ottenere questi servizi da terze parti, ad esempio un partner PlayReady. Tuttavia, se si decide di sviluppare il proprio servizio licenze PlayReady, Microsoft fornisce gratuitamente PlayReady Server Software Development Kit (SDK) a coloro che vogliono programmare il proprio Server licenze PlayReady. Si noti che un server licenze PlayReady viene eseguito solo in Windows Server.

Un server licenze PlayReady può essere sviluppato e distribuito in diversi modi:

  • Sviluppare il server delle licenze autonomamente o tramite terze parti.
  • Eseguire il server licenze autonomamente o tramite un fornitore di servizi di applicazione (ASP).
  • Eseguire la distribuzione in un server fisico o in un server virtuale.
  • Distribuire in locale, in un cloud privato o in un cloud pubblico.

PlayReady Server SDK offre le funzionalità seguenti per i server licenze:

  • La tecnologia si integra in qualsiasi infrastruttura di rete (proxy e così via).
  • La tecnologia si integra con qualsiasi servizio Web o logica.
  • Distribuito come librerie di Windows Server, oltre al codice C# nell'SDK. Include gestori di esempio nel codice sorgente.

Esempi

Di seguito è riportato un esempio di richiesta di licenza:

<?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>jADgM0TEcEeYmaMh4HndNg==</KID>
								</DATA>
							</WRMHEADER>
						</ContentHeader>
						<CLIENTINFO>
							<CLIENTVERSION>3.1.0.1017</CLIENTVERSION>
						</CLIENTINFO>
						<RevocationLists>
							<RevListInfo><ListID>ioydTlK2p0WXkWklprR5Hw==</ListID><Version>0</Version></RevListInfo>
							<RevListInfo><ListID>gC4IKKPHsUCCVhnlttibJw==</ListID><Version>0</Version></RevListInfo>
							<RevListInfo><ListID>Ef/RUojT3U6Ct2jqTCChbA==</ListID><Version>0</Version></RevListInfo>
							<RevListInfo><ListID>BOZ1zT1UnEqfCf5tJOi/kA==</ListID><Version>0</Version></RevListInfo>
						</RevocationLists>
						<CustomData>User=Roland</CustomData>
						<LicenseNonce>7GYVLC7wvGVR0nqGYXs4DQ==</LicenseNonce>
						<ClientTime>1446224160</ClientTime>
						<EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#" Type="http://www.w3.org/2001/04/xmlenc#Element">
							<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"></EncryptionMethod>
							<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
								<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
									<EncryptionMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#ecc256"></EncryptionMethod>
									<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
										<KeyName>WMRMServer</KeyName>
									</KeyInfo>
									<CipherData>
										<CipherValue>Yt2ys5Fp83ayPvva8kT2THtEGze5se5YWaP======</CipherValue>
									</CipherData>
								</EncryptedKey>
							</KeyInfo>
							<CipherData>
							<CipherValue>uLdvYtc5oRk/MD0Dy72ZKH8PuHRI2RBzygKJHGu/M4boyiPOpMQnNlFB30qADHzND7fDwSfZGbOgP/g9OaT1LYDWHU/vq7f0CtiWddtwDSleb651HyQYOmWCcBSY9SVrjXXKITMsQL8PBXQh3O90GZSzS3UKo8OcyhO/yCmTsVWs0EYE98ikWjaPJfoQdvjSfklLjeveqGHhY7YZiSDMTksguLIMycsSTbGelL0P6IIDL7dj===========</CipherValue>
							</CipherData>
						</EncryptedData>
					</LA>
					<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
						<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
							<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
							<SignatureMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#ecdsa-sha256"></SignatureMethod>
							<Reference URI="#SignedData">
								<DigestMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#sha256"></DigestMethod>
								<DigestValue>NnkxTbC9yLGwYWSRfOz3VqKRYd62AGqTnwpSHsCklhI=</DigestValue>
							</Reference>
						</SignedInfo>
						<SignatureValue>Av2+yCEBdJD9+euMzGzuPb5rYgPlXNszEEr+cF7LwbE/Kln1e8JyhAEdIy14z4U43/oQMvMg40QaOAqv3ElM2g==</SignatureValue>
						<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
							<KeyValue>
								<ECCKeyValue>
									<PublicKey>nrZWFO4ExmBomY+Xu5sATbSRi+tjRqMC+bVaKwn5ZAkdoER3nn8eE+yxXA0CkuhhmAmAqYDX7RY2q+MbAvoZuA==</PublicKey>
								</ECCKeyValue>
							</KeyValue>
						</KeyInfo>
					</Signature>
				</Challenge>
			</challenge>
		</AcquireLicense>
	</soap:Body>
</soap:Envelope>

 

Di seguito è riportato un esempio di risposta di licenza:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
	<soap:Body>
		<AcquireLicenseResponse xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols">
			<AcquireLicenseResult>
				<Response xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols/messages">
					<LicenseResponse xmlns="http://schemas.microsoft.com/DRM/2007/03/protocols" Id="SignedData">
						<Version>1</Version>
						<Licenses>
							<License>WE1SAAAAAANryW57jI0QQJItXt7rxagIAAMAAQAAAWIAAgAEAAAACAADAAIAAABEAAEAEgAAABAAAAAAVjOhZgAAABMAAAAMVjOhKgABADIAAAAMAAAAHgABADQAAAAKB9AAAAAzAAAACgABAAMACQAAAPIAAQAKAAAAnowA4DNExHBHmJmjIeB53TYAAQADAIAKFe+fsiOCUo/ndSfV1p0YK1qzUAgypRhiMUObPbmJ+P3GMFziaM+O0jHVttk0TAxxGsreh3PumUKJJ1CYMCYGJSgFm7ceuCsOxRBKCJcH+jGVlocmKMw0zrG41DeTrgDLw/rDDEDtmQvIwezIcwUwqWFxq7o5+kYWA4TdwTZNRAAAACoAAABMAAEAQOSjiOqgw3D8yP0vsKUOkh9SDIb3OghTm5812xCi7Y1q+Yr2U6KPQAUDgandzhhSKvebDjmWCIhxcjv+cIE5WIsAAQALAAAAHAABABBDCGMQnJ3JfqzT5K+5nS5k</License>
						</Licenses>
						<RevInfo>
							<Revocation>
								<ListID>ioydTlK2p0WXkWklprR5Hw==</ListID>
								<ListData>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ListData>
							</Revocation>
							<Revocation>
								<ListID>gC4IKKPHsUCCVhnlttibJw==</ListID>
								<ListData>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ListData>
							</Revocation>
							<Revocation>
								<ListID>Ef/RUojT3U6Ct2jqTCChbA==</ListID>
								<ListData>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ListData>
							</Revocation>
							<Revocation>
								<ListID>BOZ1zT1UnEqfCf5tJOi/kA==</ListID>
								<ListData>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ListData>
							</Revocation>
						</RevInfo>
						<Acknowledgement>
							<TransactionID>265e4a30-72f9-4f46-b41e-102a21ac4bc9</TransactionID>
						</Acknowledgement>
						<LicenseNonce>7GYVLC7wvGVR0nqGYXs4DQ==</LicenseNonce>
						<ResponseID>8qXNFxP4rrn+Rkx3rFTDYQZnfLMkJOm04N2JjWIXZ90=</ResponseID>
						<SigningCertificateChain>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</SigningCertificateChain>
					</LicenseResponse>
					<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
						<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
							<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod>
							<SignatureMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#ecdsa-sha256"></SignatureMethod>
							<Reference URI="#SignedData">
								<DigestMethod Algorithm="http://schemas.microsoft.com/DRM/2007/03/protocols#sha256"></DigestMethod>
								<DigestValue>H9QaFwGEr4BnkJX0nRoztartIba7dcvEU5G1vYu9jTs=</DigestValue>
							</Reference>
						</SignedInfo>
						<SignatureValue>IVN3sGMpJ+O/3c1eLXRpEi1s7EuRGDLG/hLLdbLvHq7g/vzKEzw0NH0eB5MUiYuD9HaZlYZVbNGxaX74qed+Hw==</SignatureValue>
					</Signature>
				</Response>
			</AcquireLicenseResult>
		</AcquireLicenseResponse>
	</soap:Body>
</soap:Envelope>

Vedere anche

PlayReady Test Server